diff --git a/.gitignore b/.gitignore index a40f1d2ba..7b4c9c6af 100644 --- a/.gitignore +++ b/.gitignore @@ -140,6 +140,14 @@ cscope.out # Qt lib/framework/wzapp_moc.cpp +tools/qwzm/config +tools/qwzm/moc_qwzm.cpp +tools/qwzm/moc_wzmglwidget.cpp +tools/qwzm/qwzm +tools/qwzm/ui_animationview.h +tools/qwzm/ui_connectorview.h +tools/qwzm/ui_qwzm.h + # Patches *.patch *.diff diff --git a/AUTHORS b/AUTHORS index 93bb5f0da..522d29b84 100644 --- a/AUTHORS +++ b/AUTHORS @@ -11,7 +11,7 @@ Elio Gubser : 2D Graphics Steven Koenig : Documentation, translation Gerard Krol : Programming, Textures Guangcong Luo : Programming, Balancing, and Documentation -Per I. Mathisen : Programming +Per I. Mathisen : Programming Kim Metcalfe : Documentation, Maps and Support Christian Ohm : Programming Tim P. : Webmaster diff --git a/ChangeLog b/ChangeLog index d3bbc2ce8..c010b0905 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,14 @@ 0000-00-00: SVN * General: - * Fix: Tells user if mod entered on the command line / shorcut is enabled, or is invalid. Output is to stdout or stderr. (r7586) - * Fix: Launching the game from installer now works (7568 ticket:364) - * Fix: Angel missile no longer obsoletes long-range artillery, Ripple Rockets no longer autoupgrades to Archie, and Mortar Fast Loader requires Mortar Rapid Loader Mk3 (r7559, ticket:533, 292, 398) + * Fix: Tells user if mod entered on the command line / shorcut is enabled, or is invalid. Output is to stdout or stderr (r7586) + * Fix: Launching the game from installer now works (r7568, ticket:364) + * Fix: Angel missile no longer obsoletes long-range artillery, Ripple Rockets no longer autoupgrades to Archie, and Mortar Fast Loader requires Mortar Rapid Loader Mk3 (r7559, ticket:533, ticket:292, ticket:398) * New: Add a new translation: zh_TW.po by chtsau (r7561, ticket:239) * Change: Allow up to 36 savegame 'slots' (r7535) * Change: add 'mod/music' directory to be use for custom music. (r7557) * Fix: set the volume of the FMV based on the user's preferences (r7489, ticket:526) - * Fix: Check if the unit has weapons, before trying to see what weapons they have. (r7488, ticket:523) - * Change: remove 'autoload' handling. (r7474) + * Fix: Check if the unit has weapons, before trying to see what weapons they have (r7488, ticket:523) + * Change: remove 'autoload' handling (r7474) * Fix: Fix windows crash dump output (r7473) * Fix: Fix handling of limbo & expand missions (r7454) * Change: Let players save games with Num-Enter as well as Return - should make it easier on international keyboards (r7412) @@ -18,16 +18,16 @@ * New: Slovenian translation sl.po file by ThomasCarstein (r7422, ticket:392) * Fix: pt_BR.po update by Tucalipe (r7421m ticket:350) * Fix: Clear out old effects (prevents burning lasting between missions) (r7416) - * Fix: Don't allow the transporter to be controlled in SP games. (r7414) + * Fix: Don't allow the transporter to be controlled in SP games (r7414) * Fix: Remember player number and tech level for map selection screen (r7400) * Gameplay: - * Fix: Make AI ignore hostile structures for path-finding when armed. (r7579) + * Fix: Make AI ignore hostile structures for path-finding when armed (r7579) * Graphics: - * Fix: Fix issue with radar / mini-map. (r7458, ticket:333) - * Fix: Fix issue with radar / mini-map drawing objects outside its scope. (r7441) - * Change: Better map previews (patch by Florian Schanda, color scheme by Zarel). (r7434) + * Fix: Fix issue with radar / mini-map (r7458, ticket:333) + * Fix: Fix issue with radar / mini-map drawing objects outside its scope (r7441) + * Change: Better map previews (patch by Florian Schanda, color scheme by Zarel) (r7434) * Network: - * Change: Increase timeout delay to 2500ms for dial-up modem users. (r7556, ticket:543) + * Change: Increase timeout delay to 2500ms for dial-up modem users (r7556, ticket:543) 2009-05-10: Version 2.2_rc1 * General: diff --git a/build_tools/changelog2bbcode.sh b/build_tools/changelog2bbcode.sh new file mode 100755 index 000000000..67d6b6104 --- /dev/null +++ b/build_tools/changelog2bbcode.sh @@ -0,0 +1,6 @@ +#!/bin/sh +sed -e 's/r\([0-9]\+\)/[rev]\1[\/rev]/g' \ + -e 's/ticket:\([0-9]\+\)/[ticket]\1[\/ticket]/g'\ + -e 's/\ \ \*/\ */g' \ + -e 's/^\ \*\ \(.*\):/\n[\/list][b]\1[\/b][list]/g' \ + -e 's/^\ \ \*/\ [*]/' diff --git a/configure.ac b/configure.ac index efb66f4da..bfe0cc126 100644 --- a/configure.ac +++ b/configure.ac @@ -37,6 +37,11 @@ AX_PROG_PERL_VERSION([5.10], [], [ PERL="" ]) AC_SUBST([PERL]) AM_CONDITIONAL([PERL_AVAILABLE], test -n "$PERL") +AC_CHECK_PROG(ZIP, zip, zip) +test -z "${ZIP}" && AC_MSG_ERROR(Zip not found!) +AC_CHECK_PROG(UNZIP, unzip, unzip) +test -z "${UNZIP}" && AC_MSG_ERROR(Unzip not found!) + # Enable Compiler/LibC GNU extensions AC_GNU_SOURCE @@ -52,7 +57,7 @@ AC_CHECK_HEADERS(alloca.h) # Check for gettext AM_GNU_GETTEXT([external]) -AC_PROG_VERSION_CHECK([msgfmt xgettext], [0.15]) +AM_GNU_GETTEXT_VERSION([0.15]) # Check for pkg-config PKG_PROG_PKG_CONFIG @@ -72,7 +77,7 @@ case ${host_os} in *mingw32*) host_os_mingw32=yes AC_CHECK_TOOL([WINDRES], [windres], AC_MSG_ERROR([windres not found])) - WIN32_LIBS='-ldbghelp -lshfolder -lwinmm -lws2_32' + WIN32_LIBS='-ldbghelp -lshfolder -lshlwapi -lpsapi -lshell32 -lwinmm -lws2_32' AC_SUBST([WIN32_LIBS], [${WIN32_LIBS}]) ;; *openbsd*) @@ -195,11 +200,18 @@ AS_IF([test "x$enable_sound" != "xyes"],[ # -Wno-unused-label is necessary because flex produces unused labels that we cannot fix # Add later for stricter checking: -Wextra -Wmissing-declarations -Wstrict-prototypes AC_ARG_ENABLE([debug], - AS_HELP_STRING([--enable-debug[=yes/relaxed/profile/debugprofile/no]],[Compile debug version [yes]]), + AS_HELP_STRING([--enable-debug[=yes/relaxed/profile/debugprofile/no]],[Compile debug version [[yes]]]), [ enable_debug=${enableval} ], [ enable_debug=yes ]) AC_MSG_CHECKING([whether to compile in debug mode]) AC_MSG_RESULT([${enable_debug}]) +# gcc 4.5 added some warnings to -Wall that weren't even valid in previous +# versions. The -Werror is necessary since otherwise gcc prints a warning that +# the option is only valid for c++/objc++, but the test succeeds. The order is +# also important, it doesn't work if -Werror comes last. +AX_C_CHECK_FLAG([-Werror -Wno-switch], , , CFLAGS_IGNORE_WARNINGS="${CFLAGS_IGNORE_WARNINGS} -Wno-switch") +AX_C_CHECK_FLAG([-Werror -Wno-enum-compare], , , CFLAGS_IGNORE_WARNINGS="${CFLAGS_IGNORE_WARNINGS} -Wno-enum-compare") + if test "x$enable_debug" = "xyes" ; then if test "x$cc_icc" = "xyes" ; then WZ_CFLAGS="${WZ_CFLAGS} -O0 -g -fp-model precise -fp-model source -ftz -no-fma -Wcheck -Werror" @@ -208,7 +220,7 @@ if test "x$enable_debug" = "xyes" ; then else # -mno-fused-madd = Do not generate fused multiply-add instructions, which round differently than separate multiply and add instructions. WZ_WARNINGS="-Wall -Werror -Wno-unused-label -Wmissing-field-initializers -Wcast-align -Wwrite-strings -Wmissing-declarations -Wpointer-arith -Wno-format-security" - WZ_CFLAGS="${WZ_CFLAGS} -O0 -g -mno-fused-madd -Wno-pointer-to-int-cast -Wstrict-prototypes -Wdeclaration-after-statement ${WZ_WARNINGS}" + WZ_CFLAGS="${WZ_CFLAGS} -O0 -g -mno-fused-madd -Wno-pointer-to-int-cast -Wstrict-prototypes -Wdeclaration-after-statement ${WZ_WARNINGS} ${CFLAGS_IGNORE_WARNINGS}" WZ_CXXFLAGS="${WZ_CXXFLAGS} -O0 -g -mno-fused-madd -Wextra ${WZ_WARNINGS}" WZ_C99FLAGS="${WZ_C99FLAGS} -Wno-declaration-after-statement" WZ_CPPFLAGS="${WZ_CPPFLAGS} -DDEBUG" @@ -309,13 +321,26 @@ if test "x$enable_static" = "xyes" ; then PKG_CHECK_MODULES([FREETYPE], [freetype2]) fi -if test "x$host_os_mingw32" = "xno" ; then +system_glee=false +if test "x$host_os_mingw32" != "xyes" ; then PKG_CHECK_MODULES([GLee], [glee >= 5.4.0], [system_glee=true], [system_glee=false]) -else - system_glee=false + if test "x$system_glee" = "xfalse" ; then + AX_EXT_HAVE_HEADER([GLee.h], [/usr/local/include/GL /usr/include/GL]) + save_cppflags="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${GLEE_H_CPPFLAGS}" + AC_CHECK_HEADER([GLee.h], [system_glee=true], [system_glee=false]) + CPPFLAGS=${save_cppflags} + if test "x$system_glee" = "xtrue" ; then + AC_CHECK_LIB([GLee], [GLeeInit], [system_glee=true], [system_glee=false]) + if test "x$system_glee" = "xtrue" ; then + AC_SUBST([GLee_CFLAGS], [${GLEE_H_CPPFLAGS}]) + AC_SUBST([GLee_LIBS], [-lGLee]) + fi + fi + fi fi -AM_CONDITIONAL([SYSTEM_GLEE], [test x$system_glee = xtrue]) -if test x$system_glee = xfalse ; then +AM_CONDITIONAL([SYSTEM_GLEE], [test "x$system_glee" = "xtrue"]) +if test "x$system_glee" = "xfalse" ; then AC_MSG_NOTICE([Using integrated GLee]) AC_SUBST([GLee_CFLAGS], ['-I$(top_srcdir)/lib/ivis_opengl']) fi diff --git a/data/Makefile.am b/data/Makefile.am index ecff6ebb1..ad4fa5355 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -4,8 +4,8 @@ stamp: touch stamp %.wz: $(abs_srcdir)/% stamp - (cd $(srcdir)/$(notdir $<) && zip -ru0 $(abs_builddir)/$@ $(filter-out stamp,$(filter-out $<,$(^:$ 600) + if ((gameTime - lastAttack) > 600) + { + // Return to nearest factory (ie base) + lastAttack = gameTime; + initIterateGroup(attackGroup); + mydroid = iterateGroup(attackGroup); + while (mydroid != NULLOBJECT) { - lastAttack = gameTime; - orderGroupLoc(attackGroup, DORDER_MOVE, fac1.x, fac1.y); + clfac = NULLOBJECT; + closest = 9999; + initEnumStruct(FALSE, factory, enemy1, enemy1); + fac1 = enumStruct(); + while (fac1 != NULLOBJECT) + { + current = distBetweenTwoPoints(fac1.x, fac1.y, mydroid.x, mydroid.y); + if (current < closest) + { + closest = current; + clfac = fac1; + } + fac1 = enumStruct(); + } + if (clfac != NULLOBJECT) + { + orderDroidLoc(mydroid, DORDER_MOVE, clfac.x, clfac.y); + } + mydroid = iterateGroup(attackGroup); } } @@ -122,10 +153,21 @@ event droidbuilt(CALL_NEWDROID, enemy1, ref newDroid, ref fac1) // watch for structures being attacked. Send the cavalry as required. event structureAttacked(CALL_STRUCT_ATTACKED, enemy1, ref structure, ref attacker) { + local DROID mydroid; + if ((gameTime - lastAttack) > 300) { lastAttack = gameTime; - orderGroupLoc(attackGroup, DORDER_MOVE, attacker.x, attacker.y); + initIterateGroup(attackGroup); + mydroid = iterateGroup(attackGroup); + while (mydroid != NULLOBJECT) + { + if (distBetweenTwoPoints(attackGroup.x, attackGroup.y,attacker.x, attacker.y) < (24 * 128)) + { + orderDroidLoc(mydroid, DORDER_MOVE, attacker.x, attacker.y); + } + mydroid = iterateGroup(attackGroup); + } } } diff --git a/data/base/multiplay/skirmish/ai.slo b/data/base/multiplay/skirmish/ai.slo index 573fcb865..272b5cef0 100644 --- a/data/base/multiplay/skirmish/ai.slo +++ b/data/base/multiplay/skirmish/ai.slo @@ -391,6 +391,23 @@ event checkResearch(checkResearchTr) setEventTrigger(doResearch, chainloadTr); } +function void dbgPlr(string message) +{ + setEventTrigger(doResearch, chainloadTr); + if (me == selectedPlayer) + { + console(message); + } +} + +function void dbgObj(DROID obj, string message) +{ + if (obj.selected) + { + console(message); + } +} + function bool conCanHelp(DROID mydroid, int bx, int by) { return (mydroid.order != DORDER_HELPBUILD and mydroid.order != DORDER_BUILD and mydroid.order != DORDER_LINEBUILD and droidCanReach(mydroid, bx, by)); @@ -446,6 +463,8 @@ event arrived(reachedTr) if (droid.droidType == DROID_CONSTRUCT or droid.droidType == DROID_CYBORG_CONSTRUCT) { + dbgObj(droid, "Failed to build where we should - attempt to screw up enemy oil derrick"); + // Check if at oil well, and it was taken by enemy structure = structureBuiltInRange(derrick, droid.x, droid.y, (5 * 128), -1); if (structure != NULLOBJECT) @@ -475,12 +494,22 @@ event arrived(reachedTr) { orderDroidStatsLoc(droid, DORDER_BUILD, defStructs[count], buildX, buildY); } + else + { + dbgObj(droid, "Wanted to be nasty, but found nowhere to build defense"); + orderDroid(droid, DORDER_RTB); // nothing more to do here. + } + } + else + { + dbgObj(droid, "Wanted to be nasty, but had nothing nasty to build - returning to base"); + orderDroid(droid, DORDER_RTB); // oh, well. nothing more to do here. } exit; } else if (droid.health < 100 and !insideBase(droid.x, droid.y)) { - orderDroid(droid, DORDER_RTB); // bolt back to base now! + orderDroid(droid, DORDER_RTR); // bolt back to base now! exit; } } @@ -707,7 +736,6 @@ event buildOilDefenseOrRetreat(buildOilDefenseOrRetreatTr) { local int _numBuilders,_maxBuilders; - _maxBuilders = 1; // check idle. @@ -743,20 +771,8 @@ event buildOilDefenseOrRetreat(buildOilDefenseOrRetreatTr) { if( isStructureAvailable(defStructs[count],me)) { - - // don't build multiple sensors together. - if(count == 5) - { - structure = structureBuiltInRange(defStructs[count], buildX, buildY,(6*128), me); - if(structure != NULLOBJECT) - { - count = 8; - } - } - structChoice[count2] = defStructs[count]; count2 = count2 + 1; - } count = count - 1; } @@ -973,7 +989,10 @@ event incendry(incendryTr) // build a power gen for every 4 derricks. VITAL! event buildPowerGenerators(buildPowerGeneratorsTr) { - + if (!isStructureAvailable(powGen, me)) + { + exit; + } initEnumStruct(FALSE,derrick,me,me); // count = numderricks structure= enumStruct(); count = 0; @@ -2126,28 +2145,24 @@ event doAllOutAttack(allOutAttackTr) // defend attacked objects. event defendWatch(defendWatchTr) { - if(baseobj != NULLOBJECT) + if (baseobj != NULLOBJECT) { if(!friendlyPlayer(baseobj.player)) { - if(not isHumanPlayer(baseobj.player) ) // new in wdg1 dont allout attack a pc player //TODO:is this check needed? + if(distBetweenTwoPoints(baseobj.x, baseobj.y, baseX, baseY) <= MAX_DEFENDERS_RADIUS) //don't go too far away from the base { - if(distBetweenTwoPoints(baseobj.x, baseobj.y, baseX, baseY) <= MAX_DEFENDERS_RADIUS) //don't go too far away from the base + defendObj = baseobj; + defendbusy = TRUE; + // if not too busy, attack. + if (idleGroup(defendGroup) >= (defendGroup.members / 2)) { - defendObj = baseobj; - defendbusy = TRUE; - // if not too busy, attack. - if( idleGroup(defendGroup) >= (defendGroup.members / 2) ) - { - orderGroupLoc(defendGroup, DORDER_MOVE,defendObj.x,defendObj.y); //cyborg mechanics can't attack (won't move) - } - - if( idleGroup(scoutGroup) >= (scoutGroup.members / 2) ) - { - orderGroupLoc(scoutGroup, DORDER_MOVE,scoutX,scoutY); - } + orderGroupLoc(defendGroup, DORDER_MOVE,defendObj.x,defendObj.y); //cyborg mechanics can't attack (won't move) } + if (idleGroup(scoutGroup) >= (scoutGroup.members / 2)) + { + orderGroupLoc(scoutGroup, DORDER_MOVE,scoutX,scoutY); + } } } } @@ -2590,10 +2605,7 @@ event vtolAttack(inactive) { if(defendObj != NULLOBJECT) { - if(not isHumanPlayer(defendObj.player) ) // new in wdg1 //TODO:is this check needed? - { - orderGroupObj(vtolDefendGr, DORDER_ATTACK,defendObj); // get the defend target - } + orderGroupObj(vtolDefendGr, DORDER_ATTACK,defendObj); // get the defend target } } } @@ -2929,8 +2941,8 @@ event vtolDefend(vtolDefendTr) } if(count2 != (-1) ) { - boolResult = pickStructLocation(vtolDefStruct[count2], ref buildX, ref buildY,me); - if((boolResult == TRUE) and (_numBuilders < _maxBuilders) and droidCanReach(droid, buildX, buildY)) // build a vtol defense near the attacked struct... + boolResult = pickDroidStructLocation(droid, vtolDefStruct[count2], ref buildX, ref buildY, me, 1); + if (boolResult == TRUE and (_numBuilders < _maxBuilders)) // build a vtol defense near the attacked struct... { orderDroidStatsLoc(droid, DORDER_BUILD,vtolDefStruct[count2],buildX,buildY); _numBuilders++; diff --git a/data/base/palette.txt b/data/base/palette.txt index c3e7cc522..3f2df5793 100644 --- a/data/base/palette.txt +++ b/data/base/palette.txt @@ -57,3 +57,18 @@ A0,70,00,ff // team2 - orange 20,30,60,ff // team6 - blue 90,00,70,ff // team7 - purple 00,80,80,ff // team8 - teal +7f,7f,7f,ff // default form background +ff,ff,ff,ff // default form text +ff,ff,ff,ff // default form light +00,00,00,ff // default form dark +40,40,40,ff // default form hilite +ff,0,0,ff // default form cursor +30,30,30,ff // default form tip background +bf,bf,bf,ff // default form disabled +0,a4,0,ff // design power form background +cc,0,0,ff // power bar +cc,eb,13,ff // action progress bar major +55,0,0,ff // action progress bar minor +ff,ff,0,ff // production run text +0,20,40,ff // production run background +0,0,0,18 // game loading bar background diff --git a/data/base/sequenceaudio/cam1/c001.txa b/data/base/sequenceaudio/cam1/c001.txa index cae8db233..2ddd21655 100644 --- a/data/base/sequenceaudio/cam1/c001.txa +++ b/data/base/sequenceaudio/cam1/c001.txa @@ -1,14 +1,14 @@ -270 400 0 100 "CAMPAIGN ONE" -260 420 0 100 "WESTERN SECTOR" - -20 20 101 399 "Dawn, July 4th, 2100" -0 0 101 399 "Project HQ" -0 0 101 399 "A New Era" - -20 20 499 799 "Morning, July 4th, 2100" -0 0 499 799 "In-flight to Western Sector" -0 0 499 799 "Team Alpha nears its destination" - -20 20 1250 1725 "OBJECTIVE: Locate and recover neural synapse technology" -20 447 1250 1725 "Establish a base, then search for a Pre-Collapse structure." -0 0 1250 1725 "This structure contains technology vital for the success of the Project." +270 400 0 100 _("CAMPAIGN ONE") +260 420 0 100 _("WESTERN SECTOR") + +20 20 101 399 _("Dawn, July 4th, 2100") +0 0 101 399 _("Project HQ") +0 0 101 399 _("A New Era") + +20 20 499 799 _("Morning, July 4th, 2100") +0 0 499 799 _("In-flight to Western Sector") +0 0 499 799 _("Team Alpha nears its destination") + +20 20 1250 1725 _("OBJECTIVE: Locate and recover neural synapse technology") +20 447 1250 1725 _("Establish a base, then search for a Pre-Collapse structure.") +0 0 1250 1725 _("This structure contains technology vital for the success of the Project.") diff --git a/data/base/sequenceaudio/cam1/c001.txt b/data/base/sequenceaudio/cam1/c001.txt index 8f92b53fe..48c44a7cc 100644 --- a/data/base/sequenceaudio/cam1/c001.txt +++ b/data/base/sequenceaudio/cam1/c001.txt @@ -1,12 +1,12 @@ -20 432 100 200 "Transport destinations follow:" -0 0 100 200 "Alpha - Western Sector...." +20 432 100 200 _("Transport destinations follow:") +0 0 100 200 _("Alpha - Western Sector....") -20 432 225 350 "Alpha you are cleared for take-off." -0 0 225 350 "Good luck and good hunting." +20 432 225 350 _("Alpha you are cleared for take-off.") +0 0 225 350 _("Good luck and good hunting.") -20 432 750 875 "Approaching Landing Zone. Team Alpha Briefing commences." +20 432 750 875 _("Approaching Landing Zone. Team Alpha Briefing commences.") -20 432 925 1150 "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +20 432 925 1150 _("Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse.") -20 432 1175 1240 "Your destination lies in the western zone." +20 432 1175 1240 _("Your destination lies in the western zone.") diff --git a/data/base/sequenceaudio/cam1/c001end.txt b/data/base/sequenceaudio/cam1/c001end.txt index f4b8c2b86..db14b1721 100644 --- a/data/base/sequenceaudio/cam1/c001end.txt +++ b/data/base/sequenceaudio/cam1/c001end.txt @@ -1,7 +1,7 @@ -20 20 0 60 "Incoming Transmission" +20 20 0 60 _("Incoming Transmission") -20 20 70 250 "Transmission from Beta Base" -20 452 70 250 "Mayday! Mayday!" -0 0 70 250 "Please assist!..." +20 20 70 250 _("Transmission from Beta Base") +20 452 70 250 _("Mayday! Mayday!") +0 0 70 250 _("Please assist!...") -20 20 730 844 "Commander you are to assist Team Beta" \ No newline at end of file +20 20 730 844 _("Commander you are to assist Team Beta") \ No newline at end of file diff --git a/data/base/sequenceaudio/cam1/cam1ccom.txt b/data/base/sequenceaudio/cam1/cam1ccom.txt index e0eda4494..1d38c621a 100644 --- a/data/base/sequenceaudio/cam1/cam1ccom.txt +++ b/data/base/sequenceaudio/cam1/cam1ccom.txt @@ -1,11 +1,11 @@ //pos frame //x y start end Text -20 432 0 100 "Commander, we have recovered a command turret from the New Paradigm." +20 432 0 100 _("Commander, we have recovered a command turret from the New Paradigm.") -20 432 125 375 "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +20 432 125 375 _("This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority.") -20 432 425 475 "Commander, we are receiving this transmission." +20 432 425 475 _("Commander, we are receiving this transmission.") diff --git a/data/base/sequenceaudio/cam1/cam1cnp.txt b/data/base/sequenceaudio/cam1/cam1cnp.txt index 1057a6994..6c7bb6960 100644 --- a/data/base/sequenceaudio/cam1/cam1cnp.txt +++ b/data/base/sequenceaudio/cam1/cam1cnp.txt @@ -1,5 +1,5 @@ //pos frame //x y start end Text -20 432 150 325 "Your attacks upon us will not go unpunished." -0 0 150 325 "You are in contravention of the New Paradigm." +20 432 150 325 _("Your attacks upon us will not go unpunished.") +0 0 150 325 _("You are in contravention of the New Paradigm.") diff --git a/data/base/sequenceaudio/cam1/cam1dnp.txt b/data/base/sequenceaudio/cam1/cam1dnp.txt index 7b45592ec..832246cb3 100644 --- a/data/base/sequenceaudio/cam1/cam1dnp.txt +++ b/data/base/sequenceaudio/cam1/cam1dnp.txt @@ -1,9 +1,9 @@ //pos frame //x y start end Text -20 432 200 370 "All attack groups commence attack on enemy." -0 0 200 370 "They are in contravention of the New Paradigm." +20 432 200 370 _("All attack groups commence attack on enemy.") +0 0 200 370 _("They are in contravention of the New Paradigm.") -20 432 385 450 "They must be eradicated." +20 432 385 450 _("They must be eradicated.") diff --git a/data/base/sequenceaudio/cam1/cam1dp2.txt b/data/base/sequenceaudio/cam1/cam1dp2.txt index 6f5d83f1e..d4cf93f5b 100644 --- a/data/base/sequenceaudio/cam1/cam1dp2.txt +++ b/data/base/sequenceaudio/cam1/cam1dp2.txt @@ -1,8 +1,8 @@ //pos frame //x y start end Text -20 432 25 175 "Secure the LZ and establish a forward base." -0 0 25 175 "Then destroy the New Paradigm's base." +20 432 25 175 _("Secure the LZ and establish a forward base.") +0 0 25 175 _("Then destroy the New Paradigm's base.") diff --git a/data/base/sequenceaudio/cam1/cam1out2.txt b/data/base/sequenceaudio/cam1/cam1out2.txt index 625a7b581..9d48a8738 100644 --- a/data/base/sequenceaudio/cam1/cam1out2.txt +++ b/data/base/sequenceaudio/cam1/cam1out2.txt @@ -1,10 +1,10 @@ -20 432 150 325 "Open your systems to me." -0 0 150 325 "Let me meld with your machines and cyborgs." +20 432 150 325 _("Open your systems to me.") +0 0 150 325 _("Let me meld with your machines and cyborgs.") -20 432 330 550 "We will create the perfect nexus of man and machine." -0 0 330 550 "Together we can create a new world." +20 432 330 550 _("We will create the perfect nexus of man and machine.") +0 0 330 550 _("Together we can create a new world.") -20 432 575 675 "I can give you power beyond your wildest dreams." +20 432 575 675 _("I can give you power beyond your wildest dreams.") -20 432 700 925 "Open your systems to me and you will be strong." -0 0 700 925 "I can raise you as gods upon the blasted earth." +20 432 700 925 _("Open your systems to me and you will be strong.") +0 0 700 925 _("I can raise you as gods upon the blasted earth.") diff --git a/data/base/sequenceaudio/cam1/cam1out3.txt b/data/base/sequenceaudio/cam1/cam1out3.txt index 0f921f1fb..279d7c57a 100644 --- a/data/base/sequenceaudio/cam1/cam1out3.txt +++ b/data/base/sequenceaudio/cam1/cam1out3.txt @@ -1,6 +1,6 @@ //pos frame //x y start end Text -20 432 25 125 "When we failed to respond it became threatening." +20 432 25 125 _("When we failed to respond it became threatening.") diff --git a/data/base/sequenceaudio/cam1/cam1out4.txt b/data/base/sequenceaudio/cam1/cam1out4.txt index dc5dc8046..bf1f1265b 100644 --- a/data/base/sequenceaudio/cam1/cam1out4.txt +++ b/data/base/sequenceaudio/cam1/cam1out4.txt @@ -1,6 +1,6 @@ -20 432 75 337 "Your interference in my plans for the New Paradigm will not go unpunished." -0 0 75 337 "You are weak flesh-things. I am strong and have many parts." +20 432 75 337 _("Your interference in my plans for the New Paradigm will not go unpunished.") +0 0 75 337 _("You are weak flesh-things. I am strong and have many parts.") -20 432 350 600 "You may defeat me here, but I shall rise again." -0 0 350 600 "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +20 432 350 600 _("You may defeat me here, but I shall rise again.") +0 0 350 600 _("As I once cleansed the world with fire, I will destroy you and your puny Project!!") diff --git a/data/base/sequenceaudio/cam1/cam1out5.txt b/data/base/sequenceaudio/cam1/cam1out5.txt index a52552af5..8757885ef 100644 --- a/data/base/sequenceaudio/cam1/cam1out5.txt +++ b/data/base/sequenceaudio/cam1/cam1out5.txt @@ -1,13 +1,13 @@ //pos frame //x y start end Text -20 432 25 190 "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +20 432 25 190 _("Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections.") -20 432 200 475 "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +20 432 200 475 _("We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link.") -20 432 500 710 "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +20 432 500 710 _("We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite.") -20 432 725 900 "It has technology and weapons. It knows about us, and it's not friendly." +20 432 725 900 _("It has technology and weapons. It knows about us, and it's not friendly.") diff --git a/data/base/sequenceaudio/cam1/map1a_c.txt b/data/base/sequenceaudio/cam1/map1a_c.txt index e3e6ca4d5..b66a13a46 100644 --- a/data/base/sequenceaudio/cam1/map1a_c.txt +++ b/data/base/sequenceaudio/cam1/map1a_c.txt @@ -1,16 +1,16 @@ //pos frame //x y start end Text -20 432 65 190 "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +20 432 65 190 _("The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military.") -20 432 200 550 "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +20 432 200 550 _("The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column.") -20 432 625 750 "The link has a hi-speed data transfer port that plugs into any computer system." +20 432 625 750 _("The link has a hi-speed data transfer port that plugs into any computer system.") -20 432 925 1200 "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +20 432 925 1200 _("More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive.") -20 432 1350 1700 "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +20 432 1350 1700 _("The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century.") -20 432 1715 1925 "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +20 432 1715 1925 _("Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies.") diff --git a/data/base/sequenceaudio/cam1/sub13np1.txt b/data/base/sequenceaudio/cam1/sub13np1.txt index 2f251593b..a4cadf686 100644 --- a/data/base/sequenceaudio/cam1/sub13np1.txt +++ b/data/base/sequenceaudio/cam1/sub13np1.txt @@ -1,12 +1,12 @@ //pos frame //x y start end Text -20 432 200 275 "Warning!" -0 0 200 275 "You are entering a restricted area." +20 432 200 275 _("Warning!") +0 0 200 275 _("You are entering a restricted area.") + +20 432 300 550 _("Return to your designated zone or be destroyed.") +0 0 300 550 _("Repeat. Return to your designated zone or be destroyed.") +0 0 300 550 _("Message Ends.") -20 432 300 550 "Return to your designated zone or be destroyed." -0 0 300 550 "Repeat. Return to your designated zone or be destroyed." -0 0 300 550 "Message Ends." - \ No newline at end of file diff --git a/data/base/sequenceaudio/cam1/sub13np2.txt b/data/base/sequenceaudio/cam1/sub13np2.txt index e42893325..d8907b3e6 100644 --- a/data/base/sequenceaudio/cam1/sub13np2.txt +++ b/data/base/sequenceaudio/cam1/sub13np2.txt @@ -1,9 +1,9 @@ //pos frame //x y start end Text -20 432 200 370 "Your attacks upon us will not go unpunished." -0 0 200 370 "You are in contravention of the New Paradigm." +20 432 200 370 _("Your attacks upon us will not go unpunished.") +0 0 200 370 _("You are in contravention of the New Paradigm.") -20 432 380 440 "You will be destroyed." +20 432 380 440 _("You will be destroyed.") diff --git a/data/base/sequenceaudio/cam1/sub14anp.txt b/data/base/sequenceaudio/cam1/sub14anp.txt index 1d5ce9c55..7db38e6be 100644 --- a/data/base/sequenceaudio/cam1/sub14anp.txt +++ b/data/base/sequenceaudio/cam1/sub14anp.txt @@ -1,7 +1,7 @@ //pos frame //x y start end Text -20 432 210 380 "NEXUS, the synaptic technology you required has been recovered and sent for collection." +20 432 210 380 _("NEXUS, the synaptic technology you required has been recovered and sent for collection.") diff --git a/data/base/sequenceaudio/cam1/sub17fmv.txt b/data/base/sequenceaudio/cam1/sub17fmv.txt index e248269d1..baadcabd2 100644 --- a/data/base/sequenceaudio/cam1/sub17fmv.txt +++ b/data/base/sequenceaudio/cam1/sub17fmv.txt @@ -1,15 +1,15 @@ //pos frame //x y start end Text -20 432 75 275 "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +20 432 75 275 _("This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified.") -20 432 300 735 "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +20 432 300 735 _("We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within.") -20 432 750 960 "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +20 432 750 960 _("Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program.") -20 432 975 1225 "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +20 432 975 1225 _("However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins.") -20 432 1250 1425 "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +20 432 1250 1425 _("Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base.") diff --git a/data/base/sequenceaudio/cam1/sub1_4bn.txt b/data/base/sequenceaudio/cam1/sub1_4bn.txt index ee9dc2b2a..f2c2b7690 100644 --- a/data/base/sequenceaudio/cam1/sub1_4bn.txt +++ b/data/base/sequenceaudio/cam1/sub1_4bn.txt @@ -1,8 +1,8 @@ //pos frame //x y start end Text -20 432 150 375 "You have done well." -0 0 150 375 "Once we have analyzed and authenticated the technology, your reward will follow." +20 432 150 375 _("You have done well.") +0 0 150 375 _("Once we have analyzed and authenticated the technology, your reward will follow.") diff --git a/data/base/sequenceaudio/cam1/sub1_5pl.txt b/data/base/sequenceaudio/cam1/sub1_5pl.txt index dbdb86ef6..ca35a7928 100644 --- a/data/base/sequenceaudio/cam1/sub1_5pl.txt +++ b/data/base/sequenceaudio/cam1/sub1_5pl.txt @@ -1,7 +1,7 @@ //pos frame //x y start end Text -20 432 25 190 "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +20 432 25 190 _("Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts.") diff --git a/data/base/sequenceaudio/cam2/c002.txa b/data/base/sequenceaudio/cam2/c002.txa index ba8c3ae84..a27aacc33 100644 --- a/data/base/sequenceaudio/cam2/c002.txa +++ b/data/base/sequenceaudio/cam2/c002.txa @@ -1,18 +1,18 @@ -270 400 0 100 "CAMPAIGN TWO" -265 420 0 100 "EASTERN SECTOR" - -20 20 105 285 "Morning, September 1st, 2100" -0 0 105 285 "In-flight to Eastern Sector" -0 0 105 285 "Team Alpha approaches Beta Base" - -20 20 320 912 "BETA BASE MISSION: Eastern Sector" -20 447 320 912 "Upon arrival you are to assume command of the base." -0 0 320 912 "You must defend and hold it at all costs." - -270 465 925 1125 "THE COLLECTIVE" - -20 20 1730 1770 "BETA BASE MISSION: Eastern Sector" - -20 20 1800 2127 "BETA BASE MISSION: Defend and Fortify" -20 447 1800 2127 "Be sure to fortify the perimeter and establish anti-aircraft defenses." -0 0 1800 2127 "New technologies are available." +270 400 0 100 _("CAMPAIGN TWO") +265 420 0 100 _("EASTERN SECTOR") + +20 20 105 285 _("Morning, September 1st, 2100") +0 0 105 285 _("In-flight to Eastern Sector") +0 0 105 285 _("Team Alpha approaches Beta Base") + +20 20 320 912 _("BETA BASE MISSION: Eastern Sector") +20 447 320 912 _("Upon arrival you are to assume command of the base.") +0 0 320 912 _("You must defend and hold it at all costs.") + +270 465 925 1125 _("THE COLLECTIVE") + +20 20 1730 1770 _("BETA BASE MISSION: Eastern Sector") + +20 20 1800 2127 _("BETA BASE MISSION: Defend and Fortify") +20 447 1800 2127 _("Be sure to fortify the perimeter and establish anti-aircraft defenses.") +0 0 1800 2127 _("New technologies are available.") diff --git a/data/base/sequenceaudio/cam2/c2diif2.txt b/data/base/sequenceaudio/cam2/c2diif2.txt index 07ee57545..372e776ee 100644 --- a/data/base/sequenceaudio/cam2/c2diif2.txt +++ b/data/base/sequenceaudio/cam2/c2diif2.txt @@ -1,6 +1,6 @@ -20 432 40 200 "Commander, a new launch has been detected." -0 0 40 200 "It is likely to be targeted at your location." +20 432 40 200 _("Commander, a new launch has been detected.") +0 0 40 200 _("It is likely to be targeted at your location.") -20 432 220 385 "You are to start the immediate evacuation of Beta Base to the safe haven." +20 432 220 385 _("You are to start the immediate evacuation of Beta Base to the safe haven.") diff --git a/data/base/sequenceaudio/cam2/cam22fmv.txt b/data/base/sequenceaudio/cam2/cam22fmv.txt index 4405c7da0..2e4238f8a 100644 --- a/data/base/sequenceaudio/cam2/cam22fmv.txt +++ b/data/base/sequenceaudio/cam2/cam22fmv.txt @@ -1,23 +1,23 @@ -20 432 0 125 "NASDA is the North American Strategic Defense Agency." +20 432 0 125 _("NASDA is the North American Strategic Defense Agency.") -20 432 150 435 "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +20 432 150 435 _("NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082.") -20 432 450 590 "In 2085 the NASDA satellites fired their nukes at Earth." +20 432 450 590 _("In 2085 the NASDA satellites fired their nukes at Earth.") -20 432 635 800 "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +20 432 635 800 _("There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there.") -20 432 825 1000 "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +20 432 825 1000 _("The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America.") -20 432 1030 1275 "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +20 432 1030 1275 _("During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets.") -20 432 1300 1420 "All nukes targeted at North America found their targets." +20 432 1300 1420 _("All nukes targeted at North America found their targets.") -20 447 1430 1700 "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +20 447 1430 1700 _("We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites.") -20 453 1710 1765 "If the centre is found intact, NEXUS may gain control of the satellites." +20 453 1710 1765 _("If the centre is found intact, NEXUS may gain control of the satellites.") -20 432 1780 1850 "Nexus claimed that it had already destroyed the world." +20 432 1780 1850 _("Nexus claimed that it had already destroyed the world.") diff --git a/data/base/sequenceaudio/cam2/cam22pl2.txt b/data/base/sequenceaudio/cam2/cam22pl2.txt index d8ad165cb..1e5421ea7 100644 --- a/data/base/sequenceaudio/cam2/cam22pl2.txt +++ b/data/base/sequenceaudio/cam2/cam22pl2.txt @@ -1,2 +1,2 @@ -20 432 25 150 "NASDA Briefing follows..." +20 432 25 150 _("NASDA Briefing follows...") diff --git a/data/base/sequenceaudio/cam2/cam22pl3.txt b/data/base/sequenceaudio/cam2/cam22pl3.txt index bf7398ea9..5a859ecf7 100644 --- a/data/base/sequenceaudio/cam2/cam22pl3.txt +++ b/data/base/sequenceaudio/cam2/cam22pl3.txt @@ -1,4 +1,4 @@ -20 432 10 100 "We've got to make sure that it can't do it again." +20 432 10 100 _("We've got to make sure that it can't do it again.") diff --git a/data/base/sequenceaudio/cam2/cam26afm.txt b/data/base/sequenceaudio/cam2/cam26afm.txt index b898df38e..fb728fc29 100644 --- a/data/base/sequenceaudio/cam2/cam26afm.txt +++ b/data/base/sequenceaudio/cam2/cam26afm.txt @@ -1,9 +1,9 @@ -20 432 20 200 "Analysis indicates that these systems were part of the control system for the NASDA satellites." -0 0 20 200 "It's now certain that Nexus was responsible for The Collapse." +20 432 20 200 _("Analysis indicates that these systems were part of the control system for the NASDA satellites.") +0 0 20 200 _("It's now certain that Nexus was responsible for The Collapse.") -20 432 220 500 "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +20 432 220 500 _("During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes.") -20 432 520 825 "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +20 432 520 825 _("The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus.") -20 432 875 1000 "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +20 432 875 1000 _("Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes.") diff --git a/data/base/sequenceaudio/cam2/cam26bfm.txt b/data/base/sequenceaudio/cam2/cam26bfm.txt index fd593c3f5..97135b1ae 100644 --- a/data/base/sequenceaudio/cam2/cam26bfm.txt +++ b/data/base/sequenceaudio/cam2/cam26bfm.txt @@ -1,6 +1,6 @@ -20 432 40 175 "Commander we are detecting transmissions from this site that are reaching high orbit." +20 432 40 175 _("Commander we are detecting transmissions from this site that are reaching high orbit.") -20 432 325 410 "Nexus has now reconnected itself with the NASDA satellites." +20 432 325 410 _("Nexus has now reconnected itself with the NASDA satellites.") -20 432 420 565 "This poses a major threat to the Project and to our survival." +20 432 420 565 _("This poses a major threat to the Project and to our survival.") diff --git a/data/base/sequenceaudio/cam2/cam26pl1.txt b/data/base/sequenceaudio/cam2/cam26pl1.txt index 5fea0c9d1..e94182b0f 100644 --- a/data/base/sequenceaudio/cam2/cam26pl1.txt +++ b/data/base/sequenceaudio/cam2/cam26pl1.txt @@ -1,6 +1,6 @@ -20 432 25 190 "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +20 432 25 190 _("Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it.") -20 432 210 350 "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +20 432 210 350 _("The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems.") diff --git a/data/base/sequenceaudio/cam2/cam27fmv.txt b/data/base/sequenceaudio/cam2/cam27fmv.txt index b2abf95b4..eb98412dd 100644 --- a/data/base/sequenceaudio/cam2/cam27fmv.txt +++ b/data/base/sequenceaudio/cam2/cam27fmv.txt @@ -1,6 +1,6 @@ -20 432 25 100 "Commander, we have just detected a missile launch at these coordinates." +20 432 25 100 _("Commander, we have just detected a missile launch at these coordinates.") -20 432 125 260 "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +20 432 125 260 _("Team Gamma are sending a team to investigate the launch site and to prevent any further launches.") -20 432 270 565 "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +20 432 270 565 _("We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base.") diff --git a/data/base/sequenceaudio/cam2/cam2_2n.txt b/data/base/sequenceaudio/cam2/cam2_2n.txt index a5133d7fe..05509cf97 100644 --- a/data/base/sequenceaudio/cam2/cam2_2n.txt +++ b/data/base/sequenceaudio/cam2/cam2_2n.txt @@ -1,5 +1,5 @@ -20 432 225 425 "Warriors of the Collective, I seek the location of NASDA Central." -0 0 225 425 "It lies somewhere in your territory." +20 432 225 425 _("Warriors of the Collective, I seek the location of NASDA Central.") +0 0 225 425 _("It lies somewhere in your territory.") + +20 432 450 635 _("Find it for me and I shall provide you with further weapons to aid you in your war against the Project.") -20 432 450 635 "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." - \ No newline at end of file diff --git a/data/base/sequenceaudio/cam2/cam2_2n2.txt b/data/base/sequenceaudio/cam2/cam2_2n2.txt index c0876c3c2..72f23bd97 100644 --- a/data/base/sequenceaudio/cam2/cam2_2n2.txt +++ b/data/base/sequenceaudio/cam2/cam2_2n2.txt @@ -1 +1 @@ -20 432 10 325 "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +20 432 10 325 _("As I once cleansed the world with fire, I will destroy you and your puny Project!!") diff --git a/data/base/sequenceaudio/cam2/cam2acol.txt b/data/base/sequenceaudio/cam2/cam2acol.txt index 273449ac6..1dc4a3a75 100644 --- a/data/base/sequenceaudio/cam2/cam2acol.txt +++ b/data/base/sequenceaudio/cam2/cam2acol.txt @@ -1,8 +1,8 @@ -20 432 25 290 "Warriors of The Collective, more intruders are entering our territory." -0 0 25 290 "They are not part of the machine." +20 432 25 290 _("Warriors of The Collective, more intruders are entering our territory.") +0 0 25 290 _("They are not part of the machine.") -20 432 300 625 "Warriors of The Collective, attack and destroy kill all who resist the machine." -0 0 300 625 "Attack! Erase their presence from this area!" +20 432 300 625 _("Warriors of The Collective, attack and destroy kill all who resist the machine.") +0 0 300 625 _("Attack! Erase their presence from this area!") diff --git a/data/base/sequenceaudio/cam2/cam2bcol.txt b/data/base/sequenceaudio/cam2/cam2bcol.txt index fad0c2982..4958f2983 100644 --- a/data/base/sequenceaudio/cam2/cam2bcol.txt +++ b/data/base/sequenceaudio/cam2/cam2bcol.txt @@ -1,11 +1,11 @@ -20 432 25 250 "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +20 432 25 250 _("Warriors of The Collective, we are ready to destroy the intruders who pollute our lands.") -20 432 275 625 "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +20 432 275 625 _("Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures.") -20 432 650 775 "They shall fall before the might of The Collective." +20 432 650 775 _("They shall fall before the might of The Collective.") -20 432 800 925 "Attack and destroy all who resist the machine." -0 0 800 925 "Attack!" +20 432 800 925 _("Attack and destroy all who resist the machine.") +0 0 800 925 _("Attack!") diff --git a/data/base/sequenceaudio/cam2/cam2dico.txt b/data/base/sequenceaudio/cam2/cam2dico.txt index 1c41691bb..8568f0c88 100644 --- a/data/base/sequenceaudio/cam2/cam2dico.txt +++ b/data/base/sequenceaudio/cam2/cam2dico.txt @@ -1,6 +1,6 @@ -20 432 10 320 "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +20 432 10 320 _("Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us.") -20 432 325 500 "Nexus now asks us to crush the Project." -0 0 325 500 "Cleanse and destroy!!" +20 432 325 500 _("Nexus now asks us to crush the Project.") +0 0 325 500 _("Cleanse and destroy!!") diff --git a/data/base/sequenceaudio/cam2/cam2diin.txt b/data/base/sequenceaudio/cam2/cam2diin.txt index 977a46118..7316fcf65 100644 --- a/data/base/sequenceaudio/cam2/cam2diin.txt +++ b/data/base/sequenceaudio/cam2/cam2diin.txt @@ -1,8 +1,8 @@ -20 432 240 380 "Warriors of the Collective. You have performed well." -0 0 240 380 "Your just reward is on its way." +20 432 240 380 _("Warriors of the Collective. You have performed well.") +0 0 240 380 _("Your just reward is on its way.") -20 432 390 525 "The Project is fleeing its base and stealing your technology." -0 0 390 525 "You must stop them!" +20 432 390 525 _("The Project is fleeing its base and stealing your technology.") +0 0 390 525 _("You must stop them!") diff --git a/data/base/sequenceaudio/cam2/cam2dipl.txt b/data/base/sequenceaudio/cam2/cam2dipl.txt index bac0bcbed..eb5811041 100644 --- a/data/base/sequenceaudio/cam2/cam2dipl.txt +++ b/data/base/sequenceaudio/cam2/cam2dipl.txt @@ -1,4 +1,4 @@ -20 432 10 100 "Decoding Transmission..." +20 432 10 100 _("Decoding Transmission...") diff --git a/data/base/sequenceaudio/cam3/c003.txa b/data/base/sequenceaudio/cam3/c003.txa index fc1b6a457..869a2a138 100644 --- a/data/base/sequenceaudio/cam3/c003.txa +++ b/data/base/sequenceaudio/cam3/c003.txa @@ -1,17 +1,17 @@ -260 400 0 100 "CAMPAIGN THREE" -254 420 0 100 "NORTHERN SECTOR" - -20 20 113 479 "TRANSPORT MISSION: Northern Sector" -20 447 113 479 "Congratulations your successful evacuation of Beta Base." -0 0 113 479 "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." - -20 20 1000 1225 "Dusk, December 3rd, 2100" -0 0 1000 1225 "In-flight to Northern Sector" -0 0 1000 1225 "The Final Encounter" - -20 20 1278 1338 "Briefing Commences" - -20 20 1347 1768 "TRANSPORT MISSION: Northern Sector" -20 447 1347 1768 "Once at the mountains secure an LZ. Then establish a forward base." -0 0 1347 1768 "Team Gamma will contact you there." - +260 400 0 100 _("CAMPAIGN THREE") +254 420 0 100 _("NORTHERN SECTOR") + +20 20 113 479 _("TRANSPORT MISSION: Northern Sector") +20 447 113 479 _("Congratulations your successful evacuation of Beta Base.") +0 0 113 479 _("NEXUS has gained access to nuclear weapons and is determined to destroy the Project.") + +20 20 1000 1225 _("Dusk, December 3rd, 2100") +0 0 1000 1225 _("In-flight to Northern Sector") +0 0 1000 1225 _("The Final Encounter") + +20 20 1278 1338 _("Briefing Commences") + +20 20 1347 1768 _("TRANSPORT MISSION: Northern Sector") +20 447 1347 1768 _("Once at the mountains secure an LZ. Then establish a forward base.") +0 0 1347 1768 _("Team Gamma will contact you there.") + diff --git a/data/base/sequenceaudio/cam3/c003.txt b/data/base/sequenceaudio/cam3/c003.txt index af12bf3e9..f69e2182a 100644 --- a/data/base/sequenceaudio/cam3/c003.txt +++ b/data/base/sequenceaudio/cam3/c003.txt @@ -1,7 +1,7 @@ -20 432 850 1025 "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +20 432 850 1025 _("Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector.") -20 432 1150 1250 "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +20 432 1150 1250 _("Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity.") -20 432 1275 1350 "Commander, the success of the Project lies with you." +20 432 1275 1350 _("Commander, the success of the Project lies with you.") diff --git a/data/base/sequenceaudio/cam3/c3ad2n2.txt b/data/base/sequenceaudio/cam3/c3ad2n2.txt index 03a04fb00..4e9d6be85 100644 --- a/data/base/sequenceaudio/cam3/c3ad2n2.txt +++ b/data/base/sequenceaudio/cam3/c3ad2n2.txt @@ -1,4 +1,4 @@ -20 432 140 210 "Time's up commander!!" +20 432 140 210 _("Time's up commander!!") diff --git a/data/base/sequenceaudio/cam3/c3ad2pl3.txt b/data/base/sequenceaudio/cam3/c3ad2pl3.txt index 327f2c580..e504589c6 100644 --- a/data/base/sequenceaudio/cam3/c3ad2pl3.txt +++ b/data/base/sequenceaudio/cam3/c3ad2pl3.txt @@ -1,4 +1,4 @@ -20 432 10 175 "Commander, we are detecting NEXUS forces from these coordinates..." +20 432 10 175 _("Commander, we are detecting NEXUS forces from these coordinates...") diff --git a/data/base/sequenceaudio/cam3/cam32a2.txt b/data/base/sequenceaudio/cam3/cam32a2.txt index 9342c1406..92b40f07a 100644 --- a/data/base/sequenceaudio/cam3/cam32a2.txt +++ b/data/base/sequenceaudio/cam3/cam32a2.txt @@ -1,10 +1,10 @@ -20 432 0 60 "Glad you could make it, Commander." +20 432 0 60 _("Glad you could make it, Commander.") -20 432 70 235 "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +20 432 70 235 _("Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley.") -20 432 245 275 "Can you try and reach us with anti-aircraft units?" +20 432 245 275 _("Can you try and reach us with anti-aircraft units?") diff --git a/data/base/sequenceaudio/cam3/cam32alp.txt b/data/base/sequenceaudio/cam3/cam32alp.txt index 6e72cad36..ff2664b77 100644 --- a/data/base/sequenceaudio/cam3/cam32alp.txt +++ b/data/base/sequenceaudio/cam3/cam32alp.txt @@ -1,11 +1,11 @@ -20 432 20 180 "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +20 432 20 180 _("This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance.") -20 432 190 300 "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +20 432 190 300 _("We are under heavy attack from cyborgs, laser tanks, and strike VTOLs.") -20 432 315 450 "We were trying to reach your position, but have been ambushed." -0 0 315 450 "We're holed up in a valley at these coordinates." -0 0 315 450 "Please assist." +20 432 315 450 _("We were trying to reach your position, but have been ambushed.") +0 0 315 450 _("We're holed up in a valley at these coordinates.") +0 0 315 450 _("Please assist.") diff --git a/data/base/sequenceaudio/cam3/cam32pl2.txt b/data/base/sequenceaudio/cam3/cam32pl2.txt index 7a4841323..25cf7aa66 100644 --- a/data/base/sequenceaudio/cam3/cam32pl2.txt +++ b/data/base/sequenceaudio/cam3/cam32pl2.txt @@ -1,4 +1,4 @@ -20 432 20 85 "Coordinate Download Completed." +20 432 20 85 _("Coordinate Download Completed.") -20 432 90 200 "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +20 432 90 200 _("Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base.") diff --git a/data/base/sequenceaudio/cam3/cam34mu1.txt b/data/base/sequenceaudio/cam3/cam34mu1.txt index 794572afb..78644f153 100644 --- a/data/base/sequenceaudio/cam3/cam34mu1.txt +++ b/data/base/sequenceaudio/cam3/cam34mu1.txt @@ -1,6 +1,6 @@ -20 432 20 110 "We are experiencing some interference from NEXUS." +20 432 20 110 _("We are experiencing some interference from NEXUS.") -20 432 115 220 "You must destroy his command centre before we lose control of key systems." +20 432 115 220 _("You must destroy his command centre before we lose control of key systems.") diff --git a/data/base/sequenceaudio/cam3/cam34mu2.txt b/data/base/sequenceaudio/cam3/cam34mu2.txt index 1fc76f4c2..b64d25f67 100644 --- a/data/base/sequenceaudio/cam3/cam34mu2.txt +++ b/data/base/sequenceaudio/cam3/cam34mu2.txt @@ -1,4 +1,4 @@ -20 432 120 250 "Commander, welcome to NEXUS!" +20 432 120 250 _("Commander, welcome to NEXUS!") diff --git a/data/base/sequenceaudio/cam3/cam3_1bn.txt b/data/base/sequenceaudio/cam3/cam3_1bn.txt index 1e21c1eae..acd8bf2e3 100644 --- a/data/base/sequenceaudio/cam3/cam3_1bn.txt +++ b/data/base/sequenceaudio/cam3/cam3_1bn.txt @@ -1,13 +1,13 @@ -20 432 75 250 "Well done Commander, you've prevented my last missile from launching." -0 0 75 250 "Such a shame. Your Project HQ would have made a wonderful target." +20 432 75 250 _("Well done Commander, you've prevented my last missile from launching.") +0 0 75 250 _("Such a shame. Your Project HQ would have made a wonderful target.") -20 432 275 320 "But it's good of you to join me here." +20 432 275 320 _("But it's good of you to join me here.") -20 432 325 425 "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +20 432 325 425 _("Buried beneath this silo is a tactical nuclear warhead that is set to go off soon.") -20 432 475 550 "As I cannot launch it, it'll just have to blow where it is." +20 432 475 550 _("As I cannot launch it, it'll just have to blow where it is.") -20 432 560 650 "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +20 432 560 650 _("Please note that all entrances to the underground complex have been sealed. Goodbye, Commander.") diff --git a/data/base/sequenceaudio/cam3/cam3_bn.txt b/data/base/sequenceaudio/cam3/cam3_bn.txt index 8f12b7cfa..d2dde918e 100644 --- a/data/base/sequenceaudio/cam3/cam3_bn.txt +++ b/data/base/sequenceaudio/cam3/cam3_bn.txt @@ -1,15 +1,15 @@ -20 432 75 165 "Ah, Commander, so good of you to join us here at Nexus base." +20 432 75 165 _("Ah, Commander, so good of you to join us here at Nexus base.") -20 432 175 320 "It was very useful having Gamma Team set up here in the mountains." -0 0 175 320 "Their absorption was such a pleasure." +20 432 175 320 _("It was very useful having Gamma Team set up here in the mountains.") +0 0 175 320 _("Their absorption was such a pleasure.") -20 432 325 400 "Thank you for all those useful technologies you've recovered." +20 432 325 400 _("Thank you for all those useful technologies you've recovered.") -20 432 405 510 "You and not those fools in the New Paradigm and the Collective." +20 432 405 510 _("You and not those fools in the New Paradigm and the Collective.") -20 432 530 620 "I'm now activating all your synaptic links so that your forces can meld with Nexus." +20 432 530 620 _("I'm now activating all your synaptic links so that your forces can meld with Nexus.") -20 432 630 720 "Your forces are now mine! Welcome to Nexus." +20 432 630 720 _("Your forces are now mine! Welcome to Nexus.") -//" for me. Had I known you'd be so useful, I'd have hired " +//_(" for me. Had I known you'd be so useful, I'd have hired ") diff --git a/data/base/sequenceaudio/cam3/cam3_cn.txt b/data/base/sequenceaudio/cam3/cam3_cn.txt index b4dfa1b3a..ac328222f 100644 --- a/data/base/sequenceaudio/cam3/cam3_cn.txt +++ b/data/base/sequenceaudio/cam3/cam3_cn.txt @@ -1,14 +1,14 @@ -20 432 75 220 "Commander, you're proving to be more resilient than I thought." -0 0 75 220 "Such a pity that you refused to join me earlier." +20 432 75 220 _("Commander, you're proving to be more resilient than I thought.") +0 0 75 220 _("Such a pity that you refused to join me earlier.") -20 432 225 300 "But no matter, as you'll not be here much longer." +20 432 225 300 _("But no matter, as you'll not be here much longer.") -20 432 325 425 "After much searching and reprogramming, I've finally got all my systems back on-line." +20 432 325 425 _("After much searching and reprogramming, I've finally got all my systems back on-line.") -20 432 450 700 "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." -0 0 450 700 "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +20 432 450 700 _("Once I destroyed the world with nuclear fire to clear the way for my cybernetic future.") +0 0 450 700 _("I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself.") -20 432 725 850 "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +20 432 725 850 _("My Laser Satellites are now powering up. I intend to test them on you first, Commander!") diff --git a/data/base/sequenceaudio/cam3/cam3abf.txt b/data/base/sequenceaudio/cam3/cam3abf.txt index 220b026a0..eced4b653 100644 --- a/data/base/sequenceaudio/cam3/cam3abf.txt +++ b/data/base/sequenceaudio/cam3/cam3abf.txt @@ -1,20 +1,20 @@ -20 432 0 200 "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +20 432 0 200 _("The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology.") -20 432 225 350 "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +20 432 225 350 _("After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics.") -20 432 375 600 "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +20 432 375 600 _("His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks.") -20 432 625 850 "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +20 432 625 850 _("Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding.") -20 432 875 1000 "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +20 432 875 1000 _("Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way.") -20 432 1025 1225 "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." -0 0 1025 1225 "The similarity between NEXUS and Dr Reed is striking." +20 432 1025 1225 _("It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program.") +0 0 1025 1225 _("The similarity between NEXUS and Dr Reed is striking.") -20 432 1290 1485 "Such an interesting history lesson. Now allow me to bring you up to date." -0 0 1290 1485 "The NEXUS Intruder Program was created in order to control fools like you." +20 432 1290 1485 _("Such an interesting history lesson. Now allow me to bring you up to date.") +0 0 1290 1485 _("The NEXUS Intruder Program was created in order to control fools like you.") -20 432 1490 1760 "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +20 432 1490 1760 _("It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems.") -20 432 1770 1850 "Let's start by activating NEXUS in your core systems and see what happens!" +20 432 1770 1850 _("Let's start by activating NEXUS in your core systems and see what happens!") diff --git a/data/base/sequenceaudio/cam3/cam3abpl.txt b/data/base/sequenceaudio/cam3/cam3abpl.txt index 99ad97290..a7708cd00 100644 --- a/data/base/sequenceaudio/cam3/cam3abpl.txt +++ b/data/base/sequenceaudio/cam3/cam3abpl.txt @@ -1,5 +1,5 @@ -20 432 25 200 "Commander, we are experiencing interference with our equipment." -0 0 25 200 "Normal service will be restored as soon as possible." +20 432 25 200 _("Commander, we are experiencing interference with our equipment.") +0 0 25 200 _("Normal service will be restored as soon as possible.") diff --git a/data/base/sequenceaudio/cam3/cam3ad2n.txt b/data/base/sequenceaudio/cam3/cam3ad2n.txt index d7f102ef1..08ad6d6ea 100644 --- a/data/base/sequenceaudio/cam3/cam3ad2n.txt +++ b/data/base/sequenceaudio/cam3/cam3ad2n.txt @@ -1,9 +1,9 @@ -20 432 75 165 "Not long to go now, Commander. There's no where else for you to run to." +20 432 75 165 _("Not long to go now, Commander. There's no where else for you to run to.") -20 432 210 325 "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +20 432 210 325 _("However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me.") -20 432 350 425 "You have five minutes to comply or else it's frying time!" +20 432 350 425 _("You have five minutes to comply or else it's frying time!") diff --git a/data/base/sequenceaudio/cam3/cam3bg.txt b/data/base/sequenceaudio/cam3/cam3bg.txt index 0c4d41ee9..dc890a191 100644 --- a/data/base/sequenceaudio/cam3/cam3bg.txt +++ b/data/base/sequenceaudio/cam3/cam3bg.txt @@ -1,8 +1,8 @@ -20 432 20 150 "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +20 432 20 150 _("Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we....") + +20 432 225 360 _("...cannot hold out much longer. Repeat, please help, we cannot hold out much longer....") -20 432 225 360 "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." - \ No newline at end of file diff --git a/data/base/sequenceaudio/devastation.txa b/data/base/sequenceaudio/devastation.txa index 4bba46fe7..a41b4df0f 100644 --- a/data/base/sequenceaudio/devastation.txa +++ b/data/base/sequenceaudio/devastation.txa @@ -1,18 +1,18 @@ -//pos frame -//x y start end Text - -20 20 0 550 "Dusk, November 3rd, 2085" -0 0 0 550 "Earth, High Orbit" -0 0 0 550 "The Collapse" - -20 20 975 1450 "January 19th, 2086" -0 0 975 1450 "North America" -0 0 975 1450 "Nuclear Winter" - -20 20 1500 2000 "Midnight, April 10th, 2086" -0 0 1500 2000 "Rocky Mountains" -0 0 1500 2000 "Safety" - -20 20 2300 4000 "Dawn, April 4th, 2100" -0 0 2300 4000 "North America" -0 0 2300 4000 "A New Beginning" \ No newline at end of file +//pos frame +//x y start end Text + +20 20 0 550 _("Dusk, November 3rd, 2085") +0 0 0 550 _("Earth, High Orbit") +0 0 0 550 _("The Collapse") + +20 20 975 1450 _("January 19th, 2086") +0 0 975 1450 _("North America") +0 0 975 1450 _("Nuclear Winter") + +20 20 1500 2000 _("Midnight, April 10th, 2086") +0 0 1500 2000 _("Rocky Mountains") +0 0 1500 2000 _("Safety") + +20 20 2300 4000 _("Dawn, April 4th, 2100") +0 0 2300 4000 _("North America") +0 0 2300 4000 _("A New Beginning") \ No newline at end of file diff --git a/data/base/sequenceaudio/devastation.txt b/data/base/sequenceaudio/devastation.txt index d37cbba79..15bc82d7a 100644 --- a/data/base/sequenceaudio/devastation.txt +++ b/data/base/sequenceaudio/devastation.txt @@ -1,22 +1,22 @@ -20 432 0 250 "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +20 432 0 250 _("The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner.") -20 432 275 550 "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +20 432 275 550 _("Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out.") -20 432 625 985 "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +20 432 625 985 _("Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed.") -20 432 1010 1125 "The world as we knew it ended..." +20 432 1010 1125 _("The world as we knew it ended...") -20 432 1150 1475 "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +20 432 1150 1475 _("The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more.") -20 432 1500 1650 "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +20 432 1500 1650 _("We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free.") -20 432 1675 1950 "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +20 432 1675 1950 _("After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases.") -20 432 1975 2200 "We cracked the doors, and cleared out the bodies inside." +20 432 1975 2200 _("We cracked the doors, and cleared out the bodies inside.") -20 432 2225 2560 "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +20 432 2225 2560 _("We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line.") -20 432 2600 2750 "We were finally ready to begin the Project." +20 432 2600 2750 _("We were finally ready to begin the Project.") diff --git a/data/base/sequenceaudio/outro.txt b/data/base/sequenceaudio/outro.txt index 710ff6252..655b1249b 100644 --- a/data/base/sequenceaudio/outro.txt +++ b/data/base/sequenceaudio/outro.txt @@ -1,10 +1,10 @@ -20 432 500 610 "After many long months of struggle, we defeated NEXUS." +20 432 500 610 _("After many long months of struggle, we defeated NEXUS.") -20 432 620 710 "The war started by Dr Reed was over." +20 432 620 710 _("The war started by Dr Reed was over.") -20 432 720 810 "We have recovered many of the technologies we sought." +20 432 720 810 _("We have recovered many of the technologies we sought.") -20 432 820 930 "It is now time to use them to rebuild the world." +20 432 820 930 _("It is now time to use them to rebuild the world.") -20 432 940 1100 "Slowly, out of the ashes we will rise again..." +20 432 940 1100 _("Slowly, out of the ashes we will rise again...") diff --git a/data/base/structs/radarsensor.pie b/data/base/structs/radarsensor.pie index e1bf3024d..829a732b2 100644 --- a/data/base/structs/radarsensor.pie +++ b/data/base/structs/radarsensor.pie @@ -1,457 +1,456 @@ -PIE 2 -TYPE 200 -TEXTURE 0 page-59-more-weapons.png 256 256 -LEVELS 1 -LEVEL 1 -POINTS 161 - 5 18 -13 - 5 18 -10 - 8 18 -12 - 8 22 -14 - 5 22 -13 - 5 21 -10 - 8 22 -11 - 7 30 -12 - 8 25 -11 - 5 25 -10 - 5 25 -12 - 5 29 -11 - 5 29 -9 - 7 29 -10 - 5 36 -10 - 5 35 -8 - 4 34 -7 - 4 35 -9 - 8 15 -14 - 8 15 -11 - 5 16 -10 - 5 15 -13 - 5 13 -12 - 5 14 -10 - 8 13 -11 - 7 9 -13 - 7 10 -10 - 5 11 -9 - 4 10 -11 - 7 16 -7 - 6 25 -7 - 8 29 -8 - 7 21 -7 - 7 18 -8 - 3 16 -10 - 2 25 -10 - 2 29 -11 - 2 21 -10 - 3 18 -10 - 2 17 0 - 1 17 -2 - 2 15 0 - -1 17 -2 - -1 15 -2 - 1 15 -2 - 2 8 -12 - 3 8 -5 - 8 8 -8 - 8 5 -15 - 6 8 0 - 17 5 0 - -8 5 -14 - -3 8 -5 - 0 8 0 - 8 18 12 - 5 18 10 - 5 18 13 - 8 22 14 - 8 22 11 - 5 21 10 - 5 22 13 - 7 30 12 - 5 25 12 - 5 25 10 - 8 25 11 - 7 29 10 - 5 29 9 - 5 29 11 - 5 36 10 - 4 35 9 - 4 34 7 - 5 35 8 - 8 15 14 - 5 15 13 - 5 16 10 - 8 15 11 - 8 13 11 - 5 14 10 - 5 13 12 - 7 9 13 - 4 10 11 - 5 11 9 - 7 10 10 - 2 16 10 - 2 25 9 - 2 29 11 - 2 21 10 - 2 18 10 - 7 16 8 - 6 25 7 - 8 29 8 - 7 21 8 - 7 18 8 - -1 17 2 - 1 17 2 - -1 15 2 - 1 15 2 - 8 8 8 - 3 8 5 - 2 8 12 - 8 5 15 - -3 8 5 - -8 5 14 - -15 18 1 - -12 18 0 - -15 18 -1 - -17 22 0 - -14 22 1 - -12 21 0 - -14 22 -1 - -15 30 0 - -14 25 -1 - -11 25 0 - -14 25 1 - -13 29 1 - -11 29 0 - -13 29 -1 - -12 36 0 - -10 35 -1 - -9 34 0 - -10 35 1 - -17 15 0 - -14 15 -1 - -12 16 0 - -14 15 1 - -14 13 1 - -11 14 0 - -14 13 -1 - -15 9 0 - -13 10 -1 - -10 11 0 - -13 10 1 - -10 16 -2 - -10 25 -2 - -11 29 -3 - -10 21 -2 - -10 18 -2 - -10 16 2 - -10 25 2 - -11 29 3 - -10 21 2 - -11 18 2 - -2 17 0 - -3 15 0 - -12 8 3 - -6 8 0 - -12 8 -3 - -17 5 0 - 1 18 0 - 0 19 -1 - 0 18 -1 - -1 18 1 - 0 19 1 - -1 19 0 - 0 19 0 - -1 14 1 - -2 14 0 - 0 14 2 - 1 14 0 - 0 14 -2 - -1 14 -1 -POLYGONS 289 - 200 3 3 6 2 70 28 65 29 66 35 - 200 3 3 0 4 70 28 66 35 65 29 - 200 3 11 7 10 62 14 66 13 64 22 - 200 3 13 8 7 62 14 64 22 66 13 - 200 3 22 21 18 64 45 65 41 70 41 - 200 3 24 18 19 64 45 70 41 65 41 - 200 3 29 24 19 58 40 64 45 65 41 - 200 3 29 20 23 2 44 7 43 7 47 - 200 3 29 19 20 2 44 7 39 7 43 - 200 3 31 13 12 62 75 65 71 69 75 - 200 3 32 6 5 50 68 51 72 48 71 - 200 3 34 21 22 58 40 65 41 64 45 - 200 3 34 23 20 12 44 7 47 7 43 - 200 3 34 20 21 12 44 7 43 8 39 - 200 3 36 12 11 69 71 62 71 65 68 - 200 3 37 5 4 45 71 48 71 48 74 - 200 3 52 49 46 24 32 38 23 33 32 - 200 3 50 48 47 55 24 41 45 42 36 - 200 3 48 51 45 41 45 16 45 32 41 - 200 3 52 53 49 24 32 28 23 38 23 - 200 3 57 60 56 70 28 65 29 66 36 - 200 3 57 54 58 70 28 66 36 65 29 - 200 3 65 61 64 62 14 66 13 64 22 - 200 3 67 62 61 62 14 64 22 66 13 - 200 3 76 75 72 64 46 65 41 70 42 - 200 3 78 72 73 64 46 70 42 65 41 - 200 3 83 78 73 58 40 64 46 65 41 - 200 3 83 74 77 2 44 7 43 7 47 - 200 3 83 73 74 2 44 7 39 7 43 - 200 3 85 67 66 62 75 65 71 69 75 - 200 3 86 60 59 45 46 48 43 48 46 - 200 3 88 75 76 58 40 65 41 64 46 - 200 3 88 77 74 12 44 7 47 7 43 - 200 3 88 74 75 12 44 7 43 8 39 - 200 3 90 66 65 69 71 62 71 65 68 - 200 3 91 59 58 50 49 48 46 51 45 - 200 3 49 101 98 38 23 24 15 33 15 - 200 3 102 100 99 16 2 41 1 32 6 - 200 3 100 50 97 41 1 55 24 42 11 - 200 3 49 53 101 38 23 28 23 24 15 - 200 3 106 109 105 70 28 66 29 66 35 - 200 3 106 103 107 70 28 66 35 66 29 - 200 3 114 110 113 62 14 66 13 64 22 - 200 3 116 111 110 62 14 64 22 66 13 - 200 3 125 124 121 65 45 66 40 70 41 - 200 3 127 121 122 65 45 70 41 66 40 - 200 3 132 127 122 58 40 65 45 66 40 - 200 3 132 123 126 2 44 7 43 7 47 - 200 3 132 122 123 2 44 7 38 7 43 - 200 3 134 116 115 61 71 65 68 69 71 - 200 3 135 109 108 29 61 24 60 27 59 - 200 3 137 124 125 58 40 66 40 65 45 - 200 3 137 126 123 12 44 7 47 7 43 - 200 3 137 123 124 12 44 7 43 8 38 - 200 3 139 115 114 69 75 62 75 65 71 - 200 3 140 108 107 29 56 27 59 24 57 - 200 3 101 52 145 24 15 24 32 19 23 - 200 3 51 147 146 16 45 3 23 11 29 - 200 3 147 102 144 3 23 16 2 11 18 - 200 3 101 53 52 24 15 28 23 24 32 - 200 3 133 115 112 54 75 57 71 57 75 - 200 3 115 138 112 57 71 60 75 57 75 - 200 3 30 12 9 54 75 57 71 57 75 - 200 3 12 35 9 57 71 60 75 57 75 - 200 3 66 89 63 57 71 60 75 57 75 - 200 3 139 138 115 61 70 60 75 57 71 - 200 3 133 134 115 54 75 53 70 57 71 - 200 3 30 31 12 54 75 53 70 57 71 - 200 3 36 35 12 61 70 60 75 57 71 - 200 3 84 66 63 54 75 57 71 57 75 - 200 3 84 85 66 54 75 53 70 57 71 - 200 3 90 89 66 61 70 60 75 57 71 - 200 3 149 154 148 42 60 41 59 43 58 - 200 3 150 154 149 40 60 41 59 42 60 - 200 3 152 154 151 42 57 41 59 40 57 - 200 3 151 154 153 40 57 41 59 39 58 - 200 3 148 154 152 43 58 41 59 42 57 - 200 3 153 154 150 39 58 41 59 40 60 - 200 3 159 160 43 58 67 58 65 60 65 - 200 3 44 159 43 58 68 58 67 60 65 - 200 3 43 156 143 60 65 58 64 58 63 - 200 3 43 160 156 60 65 58 65 58 64 - 200 3 41 159 44 55 68 58 67 58 68 - 200 3 41 158 159 55 68 56 67 58 67 - 200 3 157 158 41 55 65 56 67 55 68 - 200 3 96 157 41 54 65 55 65 55 68 - 200 3 95 157 96 55 63 55 65 54 65 - 200 3 95 155 157 55 63 56 64 55 65 - 200 3 156 155 95 58 64 56 64 55 63 - 200 3 143 156 95 58 63 58 64 55 63 - 200 3 153 150 42 39 58 40 60 40 61 - 200 3 142 153 42 38 58 39 58 40 61 - 200 3 39 152 94 44 58 42 57 43 56 - 200 3 39 148 152 44 58 43 58 42 57 - 200 3 93 153 142 40 56 39 58 38 58 - 200 3 93 151 153 40 56 40 57 39 58 - 200 3 152 151 93 42 57 40 57 40 56 - 200 3 94 152 93 43 56 42 57 40 56 - 200 3 42 149 40 40 61 42 60 43 61 - 200 3 42 150 149 40 61 40 60 42 60 - 200 3 149 148 39 42 60 43 58 44 58 - 200 3 40 149 39 43 61 42 60 44 58 - 200 3 144 101 145 11 18 24 15 19 23 - 200 3 144 102 101 11 18 16 2 24 15 - 200 3 52 51 146 24 32 16 45 11 29 - 200 3 145 52 146 19 23 24 32 11 29 - 200 3 146 128 129 61 54 67 52 62 51 - 200 3 146 147 128 61 54 71 59 67 52 - 200 3 146 129 130 61 54 62 51 58 49 - 200 3 145 146 130 51 54 61 54 58 49 - 200 3 144 131 128 61 54 62 51 67 52 - 200 3 147 144 128 71 59 61 54 67 52 - 200 3 144 130 131 61 54 58 49 62 51 - 200 3 144 145 130 61 54 51 54 58 49 - 200 3 93 140 141 22 58 11 53 11 57 - 200 3 95 93 141 22 60 22 58 11 57 - 200 3 142 108 140 38 58 27 59 29 56 - 200 3 93 142 140 40 56 38 58 29 56 - 200 3 42 136 135 22 58 11 57 11 53 - 200 3 42 43 136 22 58 22 60 11 57 - 200 3 142 135 108 38 58 29 61 27 59 - 200 3 142 42 135 38 58 40 61 29 61 - 200 3 141 107 103 11 57 6 52 6 57 - 200 3 141 140 107 11 57 11 53 6 52 - 200 3 139 114 113 60 14 62 14 64 22 - 200 3 138 139 113 57 23 60 14 64 22 - 200 3 136 105 109 11 57 6 57 6 52 - 200 3 135 136 109 11 53 11 57 6 52 - 200 3 134 111 116 60 14 64 22 62 14 - 200 3 134 133 111 60 14 57 23 64 22 - 200 3 130 126 125 58 49 60 44 65 45 - 200 3 131 130 125 62 51 58 49 65 45 - 200 3 128 125 121 67 52 65 45 70 41 - 200 3 128 131 125 67 52 62 51 65 45 - 200 3 130 127 126 58 49 65 45 60 44 - 200 3 130 129 127 58 49 62 51 65 45 - 200 3 128 121 127 67 52 70 41 65 45 - 200 3 129 128 127 62 51 67 52 65 45 - 200 3 123 104 103 61 39 61 35 66 35 - 200 3 124 123 103 66 40 61 39 66 35 - 200 3 121 103 106 70 41 66 35 70 28 - 200 3 121 124 103 70 41 66 40 66 35 - 200 3 123 105 104 61 39 66 35 61 35 - 200 3 123 122 105 61 39 66 40 66 35 - 200 3 121 106 105 70 41 70 28 66 35 - 200 3 122 121 105 66 40 70 41 66 35 - 200 3 118 117 120 72 73 70 68 74 68 - 200 3 119 118 120 77 73 72 73 74 68 - 200 3 119 114 115 55 4 62 13 58 14 - 200 3 119 120 114 55 4 58 3 62 13 - 200 3 117 110 114 61 2 66 13 62 14 - 200 3 120 117 114 58 4 61 2 62 14 - 200 3 119 115 116 55 4 58 14 62 13 - 200 3 118 119 116 58 3 55 4 62 13 - 200 3 117 116 110 61 2 62 14 66 13 - 200 3 117 118 116 61 2 58 4 62 14 - 200 3 112 107 108 60 22 66 29 61 29 - 200 3 112 113 107 60 22 64 22 66 29 - 200 3 113 106 107 64 22 70 28 66 29 - 200 3 113 110 106 64 22 66 13 70 28 - 200 3 112 108 109 60 22 61 29 66 29 - 200 3 111 112 109 64 22 60 22 66 29 - 200 3 111 109 106 64 22 66 29 70 28 - 200 3 110 111 106 66 13 64 22 70 28 - 200 3 97 49 98 42 11 38 23 33 15 - 200 3 97 50 49 42 11 55 24 38 23 - 200 3 101 102 99 24 15 16 2 32 6 - 200 3 98 101 99 33 15 24 15 32 6 - 200 3 99 79 80 60 55 66 53 62 51 - 200 3 99 100 79 60 55 70 59 66 53 - 200 3 99 80 81 60 55 62 51 58 49 - 200 3 98 99 81 50 55 60 55 58 49 - 200 3 97 82 79 60 55 62 51 66 53 - 200 3 100 97 79 70 59 60 55 66 53 - 200 3 97 81 82 60 55 58 49 62 51 - 200 3 97 98 81 60 55 50 55 58 49 - 200 3 39 91 92 31 72 20 67 19 71 - 200 3 41 39 92 31 74 31 72 19 71 - 200 3 94 59 91 43 56 48 46 50 49 - 200 3 39 94 91 44 58 43 56 50 49 - 200 3 93 87 86 31 72 19 71 20 67 - 200 3 93 95 87 31 72 31 74 19 71 - 200 3 94 86 59 43 56 45 46 48 46 - 200 3 94 93 86 43 56 40 56 45 46 - 200 3 92 58 54 19 71 15 66 14 71 - 200 3 92 91 58 19 71 20 67 15 66 - 200 3 90 65 64 60 14 62 14 64 22 - 200 3 89 90 64 57 23 60 14 64 22 - 200 3 87 56 60 19 71 14 71 15 66 - 200 3 86 87 60 20 67 19 71 15 66 - 200 3 85 62 67 59 14 64 22 62 14 - 200 3 85 84 62 59 14 57 23 64 22 - 200 3 81 77 76 58 49 60 44 64 46 - 200 3 82 81 76 62 51 58 49 64 46 - 200 3 79 76 72 66 53 64 46 70 42 - 200 3 79 82 76 66 53 62 51 64 46 - 200 3 80 78 77 62 51 64 46 60 44 - 200 3 81 80 77 58 49 62 51 60 44 - 200 3 79 72 78 66 53 70 42 64 46 - 200 3 80 79 78 62 51 66 53 64 46 - 200 3 74 55 54 61 40 61 36 66 36 - 200 3 75 74 54 65 41 61 40 66 36 - 200 3 72 54 57 70 42 66 36 70 28 - 200 3 72 75 54 70 42 65 41 66 36 - 200 3 74 56 55 61 40 66 36 61 36 - 200 3 74 73 56 61 40 65 41 66 36 - 200 3 72 57 56 70 42 70 28 66 36 - 200 3 73 72 56 65 41 70 42 66 36 - 200 3 69 68 71 72 73 70 68 75 68 - 200 3 70 69 71 77 73 72 73 75 68 - 200 3 70 65 66 55 4 62 13 58 15 - 200 3 70 71 65 55 4 57 3 62 13 - 200 3 68 61 65 61 3 66 13 62 14 - 200 3 71 68 65 58 4 61 3 62 14 - 200 3 70 66 67 55 4 58 15 62 13 - 200 3 69 70 67 57 3 55 4 62 13 - 200 3 68 67 61 61 3 62 14 66 13 - 200 3 68 69 67 61 3 58 4 62 14 - 200 3 63 58 59 60 23 65 29 61 30 - 200 3 63 64 58 60 23 64 22 65 29 - 200 3 64 57 58 64 22 70 28 65 29 - 200 3 64 61 57 64 22 66 13 70 28 - 200 3 63 59 60 60 23 61 30 65 29 - 200 3 62 63 60 64 22 60 23 65 29 - 200 3 62 60 57 64 22 65 29 70 28 - 200 3 61 62 57 66 13 64 22 70 28 - 200 3 45 52 46 32 41 24 32 33 32 - 200 3 45 51 52 32 41 16 45 24 32 - 200 3 49 50 47 38 23 55 24 42 36 - 200 3 46 49 47 33 32 38 23 42 36 - 200 3 47 25 26 61 55 66 53 62 51 - 200 3 47 48 25 61 55 71 59 66 53 - 200 3 47 26 27 61 55 62 51 58 49 - 200 3 46 47 27 50 54 61 55 58 49 - 200 3 45 28 25 61 55 62 51 66 53 - 200 3 48 45 25 71 59 61 55 66 53 - 200 3 45 27 28 61 55 58 49 62 51 - 200 3 45 46 27 61 55 50 54 58 49 - 200 3 42 37 38 27 65 16 60 15 64 - 200 3 43 42 38 27 67 27 65 15 64 - 200 3 40 5 37 43 61 48 71 45 71 - 200 3 42 40 37 40 61 43 61 45 71 - 200 3 39 33 32 27 65 15 64 16 60 - 200 3 39 41 33 27 65 27 67 15 64 - 200 3 40 32 5 43 61 50 68 48 71 - 200 3 40 39 32 43 61 44 58 50 68 - 200 3 38 4 0 15 64 11 60 10 64 - 200 3 38 37 4 15 64 16 60 11 60 - 200 3 36 11 10 60 14 62 14 64 22 - 200 3 35 36 10 57 23 60 14 64 22 - 200 3 33 2 6 15 64 10 64 11 60 - 200 3 32 33 6 16 60 15 64 11 60 - 200 3 31 8 13 60 14 64 22 62 14 - 200 3 31 30 8 60 14 57 23 64 22 - 200 3 27 23 22 58 49 60 44 64 45 - 200 3 28 27 22 62 51 58 49 64 45 - 200 3 25 22 18 66 53 64 45 70 41 - 200 3 25 28 22 66 53 62 51 64 45 - 200 3 26 24 23 62 51 64 45 60 44 - 200 3 27 26 23 58 49 62 51 60 44 - 200 3 25 18 24 66 53 70 41 64 45 - 200 3 26 25 24 62 51 66 53 64 45 - 200 3 20 1 0 61 40 61 35 66 35 - 200 3 21 20 0 65 41 61 40 66 35 - 200 3 18 0 3 70 41 66 35 70 28 - 200 3 18 21 0 70 41 65 41 66 35 - 200 3 20 2 1 61 40 66 35 61 35 - 200 3 20 19 2 61 40 65 41 66 35 - 200 3 18 3 2 70 41 70 28 66 35 - 200 3 19 18 2 65 41 70 41 66 35 - 200 3 15 14 17 75 68 77 73 72 73 - 200 3 16 15 17 70 68 75 68 72 73 - 200 3 16 11 12 55 4 62 13 58 15 - 200 3 16 17 11 55 4 58 3 62 13 - 200 3 14 7 11 61 3 66 13 62 14 - 200 3 17 14 11 58 4 61 3 62 14 - 200 3 16 12 13 55 4 58 15 62 13 - 200 3 15 16 13 58 3 55 4 62 13 - 200 3 14 13 7 61 3 62 14 66 13 - 200 3 14 15 13 61 3 58 4 62 14 - 200 3 9 4 5 60 23 65 29 61 29 - 200 3 9 10 4 60 23 64 22 65 29 - 200 3 10 3 4 64 22 70 28 65 29 - 200 3 10 7 3 64 22 66 13 70 28 - 200 3 9 5 6 60 23 61 29 65 29 - 200 3 8 9 6 64 22 60 23 65 29 - 200 3 8 6 3 64 22 65 29 70 28 - 200 3 7 8 3 66 13 64 22 70 28 - 200 3 7 8 3 66 13 64 22 70 28 \ No newline at end of file +PIE 3 +TYPE 0 +TEXTURE 0 page-59-more-weapons.png 256 256 +LEVELS 1 +LEVEL 1 +POINTS 161 + 5.820343 18.497525 -13.643049 + 5.929425 18.497525 -10.677424 + 8.552274 18.497525 -12.065769 + 8.323437 22.407208 -14.823975 + 5.713160 22.052595 -13.457386 + 5.832816 21.732785 -10.510089 + 8.445075 22.052595 -11.880117 + 7.170735 30.633949 -12.827434 + 8.046700 25.971537 -11.343854 + 5.586686 25.457425 -10.083777 + 5.447934 25.971537 -12.844257 + 5.010649 29.987306 -11.730067 + 5.159731 29.353489 -9.344271 + 7.300430 29.987306 -10.408061 + 5.800132 36.283125 -10.453487 + 5.948721 35.586265 -8.604748 + 4.273375 34.889399 -7.809058 + 4.124786 35.586265 -9.657796 + 8.309192 15.265798 -14.799305 + 8.445092 15.782316 -11.880130 + 5.849064 16.298829 -10.538236 + 5.713165 15.782316 -13.457408 + 5.433493 13.118195 -12.973003 + 5.644869 14.111539 -10.184560 + 8.165420 13.118195 -11.395721 + 7.345890 9.297363 -13.130813 + 7.557267 10.290703 -10.342369 + 5.036715 11.284048 -9.131205 + 4.825341 10.290703 -11.919647 + 7.259029 16.233589 -7.913737 + 6.910462 25.227168 -7.617735 + 8.496007 29.909973 -8.204626 + 7.238285 21.669838 -7.892726 + 7.339394 18.432285 -8.052928 + 3.003687 16.243354 -10.455759 + 2.914981 25.250464 -10.004781 + 2.619673 29.926527 -11.667338 + 2.995730 21.682228 -10.427088 + 3.084048 18.442050 -10.594947 + 2.355653 17.338720 0.049326 + 1.089071 17.368020 -2.306256 + 2.442071 15.785081 0.049326 + -1.484565 17.338720 -2.270318 + -1.527775 15.785081 -2.345160 + 1.175490 15.814383 -2.455939 + 2.534493 8.196775 -12.202170 + 3.030678 8.291923 -5.656645 + 8.947358 8.196775 -8.499700 + 8.451172 5.865025 -15.045226 + 6.358185 8.291923 0.050650 + 17.834401 5.742517 -0.154783 + -8.450366 5.742517 -14.827387 + -3.529970 8.291923 -5.758087 + -0.234080 8.256072 -0.001921 + 8.552274 18.497525 12.061931 + 5.929426 18.497525 10.673584 + 5.820345 18.497525 13.639211 + 8.323441 22.407208 14.820138 + 8.445077 22.052595 11.876275 + 5.832814 21.732785 10.506248 + 5.713162 22.052595 13.453547 + 7.170734 30.633949 12.823592 + 5.447934 25.971537 12.840416 + 5.586682 25.457425 10.079936 + 8.046704 25.971537 11.340015 + 7.300431 29.987306 10.404220 + 5.159728 29.353489 9.340430 + 5.010648 29.987306 11.726227 + 5.800135 36.283125 10.449643 + 4.124789 35.586265 9.653958 + 4.273371 34.889399 7.805213 + 5.948721 35.586265 8.600906 + 8.309194 15.265798 14.795461 + 5.713164 15.782316 13.453567 + 5.849065 16.298829 10.534395 + 8.445092 15.782316 11.876287 + 8.165420 13.118195 11.391880 + 5.644870 14.111539 10.180719 + 5.433492 13.118195 12.969160 + 7.345889 9.297363 13.126967 + 4.825338 10.290703 11.915807 + 5.036716 11.284048 9.127366 + 7.557266 10.290703 10.338526 + 2.871201 16.233589 10.443212 + 2.789140 25.227168 9.993343 + 2.504630 29.909973 11.659909 + 2.863376 21.669838 10.414735 + 2.951563 18.432285 10.582402 + 7.200325 16.243354 8.028983 + 6.854122 25.250464 7.726675 + 8.441594 29.926527 8.302211 + 7.179477 21.682228 8.007762 + 7.280685 18.442050 8.168170 + -1.573328 17.338720 2.215229 + 1.099958 17.368020 2.296129 + -1.616537 15.785081 2.290071 + 1.186377 15.814383 2.445810 + 8.947359 8.196775 8.495860 + 3.030675 8.291923 5.652803 + 2.534496 8.196775 12.198330 + 8.451180 5.865025 15.041385 + -3.575739 8.291923 5.680862 + -8.667389 5.742517 14.902377 + -15.074855 18.497525 1.575357 + -12.561094 18.497525 -0.001924 + -15.074855 18.497525 -1.579198 + -17.349113 22.407208 -0.001921 + -14.860479 22.052595 1.575350 + -12.367866 21.732785 -0.001923 + -14.860477 22.052595 -1.579194 + -15.043706 30.633949 -0.001923 + -14.196876 25.971537 -1.502323 + -11.875606 25.457425 -0.001924 + -14.196875 25.971537 1.498479 + -13.013320 29.987306 1.320085 + -11.021698 29.353489 -0.001921 + -13.013320 29.987306 -1.323927 + -12.302510 36.283125 -0.001921 + -10.775746 35.586265 -1.054970 + -9.248985 34.889399 -0.001923 + -10.775745 35.586265 1.051127 + -17.320622 15.265798 -0.001921 + -14.860498 15.782316 -1.579200 + -12.400370 16.298829 -0.001922 + -14.860499 15.782316 1.575359 + -14.301153 13.118195 1.575358 + -11.991981 14.111539 -0.001922 + -14.301156 13.118195 -1.579201 + -15.394015 9.297363 -0.001921 + -13.084846 10.223236 -1.579201 + -10.775672 11.284048 -0.001921 + -13.084846 10.223236 1.575359 + -10.832471 16.233589 -2.535236 + -10.401843 25.227168 -2.381370 + -11.702877 29.909973 -3.461043 + -10.803902 21.669838 -2.527773 + -10.993192 18.432285 -2.535237 + -10.906252 16.243354 2.421010 + -10.471340 25.250464 2.272343 + -11.763504 29.926527 3.359365 + -10.877446 21.682228 2.413565 + -11.066972 18.442050 2.421010 + -2.891268 17.368020 0.004365 + -3.064107 15.814383 0.004365 + -12.184094 8.196775 3.700548 + -6.763593 8.291923 -0.001923 + -12.184094 8.196775 -3.704389 + -17.604589 5.865025 -0.001921 + 1.296871 18.987048 0.028375 + 0.548116 19.004366 -1.364157 + -0.973319 18.987048 -1.342912 + -1.025792 18.987048 1.308774 + 0.554553 19.004366 1.356599 + -1.804909 19.004366 0.001795 + -0.234080 19.773658 -0.001921 + -1.386067 14.472895 1.907972 + -2.592312 14.497315 0.003317 + 0.949573 14.497315 2.037749 + 1.995929 14.472895 0.040782 + 0.940500 14.497315 -2.046829 + -1.312103 14.472895 -1.954518 +POLYGONS 288 + 200 3 3 6 2 0.275764 0.112263 0.257743 0.114831 0.259296 0.140573 + 200 3 3 0 4 0.275764 0.112263 0.259296 0.140573 0.257743 0.114831 + 200 3 8 6 3 0.252938 0.086454 0.257743 0.114831 0.275764 0.112263 + 200 3 7 8 3 0.259070 0.052694 0.252938 0.086454 0.275764 0.112263 + 200 3 9 5 6 0.236130 0.090177 0.239694 0.117147 0.257743 0.114831 + 200 3 8 9 6 0.252938 0.086454 0.236130 0.090177 0.257743 0.114831 + 200 3 7 3 4 0.259070 0.052694 0.275764 0.112263 0.257743 0.114831 + 200 3 10 7 4 0.252938 0.086454 0.259070 0.052694 0.257743 0.114831 + 200 3 10 4 5 0.252938 0.086454 0.257743 0.114831 0.239694 0.117147 + 200 3 9 10 5 0.236130 0.090177 0.252938 0.086454 0.239694 0.117147 + 200 3 11 7 10 0.244368 0.057376 0.259070 0.052694 0.252938 0.086454 + 200 3 13 8 7 0.244368 0.057376 0.252938 0.086454 0.259070 0.052694 + 200 3 15 13 7 0.228166 0.016834 0.244368 0.057376 0.259070 0.052694 + 200 3 14 15 7 0.239221 0.011788 0.228166 0.016834 0.259070 0.052694 + 200 3 16 12 13 0.215511 0.018680 0.228347 0.058766 0.242768 0.054176 + 200 3 15 16 13 0.226566 0.013634 0.215511 0.018680 0.242768 0.054176 + 200 3 14 7 11 0.239221 0.011788 0.259070 0.052694 0.244368 0.057376 + 200 3 17 14 11 0.228166 0.016834 0.239221 0.011788 0.244368 0.057376 + 200 3 17 11 12 0.226566 0.013634 0.242768 0.054176 0.228347 0.058766 + 200 3 16 17 12 0.215511 0.018680 0.226566 0.013634 0.228347 0.058766 + 200 3 15 14 17 0.293186 0.269216 0.301487 0.286693 0.282140 0.286564 + 200 3 16 15 17 0.273839 0.269088 0.293186 0.269216 0.282140 0.286564 + 200 3 18 3 2 0.275557 0.163974 0.275764 0.112263 0.259296 0.140573 + 200 3 19 18 2 0.257744 0.160234 0.275557 0.163974 0.259296 0.140573 + 200 3 19 2 1 0.257744 0.160234 0.259296 0.140573 0.241094 0.140573 + 200 3 20 19 1 0.239930 0.156494 0.257744 0.160234 0.241094 0.140573 + 200 3 21 0 3 0.257744 0.160234 0.259296 0.140573 0.275764 0.112263 + 200 3 18 21 3 0.275557 0.163974 0.257744 0.160234 0.275764 0.112263 + 200 3 20 1 0 0.239930 0.156494 0.241094 0.140573 0.259296 0.140573 + 200 3 21 20 0 0.257744 0.160234 0.239930 0.156494 0.259296 0.140573 + 200 3 22 21 18 0.253693 0.179525 0.257744 0.160234 0.275557 0.163974 + 200 3 24 18 19 0.253693 0.179525 0.275557 0.163974 0.257744 0.160234 + 200 3 25 18 24 0.261607 0.207192 0.275557 0.163974 0.253693 0.179525 + 200 3 26 25 24 0.244886 0.199999 0.261607 0.207192 0.253693 0.179525 + 200 3 26 24 23 0.244886 0.199999 0.253693 0.179525 0.236973 0.172332 + 200 3 27 26 23 0.228165 0.192806 0.244886 0.199999 0.236973 0.172332 + 200 3 28 22 18 0.244886 0.199999 0.253693 0.179525 0.275557 0.163974 + 200 3 25 28 18 0.261607 0.207192 0.244886 0.199999 0.275557 0.163974 + 200 3 27 23 22 0.228165 0.192806 0.236973 0.172332 0.253693 0.179525 + 200 3 28 27 22 0.244886 0.199999 0.228165 0.192806 0.253693 0.179525 + 200 3 29 24 19 0.228577 0.156967 0.253693 0.179525 0.257744 0.160234 + 200 3 29 20 23 0.011164 0.173826 0.030490 0.171542 0.030479 0.186072 + 200 3 29 19 20 0.011164 0.173826 0.027841 0.152344 0.030490 0.171542 + 200 3 30 8 13 0.225459 0.091844 0.252938 0.086454 0.244368 0.057376 + 200 3 31 30 13 0.234879 0.057936 0.225459 0.091844 0.244368 0.057376 + 200 3 31 13 12 0.242693 0.293848 0.257041 0.280071 0.271001 0.293848 + 200 3 32 6 5 0.197412 0.266652 0.202943 0.284927 0.190970 0.278648 + 200 3 33 2 6 0.062167 0.252427 0.042682 0.252115 0.043706 0.235145 + 200 3 32 33 6 0.063070 0.236972 0.062167 0.252427 0.043706 0.235145 + 200 3 34 21 22 0.229111 0.156896 0.257744 0.160234 0.253693 0.179525 + 200 3 34 23 20 0.048956 0.173702 0.030479 0.186072 0.030490 0.171542 + 200 3 34 20 21 0.048956 0.173702 0.030490 0.171542 0.033139 0.152344 + 200 3 36 12 11 0.270332 0.280071 0.242693 0.280071 0.256957 0.266646 + 200 3 36 11 10 0.235318 0.057816 0.244368 0.057376 0.252938 0.086454 + 200 3 35 36 10 0.225962 0.091675 0.235318 0.057816 0.252938 0.086454 + 200 3 37 5 4 0.177967 0.278268 0.190970 0.278648 0.190422 0.292157 + 200 3 37 4 0 0.062719 0.236913 0.043706 0.235145 0.042682 0.252115 + 200 3 38 37 0 0.061814 0.252380 0.062719 0.236913 0.042682 0.252115 + 200 3 39 32 5 0.175033 0.230250 0.197412 0.266652 0.190970 0.278648 + 200 3 40 39 5 0.169228 0.241047 0.175033 0.230250 0.190970 0.278648 + 200 3 41 33 32 0.107351 0.265064 0.062167 0.252427 0.063070 0.236972 + 200 3 39 41 32 0.107557 0.257647 0.107351 0.265064 0.063070 0.236972 + 200 3 40 5 37 0.169228 0.241047 0.190970 0.278648 0.177967 0.278268 + 200 3 42 40 37 0.157432 0.240882 0.169228 0.241047 0.177967 0.278268 + 200 3 42 37 38 0.107133 0.257647 0.062719 0.236913 0.061814 0.252380 + 200 3 43 42 38 0.106927 0.265064 0.107133 0.257647 0.061814 0.252380 + 200 3 46 27 28 0.199114 0.214472 0.228165 0.192806 0.244886 0.199999 + 200 3 45 46 28 0.238364 0.215161 0.199114 0.214472 0.244886 0.199999 + 200 3 45 28 25 0.238364 0.215161 0.244886 0.199999 0.261607 0.207192 + 200 3 48 45 25 0.277613 0.232045 0.238364 0.215161 0.261607 0.207192 + 200 3 47 26 27 0.238364 0.215161 0.244886 0.199999 0.228165 0.192806 + 200 3 46 47 27 0.199114 0.214472 0.238364 0.215161 0.228165 0.192806 + 200 3 48 25 26 0.277613 0.232045 0.261607 0.207192 0.244886 0.199999 + 200 3 47 48 26 0.238364 0.215161 0.277613 0.232045 0.244886 0.199999 + 200 3 49 50 47 0.150584 0.092793 0.216047 0.093965 0.165353 0.141567 + 200 3 46 49 47 0.131602 0.125349 0.150584 0.092793 0.165353 0.141567 + 200 3 51 52 46 0.066111 0.177662 0.094179 0.125928 0.131602 0.125349 + 200 3 45 51 46 0.128772 0.162687 0.066111 0.177662 0.131602 0.125349 + 200 3 52 49 46 0.094179 0.125928 0.150584 0.092793 0.131602 0.125349 + 200 3 50 48 47 0.216047 0.093965 0.162522 0.178904 0.165353 0.141567 + 200 3 48 51 45 0.162522 0.178904 0.066111 0.177662 0.128772 0.162687 + 200 3 52 53 49 0.094179 0.125928 0.112979 0.093093 0.150584 0.092793 + 200 3 57 60 56 0.275228 0.112747 0.257207 0.115315 0.258760 0.141057 + 200 3 57 54 58 0.275228 0.112747 0.258760 0.141057 0.257207 0.115315 + 200 3 62 60 57 0.252402 0.086938 0.257207 0.115315 0.275228 0.112747 + 200 3 61 62 57 0.258534 0.053177 0.252402 0.086938 0.275228 0.112747 + 200 3 63 59 60 0.235594 0.090660 0.239158 0.117630 0.257207 0.115315 + 200 3 62 63 60 0.252402 0.086938 0.235594 0.090660 0.257207 0.115315 + 200 3 61 57 58 0.258534 0.053177 0.275228 0.112747 0.257207 0.115315 + 200 3 64 61 58 0.252402 0.086938 0.258534 0.053177 0.257207 0.115315 + 200 3 64 58 59 0.252402 0.086938 0.257207 0.115315 0.239158 0.117630 + 200 3 63 64 59 0.235594 0.090660 0.252402 0.086938 0.239158 0.117630 + 200 3 65 61 64 0.243832 0.057860 0.258534 0.053177 0.252402 0.086938 + 200 3 67 62 61 0.243832 0.057860 0.252402 0.086938 0.258534 0.053177 + 200 3 69 67 61 0.227630 0.017318 0.243832 0.057860 0.258534 0.053177 + 200 3 68 69 61 0.238685 0.012272 0.227630 0.017318 0.258534 0.053177 + 200 3 70 66 67 0.214975 0.019164 0.227811 0.059249 0.242232 0.054660 + 200 3 69 70 67 0.226030 0.014118 0.214975 0.019164 0.242232 0.054660 + 200 3 68 61 65 0.238685 0.012272 0.258534 0.053177 0.243832 0.057860 + 200 3 71 68 65 0.227630 0.017318 0.238685 0.012272 0.243832 0.057860 + 200 3 71 65 66 0.226030 0.014118 0.242232 0.054660 0.227811 0.059249 + 200 3 70 71 66 0.214975 0.019164 0.226030 0.014118 0.227811 0.059249 + 200 3 69 68 71 0.281983 0.286552 0.273467 0.268926 0.293042 0.268925 + 200 3 70 69 71 0.301558 0.286552 0.281983 0.286552 0.293042 0.268925 + 200 3 72 57 56 0.275021 0.164458 0.275228 0.112747 0.258760 0.141057 + 200 3 73 72 56 0.257208 0.160718 0.275021 0.164458 0.258760 0.141057 + 200 3 73 56 55 0.257208 0.160718 0.258760 0.141057 0.240558 0.141057 + 200 3 74 73 55 0.239394 0.156977 0.257208 0.160718 0.240558 0.141057 + 200 3 75 54 57 0.257208 0.160718 0.258760 0.141057 0.275228 0.112747 + 200 3 72 75 57 0.275021 0.164458 0.257208 0.160718 0.275228 0.112747 + 200 3 74 55 54 0.239394 0.156977 0.240558 0.141057 0.258760 0.141057 + 200 3 75 74 54 0.257208 0.160718 0.239394 0.156977 0.258760 0.141057 + 200 3 76 75 72 0.253157 0.180008 0.257208 0.160718 0.275021 0.164458 + 200 3 78 72 73 0.253157 0.180008 0.275021 0.164458 0.257208 0.160718 + 200 3 79 72 78 0.261071 0.207675 0.275021 0.164458 0.253157 0.180008 + 200 3 80 79 78 0.244350 0.200482 0.261071 0.207675 0.253157 0.180008 + 200 3 80 78 77 0.244350 0.200482 0.253157 0.180008 0.236437 0.172816 + 200 3 81 80 77 0.227629 0.193289 0.244350 0.200482 0.236437 0.172816 + 200 3 82 76 72 0.244350 0.200482 0.253157 0.180008 0.275021 0.164458 + 200 3 79 82 72 0.261071 0.207675 0.244350 0.200482 0.275021 0.164458 + 200 3 81 77 76 0.227629 0.193289 0.236437 0.172816 0.253157 0.180008 + 200 3 82 81 76 0.244350 0.200482 0.227629 0.193289 0.253157 0.180008 + 200 3 83 78 73 0.228041 0.157450 0.253157 0.180008 0.257208 0.160718 + 200 3 83 74 77 0.010896 0.173826 0.030221 0.171542 0.030211 0.186072 + 200 3 83 73 74 0.010896 0.173826 0.027572 0.152344 0.030221 0.171542 + 200 3 84 62 67 0.224922 0.092328 0.252402 0.086938 0.243832 0.057860 + 200 3 85 84 67 0.234343 0.058419 0.224922 0.092328 0.243832 0.057860 + 200 3 85 67 66 0.242693 0.293848 0.257041 0.280071 0.271001 0.293848 + 200 3 86 60 59 0.177360 0.182742 0.190422 0.168813 0.190970 0.182322 + 200 3 87 56 60 0.077976 0.278416 0.058492 0.278105 0.059515 0.261134 + 200 3 86 87 60 0.078880 0.262961 0.077976 0.278416 0.059515 0.261134 + 200 3 88 75 76 0.228575 0.157379 0.257208 0.160718 0.253157 0.180008 + 200 3 88 77 74 0.048687 0.173702 0.030211 0.186072 0.030221 0.171542 + 200 3 88 74 75 0.048687 0.173702 0.030221 0.171542 0.032870 0.152344 + 200 3 90 66 65 0.270332 0.280071 0.242693 0.280071 0.256957 0.266646 + 200 3 90 65 64 0.234782 0.058300 0.243832 0.057860 0.252402 0.086938 + 200 3 89 90 64 0.225426 0.092159 0.234782 0.058300 0.252402 0.086938 + 200 3 91 59 58 0.197143 0.193774 0.190970 0.182322 0.202943 0.176043 + 200 3 91 58 54 0.078529 0.262902 0.059515 0.261134 0.058492 0.278105 + 200 3 92 91 54 0.077624 0.278369 0.078529 0.262902 0.058492 0.278105 + 200 3 93 86 59 0.157025 0.220323 0.177360 0.182742 0.190970 0.182322 + 200 3 94 93 59 0.169278 0.219952 0.157025 0.220323 0.190970 0.182322 + 200 3 95 87 86 0.123160 0.291053 0.077976 0.278416 0.078880 0.262961 + 200 3 93 95 86 0.123367 0.283636 0.123160 0.291053 0.078880 0.262961 + 200 3 94 59 91 0.169278 0.219952 0.190970 0.182322 0.197143 0.193774 + 200 3 39 94 91 0.175033 0.230250 0.169278 0.219952 0.197143 0.193774 + 200 3 39 91 92 0.122943 0.283636 0.078529 0.262902 0.077624 0.278369 + 200 3 41 39 92 0.122737 0.291053 0.122943 0.283636 0.077624 0.278369 + 200 3 98 81 82 0.198578 0.214955 0.227629 0.193289 0.244350 0.200482 + 200 3 97 98 82 0.237828 0.215644 0.198578 0.214955 0.244350 0.200482 + 200 3 97 82 79 0.237828 0.215644 0.244350 0.200482 0.261071 0.207675 + 200 3 100 97 79 0.277077 0.232528 0.237828 0.215644 0.261071 0.207675 + 200 3 99 80 81 0.237828 0.215644 0.244350 0.200482 0.227629 0.193289 + 200 3 98 99 81 0.198578 0.214955 0.237828 0.215644 0.227629 0.193289 + 200 3 100 79 80 0.277077 0.232528 0.261071 0.207675 0.244350 0.200482 + 200 3 99 100 80 0.237828 0.215644 0.277077 0.232528 0.244350 0.200482 + 200 3 101 102 99 0.093918 0.060677 0.064873 0.008074 0.128772 0.023499 + 200 3 98 101 99 0.131602 0.060837 0.093918 0.060677 0.128772 0.023499 + 200 3 50 49 98 0.216047 0.093965 0.150584 0.092793 0.131602 0.060837 + 200 3 97 50 98 0.165353 0.044619 0.216047 0.093965 0.131602 0.060837 + 200 3 49 101 98 0.150584 0.092793 0.093918 0.060677 0.131602 0.060837 + 200 3 102 100 99 0.064873 0.008074 0.162523 0.007282 0.128772 0.023499 + 200 3 100 50 97 0.162523 0.007282 0.216047 0.093965 0.165353 0.044619 + 200 3 49 53 101 0.150584 0.092793 0.112979 0.093093 0.093918 0.060677 + 200 3 106 109 105 0.276038 0.111820 0.258018 0.114388 0.259570 0.140130 + 200 3 106 103 107 0.276038 0.111820 0.259570 0.140130 0.258018 0.114388 + 200 3 111 109 106 0.253212 0.086011 0.258018 0.114388 0.276038 0.111820 + 200 3 110 111 106 0.259344 0.052251 0.253212 0.086011 0.276038 0.111820 + 200 3 112 108 109 0.236404 0.089734 0.239969 0.116704 0.258018 0.114388 + 200 3 111 112 109 0.253212 0.086011 0.236404 0.089734 0.258018 0.114388 + 200 3 110 106 107 0.259344 0.052251 0.276038 0.111820 0.258018 0.114388 + 200 3 113 110 107 0.253212 0.086011 0.259344 0.052251 0.258018 0.114388 + 200 3 113 107 108 0.253212 0.086011 0.258018 0.114388 0.239969 0.116704 + 200 3 112 113 108 0.236404 0.089734 0.253212 0.086011 0.239969 0.116704 + 200 3 114 110 113 0.244642 0.056933 0.259344 0.052251 0.253212 0.086011 + 200 3 116 111 110 0.244642 0.056933 0.253212 0.086011 0.259344 0.052251 + 200 3 118 116 110 0.228440 0.016391 0.244642 0.056933 0.259344 0.052251 + 200 3 117 118 110 0.239495 0.011345 0.228440 0.016391 0.259344 0.052251 + 200 3 119 115 116 0.215785 0.018237 0.228621 0.058323 0.243042 0.053733 + 200 3 118 119 116 0.226840 0.013191 0.215785 0.018237 0.243042 0.053733 + 200 3 117 110 114 0.239495 0.011345 0.259344 0.052251 0.244642 0.056933 + 200 3 120 117 114 0.228440 0.016391 0.239495 0.011345 0.244642 0.056933 + 200 3 120 114 115 0.226840 0.013191 0.243042 0.053733 0.228621 0.058323 + 200 3 119 120 115 0.215785 0.018237 0.226840 0.013191 0.228621 0.058323 + 200 3 118 117 120 0.281998 0.286363 0.273507 0.268912 0.292915 0.268858 + 200 3 119 118 120 0.301405 0.286310 0.281998 0.286363 0.292915 0.268858 + 200 3 121 106 105 0.275831 0.163531 0.276038 0.111820 0.259570 0.140130 + 200 3 122 121 105 0.258018 0.159791 0.275831 0.163531 0.259570 0.140130 + 200 3 122 105 104 0.258018 0.159791 0.259570 0.140130 0.241368 0.140130 + 200 3 123 122 104 0.240204 0.156051 0.258018 0.159791 0.241368 0.140130 + 200 3 124 103 106 0.258018 0.159791 0.259570 0.140130 0.276038 0.111820 + 200 3 121 124 106 0.275831 0.163531 0.258018 0.159791 0.276038 0.111820 + 200 3 123 104 103 0.240204 0.156051 0.241368 0.140130 0.259570 0.140130 + 200 3 124 123 103 0.258018 0.159791 0.240204 0.156051 0.259570 0.140130 + 200 3 125 124 121 0.253968 0.179082 0.258018 0.159791 0.275831 0.163531 + 200 3 127 121 122 0.253968 0.179082 0.275831 0.163531 0.258018 0.159791 + 200 3 128 121 127 0.261881 0.206749 0.275831 0.163531 0.253968 0.179082 + 200 3 129 128 127 0.245160 0.200044 0.261881 0.206749 0.253968 0.179082 + 200 3 129 127 126 0.245160 0.200044 0.253968 0.179082 0.237247 0.171889 + 200 3 130 129 126 0.228440 0.192363 0.245160 0.200044 0.237247 0.171889 + 200 3 131 125 121 0.245160 0.200044 0.253968 0.179082 0.275831 0.163531 + 200 3 128 131 121 0.261881 0.206749 0.245160 0.200044 0.275831 0.163531 + 200 3 130 126 125 0.228440 0.192363 0.237247 0.171889 0.253968 0.179082 + 200 3 131 130 125 0.245160 0.200044 0.228440 0.192363 0.253968 0.179082 + 200 3 132 127 122 0.228851 0.156523 0.253968 0.179082 0.258018 0.159791 + 200 3 132 123 126 0.011312 0.173640 0.030637 0.171355 0.030627 0.185885 + 200 3 132 122 123 0.011312 0.173640 0.027988 0.152158 0.030637 0.171355 + 200 3 133 111 116 0.225733 0.091401 0.253212 0.086011 0.244642 0.056933 + 200 3 134 133 116 0.235153 0.057493 0.225733 0.091401 0.244642 0.056933 + 200 3 134 116 115 0.242050 0.280102 0.256397 0.266324 0.270357 0.280102 + 200 3 135 109 108 0.114718 0.242062 0.096125 0.237714 0.107549 0.230485 + 200 3 136 105 109 0.043887 0.224199 0.024403 0.223887 0.025426 0.206917 + 200 3 135 136 109 0.044791 0.208744 0.043887 0.224199 0.025426 0.206917 + 200 3 137 124 125 0.229385 0.156453 0.258018 0.159791 0.253968 0.179082 + 200 3 137 126 123 0.049103 0.173515 0.030627 0.185885 0.030637 0.171355 + 200 3 137 123 124 0.049103 0.173515 0.030637 0.171355 0.033285 0.152158 + 200 3 139 115 114 0.270357 0.293527 0.242719 0.293527 0.256983 0.280102 + 200 3 139 114 113 0.235592 0.057373 0.244642 0.056933 0.253212 0.086011 + 200 3 138 139 113 0.226236 0.091233 0.235592 0.057373 0.253212 0.086011 + 200 3 140 108 107 0.114381 0.219414 0.107549 0.230485 0.096125 0.223256 + 200 3 140 107 103 0.044440 0.208685 0.025426 0.206917 0.024403 0.223887 + 200 3 141 140 103 0.043535 0.224152 0.044440 0.208685 0.024403 0.223887 + 200 3 42 135 108 0.157432 0.240882 0.114718 0.242062 0.107549 0.230485 + 200 3 142 42 108 0.150984 0.230456 0.157432 0.240882 0.107549 0.230485 + 200 3 43 136 135 0.089072 0.236835 0.043887 0.224199 0.044791 0.208744 + 200 3 42 43 135 0.089278 0.229419 0.089072 0.236835 0.044791 0.208744 + 200 3 142 108 140 0.150984 0.230456 0.107549 0.230485 0.114381 0.219414 + 200 3 93 142 140 0.157025 0.220323 0.150984 0.230456 0.114381 0.219414 + 200 3 93 140 141 0.088854 0.229419 0.044440 0.208685 0.043535 0.224152 + 200 3 95 93 141 0.088648 0.236835 0.088854 0.229419 0.043535 0.224152 + 200 3 145 130 131 0.199388 0.214029 0.228440 0.192363 0.245160 0.200044 + 200 3 144 145 131 0.238638 0.214718 0.199388 0.214029 0.245160 0.200044 + 200 3 144 131 128 0.238638 0.214718 0.245160 0.200044 0.261881 0.206749 + 200 3 147 144 128 0.277888 0.231602 0.238638 0.214718 0.261881 0.206749 + 200 3 146 129 130 0.238638 0.214718 0.245160 0.200044 0.228440 0.192363 + 200 3 145 146 130 0.199388 0.214029 0.238638 0.214718 0.228440 0.192363 + 200 3 147 128 129 0.277888 0.231602 0.261881 0.206749 0.245160 0.200044 + 200 3 146 147 129 0.238638 0.214718 0.277888 0.231602 0.245160 0.200044 + 200 3 52 51 146 0.094179 0.125928 0.066111 0.177662 0.044813 0.114213 + 200 3 145 52 146 0.075733 0.093093 0.094179 0.125928 0.044813 0.114213 + 200 3 102 101 145 0.064873 0.008074 0.093918 0.060677 0.075733 0.093093 + 200 3 144 102 145 0.044813 0.071973 0.064873 0.008074 0.075733 0.093093 + 200 3 101 52 145 0.093918 0.060677 0.094179 0.125928 0.075733 0.093093 + 200 3 51 147 146 0.066111 0.177662 0.013893 0.093093 0.044813 0.114213 + 200 3 147 102 144 0.013893 0.093093 0.064873 0.008074 0.044813 0.071973 + 200 3 101 53 52 0.093918 0.060677 0.112979 0.093093 0.094179 0.125928 + 200 3 133 115 112 0.212919 0.294286 0.224687 0.277917 0.224700 0.294657 + 200 3 115 138 112 0.224687 0.277917 0.235944 0.294236 0.224700 0.294657 + 200 3 30 12 9 0.212919 0.294217 0.224687 0.277848 0.224700 0.294589 + 200 3 12 35 9 0.224687 0.277848 0.235944 0.294167 0.224700 0.294589 + 200 3 66 89 63 0.224667 0.277958 0.235923 0.294276 0.224679 0.294698 + 200 3 139 138 115 0.238666 0.273548 0.235944 0.294236 0.224687 0.277917 + 200 3 133 134 115 0.212919 0.294286 0.210358 0.273548 0.224687 0.277917 + 200 3 30 31 12 0.212919 0.294217 0.210358 0.273479 0.224687 0.277848 + 200 3 36 35 12 0.238666 0.273479 0.235944 0.294167 0.224687 0.277848 + 200 3 84 66 63 0.212898 0.294327 0.224667 0.277958 0.224679 0.294698 + 200 3 84 85 66 0.212898 0.294327 0.210338 0.273588 0.224667 0.277958 + 200 3 90 89 66 0.238645 0.273588 0.235923 0.294276 0.224667 0.277958 + 200 3 149 148 39 0.166748 0.236729 0.170180 0.230346 0.175033 0.230250 + 200 3 40 149 39 0.169228 0.241047 0.166748 0.236729 0.175033 0.230250 + 200 3 150 149 40 0.159775 0.236631 0.166748 0.236729 0.169228 0.241047 + 200 3 42 150 40 0.157432 0.240882 0.159775 0.236631 0.169228 0.241047 + 200 3 152 151 93 0.166778 0.224258 0.159535 0.224478 0.157025 0.220323 + 200 3 94 152 93 0.169278 0.219952 0.166778 0.224258 0.157025 0.220323 + 200 3 151 153 142 0.159535 0.224478 0.155964 0.230468 0.150984 0.230456 + 200 3 93 151 142 0.157025 0.220323 0.159535 0.224478 0.150984 0.230456 + 200 3 148 152 94 0.170175 0.230312 0.166776 0.224298 0.169328 0.219924 + 200 3 39 148 94 0.175059 0.230249 0.170175 0.230312 0.169328 0.219924 + 200 3 153 150 42 0.155964 0.230468 0.159775 0.236631 0.157432 0.240882 + 200 3 142 153 42 0.150984 0.230456 0.155964 0.230468 0.157432 0.240882 + 200 3 149 154 148 0.166748 0.236729 0.163163 0.230485 0.170180 0.230346 + 200 3 150 154 149 0.159775 0.236631 0.163163 0.230485 0.166748 0.236729 + 200 3 152 154 151 0.166778 0.224258 0.163163 0.230485 0.159535 0.224478 + 200 3 151 154 153 0.159535 0.224478 0.163163 0.230485 0.155964 0.230468 + 200 3 148 154 152 0.170180 0.230346 0.163163 0.230485 0.166778 0.224258 + 200 3 153 154 150 0.155964 0.230468 0.163163 0.230485 0.159775 0.236631 + 200 3 156 155 95 0.227125 0.251646 0.221165 0.252256 0.218204 0.247186 + 200 3 143 156 95 0.229722 0.247186 0.227125 0.251646 0.218204 0.247186 + 200 3 155 157 96 0.221165 0.252256 0.217468 0.257553 0.212188 0.257609 + 200 3 95 155 96 0.218204 0.247186 0.221165 0.252256 0.212188 0.257609 + 200 3 157 158 41 0.217468 0.257553 0.221105 0.262626 0.218145 0.267702 + 200 3 96 157 41 0.212188 0.257609 0.217468 0.257553 0.218145 0.267702 + 200 3 158 159 44 0.221105 0.262626 0.227288 0.263166 0.229981 0.267568 + 200 3 41 158 44 0.218145 0.267702 0.221105 0.262626 0.229981 0.267568 + 200 3 160 156 143 0.229586 0.257489 0.227125 0.251646 0.229722 0.247186 + 200 3 43 160 143 0.235341 0.257486 0.229586 0.257489 0.229722 0.247186 + 200 3 159 160 43 0.227288 0.263166 0.229586 0.257489 0.235341 0.257486 + 200 3 44 159 43 0.229981 0.267568 0.227288 0.263166 0.235341 0.257486 diff --git a/data/base/texpages/page-12-player-buildings.png b/data/base/texpages/page-12-player-buildings.png index 2ffd0e592..748005d22 100644 Binary files a/data/base/texpages/page-12-player-buildings.png and b/data/base/texpages/page-12-player-buildings.png differ diff --git a/data/mods/multiplay/Makefile.am b/data/mods/multiplay/Makefile.am index 9c3c618ef..eead28fc0 100644 --- a/data/mods/multiplay/Makefile.am +++ b/data/mods/multiplay/Makefile.am @@ -2,15 +2,13 @@ stamp: touch stamp %.wz: $(srcdir)/% stamp - (cd $(srcdir)/$(notdir $<) && zip -ru0 $(abs_builddir)/$@ $(filter-out stamp,$(filter-out $<,$(^:$ 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - +/* +DyDo-AI Rel 2.0.8 +Mod Developer: "DylanDog" on http://forums.wz2100.net/ +AI webpage: http://www.obooma.net/dydo/ + +DyDo-AI is for skirmish & multiplayer games only. +DyDo-AI 2.x can be played on WZ 2.3.x only + +################################################################# +For changelog, bug reporting and downloads see DyDoAI homepage: +http://www.obooma.net/dydo/ +################################################################# + + +________________ CHANGELOG ___________________________________ + +See Dydo website + +{fix} In map with scavengers an error was generated as AI is not able to identify scavenger base +{fix} Fixed a bug which reduced the tanks production +{fix} Fixed a bug which could cause AI to attak with few units +{fix} Mobile repair turret was researched too late +{change} Improved the truck selection for building tasks +{change} Changed the number of building to be built, now DyDo decreses them by one too if the map has very low power. +{change} Reduced the number of Repair Facilities to be built +{change} Changed a bit the rules concerning the building of tanks +{change} Light bodies are not build anymore if heavy bodies are vailable +{change} Minor changes on attack activation events +{change} DyDo now builds artillery to defend the base + + +ToDo: +Improve lassat targets, intoduce droid targets! +Improve the way the units are gathered. dyDo should be abale to attack from various sides. + +*/ +#define DYDOBP_RELEASE "DyDo-AI ver 2.0.8" + +#define GAME_TIME_IN_SECS (gameTime / 10) +#define GAME_TIME_IN_MIN (gameTime / 10 / 60) +#define TIME_MINUTE 600 +#define MAX_WHILE_LOOPS 99 +#define BIG_MAP 120 +#define PLAYER_NUMBER 0 +#define TEAM_NUMBER 1 + +//gametype +#define GT_2PLAYERS_1HP 0 +#define GT_4PLAYERS_1HP_2T 1 +#define GT_4PLAYERS_1HP_34T 2 +#define GT_8PLAYERS_1HP_23T 3 +#define GT_8PLAYERS_1HP_4567T 4 +#define GT_4PLAYERS_2HP_2T 5 +#define GT_4PLAYERS_2HP_34T 6 +#define GT_8PLAYERS_2HP_23T 7 +#define GT_8PLAYERS_2HP_4567T 8 +#define GT_8PLAYERS_3HP_23T 9 +#define GT_STANDARD 10 + +//stats +#define OC_WEAPON_COST 0 +#define OC_RESLABS 1 +#define OC_PHYTON 2 +#define OC_MANTIS 3 +#define OC_TIGER 4 +#define OC_CYBORGS 5 +#define OC_TANKS 6 +#define OC_VTOLS 7 +#define OC_DERRICKS 8 +#define OC_DEF_STRUCT 9 +#define OC_CYB_POWER 10 +#define OC_TK_POWER 11 +#define OC_VTOL_POWER 12 +#define OC_CYB_HP 13 +#define OC_TK_HP 14 +#define OC_VTOL_HP 15 + +#define WUI_TOTUNITS 0 +#define WUI_POWER 1 +#define WUI_HP 2 + +//used with AIPersonality +#define AI_STANDARD 1 +#define AI_VTOL 2 +#define AI_TURTLE 3 +#define AI_CYBORG 4 + +//select tank template +#define BODY_HEAVY 0 +#define BODY_MEDIUM 1 +#define BODY_LIGHT 2 +#define WEAPON_AR 0 +#define WEAPON_AT 1 +#define WEAPON_AP 2 + +//used with minDefDroids[][x] +#define MINDEF_TANKS 0 +#define MINDEF_CYBORGS 1 +#define MINDEF_VTOLS 2 + +#define EVENT_CHECK_NUMBER 23 + +#define NUM_AI_PERSONALITIES 4 +#define MAX_PLAYERS 8 +#define TILE 128 +#define MAX_DROIDS 150 + +#define STR_TANK_FACTORY 0 +#define STR_RESLAB 1 +#define STR_CYB_FACTORY 2 +#define STR_VTOL_FACTORY 3 + +#define MAX_DEFSTR_DERRICKS 3 +#define MAX_DEFSTR_SPOT 3 +#define MAX_REPAIRFAC 5 + +#define VERY_LOW_POWER_MAP 0 +#define LOW_POWER_MAP 1 +#define NORMAL_POWER_MAP 2 +#define HIGH_POWER_MAP 3 + +//harvTrucks+buildTrucks+defTrucks +#define MIN_BUILDING_TANKS 6 +#define MIN_CYB_CONSTENG 4 + +#define TIME_MOVE_TOGATEWAYS 70 +#define THREAT_RANGE_TILES 8 +//used for repairing and building derricks +#define THREAT_RANGE_TILES_SHORT 7 +#define THREAT_RANGE_TILES_LONG 10 + +#define BUILDDEF_GRP 0 +#define CYBENG_GRP 1 +#define BUILD_GRP 2 +#define HARVEST_GRP 3 + +#define STRUCT_REPAIR_DAMAGE 25 + +#define RED_ALERT 3 +#define YELLOW_ALERT 2 +#define GREEN_ALERT 1 +#define ALERT_INACTIVE 0 + +//used to compare combat strenghts +#define COMBAT_RANGE (TILE * 12) + +//repairing untis +#define MAX_REPAIR_UNITS 2 +#define MIN_HEALT_REPAIR_BASE 80 +#define MIN_HEALT_SWITCH_TO_TANK 95 +#define MIN_HEALT_SWITCH_TO_CYBORG 95 +#define DAMAGE_REPAIR_LEVEL 50 +#define DAMAGE_REPAIR_LEVEL_LOW 20 +#define VTOL_DAMAGE_REPAIR_LEVEL 75 +#define STRUCT_REPAIR_DAMAGE 25 + +//tanks +#define MIN_ATTACKING_TANKS 10 +#define MAX_ATTACK_TANKS_ADD 12 +#define MIN_DEFUNIT_DEFEND 2 +#define MIN_SURVIVOR_TANKS 3 + +#define MIN_HELPING_UNITS 5 +//this is for both cybDefGRP and tkDefGRP, therefore the max helping is 10! +#define MAX_HELPING_UNITS 5 +//attack enemy and defend with defGrp only if we have at least these number of units +#define MIN_DEFUNIT_ATTACK 5 + +//cyborgs +#define MIN_DEFCYB_DEFEND 2 +#define MIN_ATT_CYBORGS 10 +#define MAX_ATTACK_CYBORG_ADD 12 +#define MIN_SURVIVOR_CYBORGS 3 + +//VTOLs - code cleaning stopped here +#define MAX_VTOLS 15 +#define MAX_VTOLS_PERS2 25 +//attack only if this number of VTOLs has been reached +#define MIN_VTOLS_ATTACK_DERRICK 2 +#define MIN_VTOLS_ATTACK_BASE 7 +#define MIN_VTOLS_DEFEND_BASE 1 +//Personality 2 aims for a quick buoild of these VTOLs +#define MIN_VTOLS 3 +#define MIN_VTOLS_PERS2 5 +#define AA_THREAT_RANGE (TILE * 18) + +//defend +#define MAX_DEFEND_RANGETILES 45 +#define MIN_BASE_DEF_STRUCTS 12 +#define MAX_BASE_DEF_STRUCTS 20 + +//AA +#define RANGE_BUILD_AADEF 7*TILE +#define MAX_AADEF_INRANGE 3 +#define MIN_AA_INBASERANGE 7 +//add to nRangeBase +#define RANGETILES_DEFSTR_AROUNDBASE 10 + +//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades +#define MIN_TOT_UNITS 8 +//build derrick defences only after this time +#define VALID_TIME_DERRICK_DEF 3600 +//change the units to add to build up the attacking group every this interval time +#define TIME_CHANGE_TANKSTOADD 3000 + +//build more then 2 repair centres aonly after this time +#define VALID_TIME_REPAIRFAC 4200 +//build 4-5 Research and Cyborg Factory after this time +#define VALID_TIME_EXTRABUILD 4800 +//build oilDef only after this time +#define VALID_TIME_CYBATTACK 6000 +//after 4 min all oil should be got +#define TIME_HARVESTING_PHASE 3000 +//after this time alert is set to DEACTIVATED anyway +#define TIME_TO_RESET_ALERT 100 +//build gateway def only after this time +#define VALID_TIME_GATEWAYDEF 3600 +//start researching VTOL stuff only after this time +#define TIME_START_VTOLRESEARCH 3000 +//force the building of a defence every x min +#define TIME_TOFORCE_BUILDDEF 1200 +//turtle AI +#define TIME_TOFORCE_BUILDDEF_2 900 + +//power +#define VERY_LOW_POWER 0 +#define LOW_POWER 1 +#define HIGH_POWER 2 +#define TIME_SWITCH_WORKSTRUCT 600 + +#define BEST_VTOL_TEMPLATES 3 + +public INT player; // player for this instance. +//public BOOL LIFE; // feature switch +public INT numMaxDerricks; // rate of exploration + +// structures +public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; +public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; +public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; +public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; +public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; +public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; +public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; +public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; +public int nStat,aStat[20][8],structsLimits[4][4],structsBuildLimits[4][4],numDefStructs,minDefDroids[4][3]; + +//keep even if not used +public RESEARCHSTAT nexusDefence, powerAddOn; + +public STRUCTURESTAT pickStrQueue[15]; +public INT pickStrQueueDepth; +public STRUCTURESTAT pickDefQueue[50]; +public INT pickDefQueueDepth; +public STRUCTURESTAT pickWallDefQueue[60]; +public INT pickWallDefQueueDepth; +public STRUCTURESTAT pickFortQueue[4]; +public INT pickFortQueueDepth; + +private STRUCTURESTAT pickStructureQueue[80]; +private INT pickStructureQueueDepth; + +public BOOL showAIPersonality; +public int AIPersonality,AIstrength; +private int nAI_Pers; + +// unit templates +public TEMPLATE tmpl0[63]; +public TEMPLATE tmpl1[5]; +public TEMPLATE superCyb[20]; +public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; + +// special - template recognizer +public PROPULSION cyborgPropulsion; + +//build +private INT buildX,buildY; +public FEATURESTAT oilRes; + + +// GROUPS +public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; +private GROUP xGroup; + +// generic +private STRUCTURE structure,structure2,structure3; +private DROID droid,droid2; +private FEATURE feature,feature2; +private BASEOBJ baseobj; +private INT count,count1,count2,count3,count4; +private BOOL boolResult,boolResult2,boolResult3; + +private INT aPlayers[8][8]; + +public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; + +//Shielding systems (2:45 hours after game begins) (KICK) +public RESEARCHSTAT SHIELDS; + +// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +///////////////////////////////////////////// + +//// DEBUG-MODE +public BOOL EnableSliders;// DylanDog + +//// T1 cyborgs problem +public RESEARCHSTAT CyborgLegs; + +private INT oilX,oilY; + +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; +public WEAPON FlashLight,PulseLaser,HeavyLaser; +public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; +public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; +public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; +public WEAPON SeraphMissile ,ArchangelMissile; +public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; +public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; +public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; +public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; +public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; +public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; +public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; + +public STRUCTURESTAT baseStructs[10]; + +public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; + +// ========================= PRIVATE ===================================== +private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; +private BASEOBJ attackCybObj,attackTankObj; +private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; +private FEATURE _oilRes; +private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; +private STRUCTURE _derrick,_struct; + +private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; +private bool bAttackedByLongRangeWeap,sentToGateway,isBackinBase; +private bool alertIsOn; +private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; +private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; +private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; +private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; +private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; +private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; +private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; +private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; +private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; + + +private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; +private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; +private int numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; +private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; +private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; +private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; +private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; +private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; +private int nArtilleryPos,nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; +private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; +private int tTargetTime,tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; +private int tLastRRBuilt,tLastArtilleryBuilt,tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; +private int tTanksReSentToGathering,tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; +private int tCybReSentToGathering,tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; +private int tEveryMin, tEvery3Min; +private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; +private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; +private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t, _pos; +private int nTotCybAR, nTotCybAP, nTotCybAT, nTotCybKK, nTotCybErr; + +private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; +private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; +private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; + +private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; +private int nAttHumanPlayer,nAttAIPlayer; + +private int _nWeapon, _nBody; + +public TEMPLATE vtols[18]; +public int numAAinBase,tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; +private BASEOBJ defTargetVTOL,attTargetVTOL; + +private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; + +public PROPULSION Half_Track,TrackedProp,HoverProp; +public BODY Viper; + +//communication +private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; +private int lastHelpPlayer, _fromPlayer, _choice; +private string message,_message,_cstr; +private bool _bBlipMessage,_bToHuman; + +private int tBeaconSent; + +private bool _DEBUG,_DEBUG1,_dbg, bRunning; + +//=================================================================== +// USED FOR PRODUCTION ONLY + +private int nProd1, nProd2, nProd3, nProd4, nProd5; +private float fProd1, fProd2, fProd3, fProd4, fProd5; +private int tProd1, tProd2, tProd3, tProd4, tProd5; +private bool bProd1, bProd2, bProd3, bProd4, bProd5; +private string sProd1, sProd2, sProd3, sProd4, sProd5; + + +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//trigger finishStructsTr (every,300); +#region triggers + +trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); +trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); +trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); +trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); +trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); +trigger consoleTr (CALL_CONSOLE, ref sender, ref message); +trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); + +trigger defFromLongRangeWeapTr(wait,1); +trigger difficultyModifierTr (wait,3); +trigger shutDownAITr (every,4); + +trigger AIcheckTr (every,10); +trigger buildPowerGeneratorsTr(every,10); +trigger buildRepFirstTr (every,10); +trigger harvesterOperateTr (every,10); +trigger AIbrainTr (every,10); + +trigger manageDefCyborgsTr (every,20); +trigger manageDefTankTr (every,20); +trigger unitRepairSwitchTr (every,20); +trigger upgradeStructuresTr (every,20); +trigger defendGatewaysPointTr (every,20); +trigger buildRippleRocketsTr (every,20); +trigger buildAAdefTr (every,25); +trigger defendBaseTr (every,30); +trigger defendDerrickTr (every,30); +trigger buildArtilleryTr (every,30); +trigger reSortUnitsTr (every,30); +trigger TankAttackTr (every,30); +trigger CyborgAttackTr (every,30); +trigger SelectCyborgTemplateTr(every,30); +trigger SelectTankTemplateTr (every,30); +trigger manageHelpTeamTr (every,30); +trigger sendBackDamagedUnitsTr(every,30); +trigger manageRepairTeamTr (every,30); +trigger doResearchTr (every,30); +trigger buildBaseTr (every,30); +trigger buildRepFacSuppAttackTr (every,30); +trigger vtolStructsTr (every,30); +trigger buildVtolsTr (every,30); +trigger VTOLmicroManagerTr (every,30); +trigger threatCheckTr (every,30); + +trigger manageIdleTrucksTr (every,35); + +trigger manageDefVTOLTr (every,40); + +trigger unitAssignationCheckTr(every,50); +trigger truckGroupSliderTr (every,50); +trigger evDebugTr (every,100); +trigger activateAttackTr (every,100); +trigger evPrintDebugTr (every,100); +trigger vtolEnablerTr (every,200); +trigger updateBaseDetailsTr (every,200); +trigger showPlayerInfoTr (every,200); +trigger useLassatTr (every,3000); +trigger showAImessageTr (every,6000); + +trigger VTOLhunterTr (every,15); + +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + +//event 0 +event evDebug; + +//main event 1-2 +event AIbrain; +event AIcheck; + +//harvesting - events 3-4 +event truckGroupSlider; +event harvesterOperate; + + +//building ebvents 5-9 +event upgradeStructures; +event buildBase; +event buildPowerGenerators; +event buildRepFirst; +event buildRepFacSuppAttack; + + +//Research event 10 +event doResearch; + +//defense events 11-13 +event defendBase; +event defendDerrick; +event defendGatewaysPoint; + +//event 14-16 +event manageDefTank; +event manageDefCyborgs; +event manageDefVTOL; + +//ebent 17 +event AIattacked; + +//attack event 18-20 +event activateAttack; +event CyborgAttack; +event TankAttack; + +//VTOL event 21-23-24 +event vtolEnabler; +event vtolStructs; +event vtolDefend; +event buildAAdef; + +//repair event 25-27 +event manageRepairTeam; +event unitRepairSwitch; +event sendBackDamagedUnits; + +//idleTrucks event 28 +event manageIdleTrucks; + +//Units production 29-31 +event SelectCyborgTemplate; +event SelectTankTemplate; +event buildVtols; + + +//Group Management 32-34 +event droidBuilt; +event unitAssignationCheck; +event reSortUnits; + +//uncategorized 35-40 +event initialisedEvent; +event useLassat; +event difficultyModifier; +event updateBaseDetails; +event showPlayerInfo; +event showAImessage; + +//chat 41-45 +event multiMsgEv; +event beaconEv; +event manageHelpTeam; +event shutDownAI; +event defFromLongRangeWeap; + +//debug 46-48 +event evPrintDebug; +event VTOLmicroManager; +event reassignPlayers; + +//event 49 +event threatCheck; +event VTOLhunter; + +event buildArtillery; +event buildRippleRockets; + + +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + +function DROID getADroid(GROUP _theGRP); +function bool droidOrderIdle(DROID _droid); +function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck +function void displayMsg(STRING _message); +function FEATURE closestOilRes(DROID _droid, int _x, int _y); +function STRUCTURE closestDerrickToDefend(); +function int getNumDerricks(int _player); +//reset oilResTargetId, oilResTargetX, oilResTargetY +function void checkDerrickIsBuilt(int _player); +//return a free position on the array of oilResTargetId & Co. +function int getOilResTargetFree(); +function void debugCentreView(DROID _droid); +//gateways and defences +function void buildGatewayDef(DROID _defTruck,int _pos); +function bool isDefStrComplete(); +function bool helpBuild(int _group); +function bool repairDefStructs(int _group); +function bool repairStructs(int _group); +function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck +function int updateGateways(); +function void initAssignUnitToGrp(); + +//base stats +function void updateBaseRange(); +function void updateBaseCoord(); + +//structure +function int numStructsByType(STRUCTURESTAT _structure, int _player); + +//research +function int do_Research(STRUCTURE _resFac, int _lastResIndex); +function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); +function int find_Research(int _searchStart, int _techTree, int whichArray); + +//repair +function DROID unitToBeRepaired(GROUP _group); +function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); +function DROID idleRepairDroid(int _x, int _y); +function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); +function void attackedByDroid(DROID _droid); +//used when struct attacks my base +function void attackedByStruct(STRUCTURE _struct); +function void sendIdleBackToTheBase(int _group); + +//brain +function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); +function int getTotDerricksMap(); +function bool bAnyOilResLeft(); +function int numRemainingOilRes(); + +function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); +function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); +function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); +function int getRandomEnemyPlayer(bool _mustBeHuman); +function int getNearestEnemyPlayer(bool _humanPlayer); +function int getEnemy_baseCoord( int _player, STRING sCoord ); +function bool friendlyPlayer(int _playerToCheck); + +//VTOLS +function void buildRearmPads(); +function void vtolFactoryBuildVtol(STRUCTURE _factory); + +//others +function void deactivateTankAttack(); +function void deactivateCybAttack(); +function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); +function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); +function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); +function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); +function void harvestNearOilRes(); +function void displayErrMsg(STRING _message); + +//AI personality +function void SetDyDoPersonality(int nPersonality, int _player); + +function bool aiResponsibleForPlayer(int _player); +function int _random(int x); +function void assignDroidToGrp(DROID droid); +function void manageVeryLowPower(); +function void manageVeryLowPower2(); +function void manageVeryLowPower3(); +function void manageVeryLowPower4(); +function STRUCTURE getVTOLstructTarget(); +function int numEnemyAAInRange(int _x, int _y, int _range); +function bool canHelpAlly(int _sender); +function bool bHelpingAnyAlly(); +function void helpAlly(int _ally); +function void deactivateHelp(); +//Communication +function void processCommand(STRING _message, int _sender, bool _bBlipMessage); +function void notifyAll(STRING _cstr); +function void sendMsgToAllAllies(STRING _message); +function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); +function void notifyStatus(int _choice, int _player); +function bool haveBeacon(int _player); +function bool haveAnyBeacon(); +function bool beaconTimeout(int _player); +function void updateBeacons(); +function void updatePlayersStats(); +function int getDroidsInfo(int _player, int _choice); +function int getTeamNumber(int _player); +function BASEOBJ getTargetObj(); +function float getPowerIndex(int _player); +function int gameType(); +function int getWeaponUnitsInfo( int _player, int _choice); +function int getTargetEnemy(bool _dbg); +function bool bHasHumanEnemies(int _player); +function void displayStats(int _choice); + +function bool coordChanged(DROID _droid); +function bool hasCoordStored(DROID _droid); +function int getFreePosDroid(); +function void updateDroidCoord(DROID _droid); +function void storeDroidCoord(DROID _droid); +function void checkIfDroidIsStuck(GROUP _group); +function void cleanDroidPos(int _droidId); +function void cleanDroidCoordArray(); +function void stopDroidHarvesting(); +function bool incrementDroidCounter(int droid_id); +function bool isPlayerStillLive(int _player); +function bool buildDefStruct(DROID _droid, int _x, int _y ); +function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); +function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); +function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); +function void printDebug(STRING _message); +function void printDebug1( STRING _message); +function bool createAIalliance(int _player1, int _player2); +function STRUCTURESTAT getDefStruct(); +function DROID closestIdleDroid(GROUP _group, int _x, int _y); +function DROID closestDroidCanBuild(GROUP _group, int _x, int _y); +function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); +function STRUCTURE getAAStruct(bool _bVTOLTarget); +function void updateDefendRange(); +function void shutDownThisAI(); +function void activateAI(); +function bool buildHeavyTank( int _nWeapon, STRUCTURE _struct ); +function bool buildMediumTank( int _nWeapon, STRUCTURE _struct ); +function bool buildLightTank( int _nWeapon, STRUCTURE _struct ); +function int checkBestBody(int _nBody, int _nWeapon, STRUCTURE _struct ); + + + +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* +//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + +// HouseKeeping + +event initialisedEvent(CALL_GAMEINIT) +{ + + + player = getPlayer();//trunk + + lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; + miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; + + //DEBUGMESSAGE + dbgMsgOn(player, false); + debugCenterView = false; + _DEBUG = true;//print off debug messages every 5 min + _DEBUG1 = true;//print off debug messages + bRunning = false; //true if AI controls this player + + count =0; + while (count < 4){ + aGatewayPosX[count] = -1; + aGatewayPosY[count] = -1; + count++; + } + nAI_Pers = 0; + nTotCyborgBuilt = 0; + nTotTankBuilt = 0; + tFinishOilHack = gameTime; + nAIcheck = 0; + tAIbrain = 0; + defTruckSentTime= -1; + sentToGateway = false; + isBackinBase = false; + bNeedDerrick = false; + bAttackTeamAttacked = false; + bFinalAttack_1vs1 = false; + nAllyBeingHelped = -1; + nStructToBeBuilt = 0; + tDefVtolAction = 0; + tDefTankAction = 0; + tDefCybAction = 0; + tLastResearch = 0; + tLastHelp = 0; + tLastArtilleryBuilt = 0; + tLastRRBuilt = 0; + nHelpX = -1; + nHelpY = -1; + tLastbuildBaseDef = 0; + nRealGatewaysFound = 0; + lastBuildDefX = -1; + lastBuildDefY = -1; + lastResIndex = -1; + nMidX = -1; + nMidY = -1; + gatherDefTankX = -1; + gatherDefTankY = -1; + gatherDefCybX = -1; + gatherDefCybY = -1; + nTotGateways = 3; + nTotOilInAtStart = 0; + lastDisplayAI = 0; + lastDisplayAIcheck = 0; + lastTruckBuilt = 0; + lastCybEngBuilt = 0; + nPlayersInGame = -1; + nAAPos = 0; + nHumanPlayers = 0; + nTeam = -1; + nEnemyPlayers = -1; + nLastEnemyPlayer = -1; + nLastTimeBuiltRepFac = 0; + numDefStrAtGateway = -1; + lastTimeRepairBuilt = 0; + nLastDefSpotUpdate = -1; + tLastPowerSwitch = 0; + nProdSelect = 0; + nDamageLevelRepair = 0; + nFinalAttacks = 0; + tLastFinalAttack = 0; + alertIsOn = false; + alertX = baseX; + alertY = baseY; + alertTime = gameTime; + bCybAttIsOn = false; + lCybSentToGatheringPoint = false; + bCybAlreadyGathered = false; + bAttackedByVTOL = false; + cybAlertX = -1; + cybAlertY = -1; + cybAttackX = 0; + cybAttackY = 0; + nCybGatheringX = -1; + nCybGatheringY = -1; + targetPlayerCyb = -1; + tCybSentToGathering = 0; + tCybReSentToGathering = 0; + tCybAttackAction = 0; + tTankAttackAction = 0; + tHelpAction = 0; + tChangeTimeTankToAdd = 0; + tLastPowerGen = 0; + tLastTankAttack = 0; + tTotalAttack = random(3000); + tLastCyborgAttack = 0; + tLastVTOLFactBuild = 0; + tLastAAbuilt = 0; + //tank attack + bTankAttIsOn = false; + lTankSentToGatheringPoint = false; + bTankAlreadyGathered = false; + nTankGatheringX = -1; + nTankGatheringY = -1; + tankAttackX = -1; + tankAttackY = -1; + targetPlayerTank = -1; + targetPlayerVTOL = -1; + tTanksSentToGathering = 0; + tTanksReSentToGathering = 0; + pickWallDefQueueDepth = 0; + lastHelpPlayer = -1; + nKineticX = -1; + nKineticY = -1; + nAttHumanPlayer = 0; + nAttAIPlayer = 0; + tEveryMin = gameTime; + tEvery3Min = gameTime; + tBeaconSent = 0; + nTanksDefGrp=0; + nAttackingUnitsToAdd = random(MAX_ATTACK_TANKS_ADD); + nCybAttUnitsToAdd = random(MAX_ATTACK_CYBORG_ADD); + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildDefGateway = false; + lStopTankProduction = false; + lStopBuildTankProd = false; + lStopCybEngProd = false; + lStopCybProduction = false; + lStopResearch = false; + lStopCheapResearch = false; + lStopBuildRepFacility = false; + lStopBuildingStructures = false; + lMinBaseStructBuilt = false; + lStopResLabUpgrade = false; + lStopVTOLFactBuilding = false; + lStopVTOLProduction = false; + attackCybObj = NULLOBJECT; + bDroidSelected = false; + tBeaconTimeout = 45; //in secs + bAttackedHumanDerrick = false;//alternate attacks + bAttackedByMortars = false; + bAttackedByLongRangeWeap = false; + bPowerNormalized = false; + nProd1 = 1; + tLastCybMech = gameTime; + nCybMechanic = 0; + tTargetTime = gameTime; + nArtilleryPos = 0; + + num_aDroid = 50; + count = 0; + while ( count < num_aDroid ){ + aDroid_Id[count] = -1; + aDroid_X[count] = -1; + aDroid_Y[count] = -1; + aDroid_counter[count] = 0; + count++; + } + + count=0; + while ( count < MAX_PLAYERS){ + beaconX[count] = -1; + beaconY[count] = -1; + tBeacon[count] = -1; + count++; + } + + aPower[VERY_LOW_POWER] = 300; + aPower[LOW_POWER] = 600; + aPower[HIGH_POWER] = 1000; + + count = 0; + while ( count < 11 ) + { + oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; + count++; + } + + count = 0; + nStat = 20; + while ( count < nStat ) + { + //reset array players stats + count2 = 0; + while ( count2 < MAX_PLAYERS ) + { + aStat[count][count2] = -1; + count2++; + } + count++; + } + + numMaxDerricks = 40; //max number of derricks per player + + structure = getStructure(playerHQ, player); + if(structure != NULLOBJECT) + { + baseX = structure.x; + baseY = structure.y; + } + else + { + groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); + if(buildGroup.members > 0) + { + baseX = buildGroup.x; + baseY = buildGroup.y; + } + else + { + baseX = (128*mapWidth)/2; + baseY = (128*mapHeight)/2; + } + } + + initAssignUnitToGrp(); + //initialises all the no go areas to 0. + //Should be called when a new map is loaded + initAllNoGoAreas(); + + //for all players, avoid attacking themselves + createAlliance(player,player); + + //makes a research available to a player regardless of its pre-requisites + enableResearch(CyborgLegs, player); + completeResearch(CyborgLegs, player); + + //LIFE = true; + nBaseRange=TILE*5; + + //nDefend range + updateDefendRange(); + + //estimate the range for the gateways and the defend range + if ( nDefendRange > 0 ){ + gatewaysRangeTiles = nDefendRange; + } else { + if ( max(mapWidth,mapHeight) <= 92 ){ + gatewaysRangeTiles = 22; + } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ + gatewaysRangeTiles = 28; + } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ + gatewaysRangeTiles = 36; + } else { + gatewaysRangeTiles = 40; + } + } + + //time to force droids production. This is the time gone from last attack, if reached + //droids production is forced + nAttackTime = 7000 + random(4000); + + //store the numb of derricks at the beginning + nDerricksAtStart = getNumDerricks(player); + + //oilRes available in the map + nFreeOilRes = numRemainingOilRes(); + + //player stats, updates nPlayersInGame + updatePlayersStats(); + + //_______ AI PERSONALITY SETTINGS ________________ + SetDyDoPersonality(AIPersonality, player); + + //search if gateways have been added in the map + nRealGatewaysFound = updateGateways(); + + //AIstrength + if ( AIstrength <= 0 or AIstrength > 5){ + AIstrength = 1+random(5); + } + + //initialize eventCheckTime[] + count=0; + while (count < EVENT_CHECK_NUMBER){ + eventCheckTime[count] = gameTime; + eventCheckCounter[count] = 0; + count++; + } + + //set trigger time + count=0; + while (count < EVENT_CHECK_NUMBER){ + eventCheckTrigger[count] = 250; + eventCheckReport[count] = 0; + count++; + } + eventCheckTrigger[0] = 3050;//lassat + + if( aiResponsibleForPlayer(player) ) + { + bRunning = true; + activateAI(); + } else { + shutDownThisAI(); + } + + printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); + displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); + +} +//============================================= +event VTOLhunter (inactive){ + + //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); + + if ( vtolHunterGr.members < 0 ){ + setEventTrigger(VTOLhunter, inactive); + exit; + } + + /* + if ( oVTOLhunterTarget == NULLOBJECT ){ + //oilRes + if (bOilResLeft){ + droid = getADroid(VTOLhunter); + _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach + if ( _oilRes == NULLOBJECT ){ + } + + } + //move + } else { + } + */ + +} +//==============================print stats and debug messages =============== +event evPrintDebug (inactive) +{ + + local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; + local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; + local int _HQx,_HQy,_count; + + if ( gameTime - tEveryMin >= 600 ) { + printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); + tEveryMin = gameTime; + } + + if ( gameTime - tEvery3Min >= 1800 ) { + structure = getStructure(playerHQ, player); + if(structure != NULLOBJECT) + { + _HQx = structure.x; + _HQy = structure.y; + } else { + _HQx = 0; + _HQy = 0; + } + + _count = 0; + while ( _count < numWallWeaps ){ + _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; + _count++; + } + _count = 0; + while ( _count < numDefStructs ){ + _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; + _count++; + } + _count = 0; + while ( _count < numFortressDef ){ + _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; + _count++; + } + + + _count = 0; + while ( _count < 20){ + _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; + _count++; + } + while ( _count < 40){ + _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; + _count++; + } + while ( _count < numRes[0]){ + _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; + _count++; + } + + _count = 0; + while ( _count < 23){ + _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; + _count++; + } + while ( _count < numRes[1]){ + _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; + _count++; + } + + + _count = 0; + while ( _count < numCheapRes[0] ){ + _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; + _count++; + } + + _count = 0; + while ( _count < numRes[9] ){ + _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; + _count++; + } + + _count = 0; + while (_count < MAX_PLAYERS){ + if (isPlayerStillLive(_count)){ + _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; + } + _count++; + } + + _count=0; + while( _count < 2){ + if (isPlayerStillLive(_count)){ + _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + while( _count < 4 ){ + if (isPlayerStillLive(_count)){ + _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + while( _count < 6 ){ + if (isPlayerStillLive(_count)){ + _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + while( _count < MAX_PLAYERS ){ + if (isPlayerStillLive(_count)){ + _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + + printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") "); + printDebug("Cyborgs Built: (AR-AT-AP-KK)(Error) ("& nTotCybAR &" - "& nTotCybAT &" - "& nTotCybAP &" - "& nTotCybKK &")("& nTotCybErr &") nTotCyborgBuilt("& nTotCyborgBuilt &") nTotTankBuilt("& nTotTankBuilt &")"); + printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); + printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); + printDebug("Stats3:" & _sPlInf1 ); + printDebug("Stats4:" & _sPlInf2 ); + printDebug("Stats5:" & _sPlInf3 ); + printDebug("Stats1:" & _sPlInf4 ); + printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); + printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); + printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); + printDebug("Res 1: " & _str0 ); + printDebug("Res 2: " & _str1 ); + printDebug("Res 3: " & _str2 ); + printDebug("Res 4: " & _str3 ); + printDebug("Res 5: " & _str4 ); + printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); + printDebug("VTOL Res: "& _str5); + count = getTargetEnemy(true); + printDebug("------------------------------------------------------------------"); + tEvery3Min = gameTime; + } +} +//==============================event used to fix errors=============== +event evDebug (inactive) +{ + + //displayMsg("evDebug: time("& gameTime &")"); + if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ + //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); + groupAddGroup(tankDefGroup, helpGroup); + orderGroup(tankDefGroup, DORDER_RTB); + + //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ + //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); + //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } + } + + //Search for stucked droids + + cleanDroidCoordArray(); + checkIfDroidIsStuck(buildGroup); + checkIfDroidIsStuck(buildDefGroup); + checkIfDroidIsStuck(harvesterGroup); + +} +//----------------------------------------------------------------- +event shutDownAI(inactive) +{ + + //check if all enemies are dead + count = 0; + boolResult = true; + boolResult2 = false; + + while ( count < MAX_PLAYERS and boolResult ){ + if ( !friendlyPlayer(count) ){ + if ( isPlayerStillLive(count) ){ + boolResult = false; + } + } + count++; + } + //then check if this AI is dead + if ( !isPlayerStillLive(player) ){ + boolResult2 = true; + printDebug(" ________shutting down this AI: game lost______"); + } + if ( boolResult ){ + printDebug(" _________shutting down this AI: game won_______"); + } + + //check if this player is dead... + if ( boolResult or boolResult2 ){ + + //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); + + shutDownThisAI(); + + } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } + + +} + +//---------------------------------------------------- +function void activateAI() +{ + local string strMessage; + //activate all events!! + setEventTrigger(droidBuilt, droidBuiltTr); + setEventTrigger(AIattacked, AIattackedTr); + setEventTrigger(vtolDefend, vtolDefendTr); + //setEventTrigger(consoleEv, inactive); + setEventTrigger(multiMsgEv, multiMsgTr); + setEventTrigger(beaconEv, beaconTr); + setEventTrigger(reassignPlayers, reassignPlayersTr); + + + setEventTrigger(evDebug, evDebugTr); + setEventTrigger(AIbrain, AIbrainTr); + setEventTrigger(buildBase, buildBaseTr); + setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); + setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); + setEventTrigger(buildRepFirst, buildRepFirstTr); + setEventTrigger(defendBase, defendBaseTr); + setEventTrigger(defendDerrick, defendDerrickTr); + setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); + setEventTrigger(difficultyModifier, difficultyModifierTr); + setEventTrigger(buildAAdef, buildAAdefTr); + setEventTrigger(doResearch, doResearchTr); + setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); + setEventTrigger(manageDefTank, manageDefTankTr); + setEventTrigger(activateAttack, activateAttackTr); + setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); + setEventTrigger(manageRepairTeam, manageRepairTeamTr); + setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); + setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); + setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); + setEventTrigger(showPlayerInfo, showPlayerInfoTr); + setEventTrigger(truckGroupSlider, truckGroupSliderTr); + setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); + setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); + setEventTrigger(updateBaseDetails, updateBaseDetailsTr); + setEventTrigger(upgradeStructures, upgradeStructuresTr); + setEventTrigger(useLassat, useLassatTr); + setEventTrigger(vtolEnabler, vtolEnablerTr); + setEventTrigger(multiMsgEv, multiMsgTr); + setEventTrigger(beaconEv, beaconTr); + setEventTrigger(shutDownAI, shutDownAITr); + setEventTrigger(evPrintDebug, evPrintDebugTr); + setEventTrigger(harvesterOperate,harvesterOperateTr); + setEventTrigger(AIcheck,AIcheckTr); + setEventTrigger(threatCheck,threatCheckTr); + setEventTrigger(VTOLhunter,VTOLhunterTr); + setEventTrigger(buildArtillery,buildArtilleryTr); + setEventTrigger(buildRippleRockets,buildRippleRocketsTr); + tFinishOilHack = gameTime; + + + +} +//================================================================ +//this event checks that most important events are not stucked +event AIcheck (inactive) //event 3 +{ + local string errorMSG, errorMSG2, errorMSG3, errorMSG4; + local int tTimeGone; + + if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error + + + errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; + errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; + errorMSG3 = "DEBUG REPORT: "; + + //TEST + + count=0; + while (count < EVENT_CHECK_NUMBER){ + tTimeGone = (gameTime - eventCheckTime[count]); + if ( tTimeGone > eventCheckTrigger[count] ){ + if (eventCheckCounter[count] < 4){ + nAIcheck++; + eventCheckCounter[count] = eventCheckCounter[count] + 1; + eventCheckReport[count] = eventCheckReport[count] + 1; + errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; + } + } else { + if (eventCheckReport[count] > 0){ + eventCheckReport[count] = 0; + eventCheckCounter[count] = 0; + } + } + count++; + } + + + count=0; + while (count < EVENT_CHECK_NUMBER){ + if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ + //dbg(errorMSG,player); + //dbg(errorMSG2,player); + //dbg(errorMSG3,player); + printDebug1( "######## AIcheck: " & errorMSG3 ); + lastDisplayAIcheck = gameTime; + //reactivateEvent + //if( count == 7 ){ + //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); + //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); + //} + } + count++; + } + + //DEBUG MESSAGE + if ( gameTime - lastDisplayAIcheck >= 600 ){ + //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); + lastDisplayAIcheck = gameTime; + } + +} +//----------------------------------------------------------------- +event showAImessage(wait,60) { + //let human player know he is playing with DyDo-AI mod + local string strMessage; + local bool bWebSite; + + count = 0; + while(count < MAX_PLAYERS) + { + + if ( isHumanPlayer(count) and count != player ){ + if (showAIPersonality){ + if(allianceExistsBetween(count,player)){ + strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; + } else { + strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; + } + } else { + strMessage = DYDOBP_RELEASE & " is active"; + } + msg( strMessage, player, count ); + } + count++; + } + setEventTrigger(showAImessage, showAImessageTr); +} +//----------------------------------------------------------------- + // find my lassat + // fire it at my attack objective. +event useLassat(inactive) +{ + + local BASEOBJ _targetStruct; + local int _loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; + local bool _mustBeHuman; + local STRUCTURESTAT _aTargets[7]; + + eventCheckTime[0] = gameTime; + + _nTargets = 7; + _aTargets[0] = powGen; + _aTargets[1] = factory; + _aTargets[2] = cybFactory; + _aTargets[3] = vtolFactory; + _aTargets[4] = lassat; + _aTargets[5] = playerHQ; + _aTargets[6] = uplinkCenter; + + _targetPl = -1; + _targetStruct = NULLOBJECT; + + if ( !isStructureAvailable(lassat,player) ){ + exit; + } + + if ( AIstrength > 3 and bHasHumanEnemies(player) ){ + _mustBeHuman = true; + } else { + _mustBeHuman = false; + } + + + //find the nearest enemy player + _targetPl = getNearestEnemyPlayer(_mustBeHuman); + if (_targetPl < 0 ){ + _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player + } + + if ( _targetPl < 0 ){ + //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); + printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); + exit; + } + //get a target struct + _pos = random(_nTargets); + _loop = 0; + while( _loop < _nTargets and _targetStruct == NULLOBJECT) + { + if ( AIstrength < 4 ){ + initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs + } else { + initEnumStruct(false, _aTargets[_pos], _targetPl, _targetPl);//get also enemy structs not visible to player + } + _targetStruct = enumStruct(); + _loop++; + _pos++; + if ( _pos == _nTargets ){ _pos = 0; } + } + + //target found!! + boolResult=false; + if(_targetStruct != NULLOBJECT) + { + printDebug1("useLassat: target found !! _targetPl("& getPlayerName(_targetPl) &") _pos("& _pos &")"); + initEnumStruct(FALSE,lassat,player,player); + structure = enumStruct(); + while(structure != NULLOBJECT) + { + if( structureComplete(structure) ) + { + //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); + printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); + skFireLassat(player,_targetStruct); + boolResult = true; + } + structure= enumStruct(); + } + } else { + //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); + printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &") _loop("& _loop &")"); + } + + if ( !boolResult ){ + //dbg("dbg->useLassat: Lassat hasn`t fire",player); + printDebug1("useLassat: Lassat hasn`t fired "); + } + +} +//================================================================ +/* +add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false +defendGatewaysPoint: buildDefGroup - defend gateways +defendBase: buildGroup/harvestGrpoup - defend base +defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick +*/ +event AIbrain (inactive) +{ + + local string _sWallDef, _sDef; + local BASEOBJ _attackObj; + local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; + + //if ( gameTime - tProd1 > 600 ){ + //addPower(500, player); + //tProd1 = gameTime; + //} + + eventCheckTime[1] = gameTime; + + //hack to put all at same power when debugging + if ( isHumanPlayer(player) and !bPowerNormalized ){ + bPowerNormalized = true; + count = playerPower(player); + if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } + count2 = count1 - count; + if ( count2 > 300 ){ + addPower(500,player); + printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); + //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); + } else { + printDebug1(" No need to add 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); + } + } + + ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); + + //reset alert + if (gameTime - alertTime > TIME_TO_RESET_ALERT){ + alertIsOn = false; + alertX = -1; + alertY = -1; + alertTime = -1; + alertLevel= ALERT_INACTIVE; + } + + + nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; + nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; + nMyDerricks = getNumDerricks(player); + nPower = playerPower(player); + nFactories = numStructsByType(factory, player); + nVTOLFactories = numStructsByType(vtolFactory, player); + nResLabs = numStructsByType(resLab, player); + nCybFact = numStructsByType(cybFactory, player); + nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); + nWorkingFact = getNumStructNotIdle(factory); + nWorkingLab = getNumStructNotIdle(resLab); + nWorkingCybFac = getNumStructNotIdle(cybFactory); + //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); + nFreeOilRes = numRemainingOilRes(); + bOilResLeft = bAnyOilResLeft(); + //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart + //update power levels + + //check how many tanks are in tankDefGroup + nTanksDefGrp=0; + if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ + initIterateGroup(tankDefGroup); + droid = iterateGroup(tankDefGroup); + while(droid != NULLOBJECT) + { + //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); + if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) + { + nTanksDefGrp++; + } + droid = iterateGroup(tankDefGroup); + } + } + + if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ + //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); + aPower[VERY_LOW_POWER] = 400; + aPower[LOW_POWER] = 700; + aPower[HIGH_POWER] = 1100; + } + if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ + //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); + aPower[VERY_LOW_POWER] = 500; + aPower[LOW_POWER] = 800; + aPower[HIGH_POWER] = 1200; + } + + //reactivate all (but the fact upgrades!!!) + lStopTankProduction = false; + lStopBuildTankProd = false; + lStopCybEngProd = false; + lStopCybProduction = false; + lStopFactUpgrade = true; + lStopFactUpgrade2 = true; + lStopResearch = false; + lStopCheapResearch = false; + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildDefGateway = false; + lStopBuildRepFacility = false; + lStopBuildingStructures = false; + lStopResLabUpgrade = false; + lStopVTOLProduction = false; + lStopVTOLFactBuilding = false; + + + if (nFactories >= structsBuildLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsBuildLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsBuildLimits[nAI_Pers][STR_CYB_FACTORY] ){ + lMinBaseStructBuilt = true; + } else { + lMinBaseStructBuilt = false; + } + + + + if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ + tLastPowerSwitch = gameTime; + nProdSelect++; + if (nProdSelect == 8){ nProdSelect = 0; } + } + + if ( nPower < 100 )//=========== VERY LOW POWER ============================= + { + lStopTankProduction = true; + lStopCybProduction = true; + lStopResearch = true; + lStopCheapResearch = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildDefGateway = true; + //lStopBuildRepFacility = true; + lStopBuildingStructures = true; + lStopVTOLProduction = true; + lStopVTOLFactBuilding = true; + + } + else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) + { + + if ( AIPersonality == AI_STANDARD ){ + manageVeryLowPower(); + } + if ( AIPersonality == AI_VTOL ){ + manageVeryLowPower2(); + } + if ( AIPersonality == AI_TURTLE ){ + manageVeryLowPower3(); + } + if ( AIPersonality == AI_CYBORG ){ + manageVeryLowPower4(); + } + + //always block with this power level + //lStopBuildDefGateway = true; + //lStopVTOLFactBuilding = true; + //lStopBuildingStructures = true;//activated if not min struct reached + + } //================== POWER END ============================== + + //do not build too many VTOLs + if ( vtolDefendGr.members > 6 ){ + if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ + lStopVTOLProduction = true; + } + } + + count = 0; + count2 = 0; + while ( count < numCheapRes[0] ){ + if ( researchFinished(researchCheap[0][count], player) ){ + count2++; + } + count++; + } + if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } + //try to minimize the spending of money for researches + //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } + + //resLab upgrade + if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ + lStopResLabUpgrade = true; + } + + //repair Facility + if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) + { lStopBuildRepFacility = true; } + + if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) + { lStopBuildRepFacility = true; } + + if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) + { lStopBuildRepFacility = true; } + + if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) + { lStopBuildRepFacility = true; } + + //build def only when enough structs have been built!! + if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ + lStopBuildDef = true; + lStopBuildDefGateway = true; + lStopBuildRepFacility = true; + lStopVTOLFactBuilding = true; + lStopVTOLProduction = true; + } + + + //start building gateway def a bit later + if ( gameTime < VALID_TIME_GATEWAYDEF) + {lStopBuildDefGateway = true;} + + //defend only on alert points!! + if ( defSpotX <= 0 ) + {lStopBuildDef = true;} + + //have been attacked and have no troups remaining + if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== + { + + if ( nPower > 100 ){ + if (AIPersonality == AI_CYBORG ){ + lStopCybProduction = false; + if ( nWorkingFact >= 1){lStopTankProduction = true; } + } else { + lStopTankProduction = false; + lStopCybProduction = false; + } + } + + count = numTemplatesInProduction(cybcondroid, player); + count = count + numTemplatesInProduction(constructor, player); + count = count + numTemplatesInProduction(constructor2, player); + if ( count + cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { + //I am in trouble need tanks not trucks!!! + lStopBuildTankProd = true; + lStopCybEngProd = true; + } + + if ( nPower < aPower[LOW_POWER] ){ + lStopResearch = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildDefGateway = true; + lStopBuildRepFacility = true; + lStopBuildingStructures = true; + lStopCheapResearch = true; + lStopResLabUpgrade = true; + lStopVTOLProduction = true; + lStopVTOLFactBuilding = true; + } + + } else { // ======================= ACTIVATE EVENTS ========================= + + //activate more tanks and cyb engineers if AA def are required + if ( !lMinBaseStructBuilt ){ + _nMaxTrucks = MIN_BUILDING_TANKS+1; + _nMaxCybEngineers = MIN_CYB_CONSTENG+1; + } else { + _nMaxTrucks = MIN_BUILDING_TANKS; + _nMaxCybEngineers = MIN_CYB_CONSTENG; + } + + + //Trucks & cybEng + if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ + if ( nPower > 100 ){ lStopBuildTankProd = false;} + } else { + lStopBuildTankProd = true; + } + if ( cyborgConstructGroup.members + numTemplatesInProduction(cybcondroid, player) < _nMaxCybEngineers){ + if ( nPower > 100 and gameTime > TIME_HARVESTING_PHASE ){ lStopCybEngProd = false; } + } else { + lStopCybEngProd = true; + } + + //At least one research every 4 min + if( gameTime - tLastResearch > 4*TIME_MINUTE ) + { lStopResearch = false; } + + //upgrades + if ( lMinBaseStructBuilt ) { + if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) + { lStopFactUpgrade = false; } + if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) + { lStopFactUpgrade2 = false; } + } + + //activate building of structs + if ( !lMinBaseStructBuilt ) + { lStopBuildingStructures = false; } + + } + + if ( AIPersonality == AI_TURTLE ){ + if ( gameTime - tLastbuildBaseDef > (TIME_TOFORCE_BUILDDEF_2) ) + { + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildDefGateway = false; + } + } else { + if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) + { + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildDefGateway = false; + } + } + + //stop all for 2 minutes long but droids production + if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ + lStopTankProduction = false; + lStopCybProduction = false; + if (nPower < aPower[VERY_LOW_POWER]){ + lStopBuildTankProd = true; + lStopResearch = true; + lStopCheapResearch = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildDefGateway = true; + lStopBuildRepFacility = true; + lStopBuildingStructures = true; + lStopResLabUpgrade = true; + lStopVTOLProduction = true; + lStopVTOLFactBuilding = true; + } + nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; + } else { + nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; + } + + + //power superiority check in 1vs1 games + bForceResPowUp = false; + if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ + if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index + if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine + bForceResPowUp = true;//force research of power + lStopResearch = false; + } + } + } + + //checking power in all type of games + _player=0; + while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ + if (isPlayerStillLive(_player)){ + if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index + if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine + bForceResPowUp = true;//force research of power + lStopResearch = false; + } + } + } + _player++; + } + + //droid production guarantee + if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ + if ( nTanksDefGrp < 12 ){ + if ( nTanksDefGrp < 8 ){ + if ( nWorkingFact < 2 ){lStopTankProduction = false; } + } else { + if ( nWorkingFact < 1 ){lStopTankProduction = false; } + } + } + } + + if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ + if ( nTotCyborgs < 20 ){ + if ( nTotCyborgs < 12 ){ + if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } + } else { + if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } + } + } + } + + if (AIPersonality == AI_VTOL){ + if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ + if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ + if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } + } else { + if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } + } + } + } else { + if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ + if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } + if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } + } + } + if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ + if ( nTotCyborgs < 12 ){ + if ( nTotCyborgs < 8 ){ + if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } + } else { + if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } + } + } + } + + //Research guarantee + if ( nTotTanks+nTotCyborgs > 16 ){ + if ( nWorkingLab < 2 ){lStopResearch = false; } + } + + numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); + if ( numAAinBase < 5 and bAttackedByVTOL ) { + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildDefGateway = true; + } + + //attack guarantee + /* + if ( tLastCyborgAttack > tLastTankAttack ){ + nTime = tLastCyborgAttack; + } else { + nTime = tLastTankAttack; + } + if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ + lStopCybProduction = false; + lStopTankProduction = false; + lStopBuildTankProd = false; + if (nPower < aPower[VERY_LOW_POWER]){ + if (AIPersonality != AI_CYBORG ){ + lStopResearch = true; + } + lStopCheapResearch = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildDefGateway = true; + lStopBuildRepFacility = true; + lStopBuildingStructures = true; + lStopResLabUpgrade = true; + lStopVTOLProduction = true; + lStopVTOLFactBuilding = true; + } + } + */ + + if ( gameTime - lastDisplayAI >= 110 ){ + //displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); + //displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); + lastDisplayAI = gameTime; + } + + tAIbrain = gameTime; +} +/*====================================================================== + VTOL STUFF +========================================================================*/ +event vtolEnabler(inactive) +{ + ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); + dbg("vtolEnabler: __________ ("& skVtolEnableCheck(0) &") 1("& skVtolEnableCheck(1) &") 7("& skVtolEnableCheck(7) &")__________",player); + + if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. + { + //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); + setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. + setEventTrigger(buildVtols, buildVtolsTr); + setEventTrigger(manageDefVTOL, manageDefVTOLTr); + //setEventTrigger(buildAAdef, buildAAdefTr); + //setEventTrigger(vtolAttack, vtolAttackTr); + setEventTrigger(vtolEnabler,inactive); // turn off this event. + //dbg("----I CAN USE VTOLS----", me); + } + +} +//-------------------------------------------------------------------- +event defFromLongRangeWeap(inactive) +{ + local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; + + /* + if( !aiResponsibleForPlayer(player) ) + { + setEventTrigger(defFromLongRangeWeap, inactive); + } + else + { + */ + if ( nKineticX < 0 or nKineticY < 0 ) { + setEventTrigger(defFromLongRangeWeap, inactive); + exit; + } + + //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); + //check if CB tower has been build in range of myattacked object + //alertX&Y are based on enemyBaseObj + _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); + _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); + _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); + _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); + _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); + + droid = closestDroidCanBuild(buildDefGroup,nKineticX,nKineticY); + if ( droid == NULLOBJECT ){ + droid = closestIdleDroid(buildGroup,buildX,buildY); + } + if( droid == NULLOBJECT ){ exit; } + + //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); + buildX = nKineticX; + buildY = nKineticY; + + if (bAttackedByMortars){ + //CB Sense + if ( isStructureAvailable(CBSense,player) ){ + if ( _nCBSense == 0 ){ + if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); + } + } + } + } + + //Defences + if ( isStructureAvailable(defRippleRockets,player) ){ + if( _nRippleRocket < 1 ){ + if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); + } + } + } + } else if ( isStructureAvailable(defPepperpot,player) ) { + if( _nPepperpot < 2 ){ + if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); + } + } + } + } else if ( isStructureAvailable(defBombard,player) ) { + if( _nBombard < 3 ){ + if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); + } + } + } + } else if ( isStructureAvailable(defMortar,player) ) { + if( _nMortar < 3 ){ + if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); + } + } + } + } + + //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); + } + if (bAttackedByLongRangeWeap){ + + //CB sense + if ( isStructureAvailable(CBSense,player) ){ + if ( _nCBSense == 0 ){ + if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); + } + } + } + } + //defense + if ( isStructureAvailable(defRippleRockets,player) ){ + if( _nRippleRocket < 1 ){ + if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ + if ( droidCanReach(droid, buildX, buildY) ){ + //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); + orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); + } + } + } + } + + //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); + } + + setEventTrigger(defFromLongRangeWeap, inactive); + //} +} + +//-------------------------------------------------------------------- +event buildAAdef(inactive) +{ + local int _numAAdefInRange, _rnd; + + if (!researchFinished(HurricaneAASite,player)){ exit; } + + dbg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& numAAinBase &") attbyVTOL("& bAttackedByVTOL &") time ("& gameTime - tLastAAbuilt&") < 300",player); + + if ( numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! + if ( numAAinBase >= 2 and !bAttackedByVTOL ) { exit; }//do not set to inactive because AA def can be destroyed!! + if ( gameTime - tLastAAbuilt < 300 ){ exit; } + + //pick up the position + nAAPos++; + if ( nAAPos > 3 ){ nAAPos = 0; } + if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } + if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } + if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } + if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } + + if ( numAAinBase < 2 ){ + buildX = baseX; + buildX = baseY; + } + if ( numAAinBase == 6 ){ + buildX = baseX; + buildX = baseY; + } + + droid = closestDroidCanBuild(buildDefGroup,buildX,buildY); + if (droid == NULLOBJECT){ + droid = closestIdleDroid(buildGroup,buildX, buildY); + } + + + // build AA defenses. + if ( droid == NULLOBJECT ){ + displayMsg("buildAAdef: No idle truck found"); + exit; + } + displayMsg("buildAAdef: truck found"); + + + //find best defense we can build. + count = 0; + count2 = -1; + while( count < numGenAA) + { + if(isStructureAvailable(vtolGenStruct[count],player)) + { count2 = count; } + count = count + 1; + } + if(count2 >= 0 ){ + boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); + if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... + { + displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); + tLastAAbuilt = gameTime; + } + } else { displayMsg("buildAAdef: No AA def struc found"); } + +} + +//---------------------------------------------- +event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) +{ + local int _numAAdefInRange,_dist; + + if(enemyBaseObject != NULLOBJECT) + { + if(enemyBaseObject.type == OBJ_DROID) + { + if( isVtol( objToDroid(enemyBaseObject) ) ) + { + + bAttackedByVTOL = true;//force research of AA defences + if ( structure != NULLOBJECT ){ + _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); + } else { + _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); + } + + if ( _dist/TILE > (nDefendRange/TILE) * 3 and _dist > nBaseRange){ + //dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); + exit; + } + + droid = closestDroidCanBuild(buildDefGroup,baseX,baseY); + if (droid == NULLOBJECT){ + droid = closestIdleDroid(buildGroup, baseX, baseY); + } + + // build AA defenses. + if ( droid != NULLOBJECT ){ + if( structure != NULLOBJECT ) { + //if no AA at all in AAdefRange or enough power + _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); + if ( playerPower(player) > 100 or random(10) > 4 ){ + if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ + buildX = structure.x; + buildY = structure.y; + + //find best defense we can build. + count = 0; + count2 = -1; + while( count < numGenAA) + { + if(isStructureAvailable(vtolGenStruct[count],player)){ + count2 = count; + } + count = count + 1; + } + if( count2 >= 0 ){ + boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); + if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... + { + dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); + printDebug1("vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); + tLastAAbuilt = gameTime; + } + } //else { dbg("dbg->vtolDefend: no AA defense found",player); } + } //else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } + } //else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } + } //else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } + } //else { dbg("dbg->vtolDefend: idle droid not found",player); } + } + } + } +} + +// ------------------ build VTOL structs ----------------------- +event vtolStructs(inactive) +{ + local int _totalVTOLS; + local int _numVtolFacs,_numRearmPads; + + ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); + //displayMsg("vtolStructs: vtolStructs event called"); + + if( !isStructureAvailable(vtolFactory,player) ){ + exit; + } + + // see how many vtol factories we already have + _numVtolFacs = nVTOLFactories; + _numRearmPads = numStructsByType(vtolPad, player); + _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; + + //see if we have enough rearm pads + if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) + { + //displayMsg("vtolStructs: need rearming Pads"); + buildRearmPads(); + } + + if( lStopVTOLFactBuilding ){ + exit; + } + + //if ( gameTime - lastDisplayAI >= 90 ){ + //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsBuildLimits[STR_VTOL_FACTORY] &")"); + //} + if( _numVtolFacs < structsBuildLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) + { + // build factory + buildX = baseX; // pick a location + buildY = baseY; + boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); + if(boolResult == TRUE) + { + droid = closestDroidCanBuild(buildGroup,buildX,buildY); + if( droid != NULLOBJECT) + { + if ( droidCanReach(droid, buildX ,buildY) ){ + //displayMsg("*** vtolStructs: droid to build vtolFactory"); + orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); + tLastVTOLFactBuild = gameTime; + } + } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } + } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } + } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } +} + +// ------------- build VTOL droids -------------------- +event buildVtols(inactive) +{ + + local int _totalVTOLS; + + ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); + + //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); + + if( lStopVTOLProduction ){ + exit; + } + + _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; + // got enough vtols? + if( getDroidCount(player) >= MAX_DROIDS ){ + //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); + exit; + } + if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ + //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); + exit; + } + + + // build vtols + boolResult = true; + initEnumStruct(FALSE,vtolFactory,player,player); + structure = enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if(structureIdle(structure)) // if factory idle + { + vtolFactoryBuildVtol(structure); + boolResult = false; + } + structure = enumStruct(); + } +} + +//====================================================== +event manageDefVTOL(inactive) +{ + local int _dist,_nVTOLSRequired; + local string _dbgString; + + ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); + + if ( attTargetVTOL != NULLOBJECT ){ + _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); + //dbg("attTarget != NULLOBJECT; VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") tDefVtolAction("& tDefVtolAction &") isDerr("& bVTOLTargetIsDerrick &") dist("& _dist/TILE &"/"& nDefendRange/TILE &") AA("& numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE) &")",player); + } + if ( defTargetVTOL != NULLOBJECT ){ + _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); + //dbg("defTarget != NULLOBJECT; VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") tDefVtolAction("& tDefVtolAction &") isDerr("& bVTOLTargetIsDerrick &") dist("& _dist/TILE &"/"& nDefendRange/TILE &") AA("& numEnemyAAInRange(defTargetVTOL.x, defTargetVTOL.y, AA_THREAT_RANGE) &")",player); + } + //if ( defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT){ + //dbg("Targets == NULLOBJECTS; VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") tDefVtolAction("& tDefVtolAction &") isDerr("& bVTOLTargetIsDerrick &") ",player); + //} + + if (vtolDefendGr.members == 0){ + targetPlayerVTOL = -1; + attTargetVTOL = NULLOBJECT; + defTargetVTOL = NULLOBJECT; + exit; + } + + if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ + if ( friendlyPlayer(targetPlayerVTOL) ){ + targetPlayerVTOL = -1; + attTargetVTOL = NULLOBJECT; + defTargetVTOL = NULLOBJECT; + } + } + + if (alertIsOn){ + attTargetVTOL = NULLOBJECT; + if ( idleGroup(vtolDefendGr) == 0 ){ + exit;//allow VTOLS to stay on rearming pads + } + } else { + if ( (float)idleGroup(vtolDefendGr) < (float)(vtolDefendGr.members)*0.8 ){ + exit;//allow VTOLS to stay on rearming pads + } + } + + //VTOL are attacking something, check target is still valid and have enough VTOLs + if (bVTOLTargetIsDerrick){ + _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; + } else { + _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; + } + + if ( attTargetVTOL != NULLOBJECT ){ + _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); + if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ) + { + attTargetVTOL = NULLOBJECT; + //orderGroup( vtolDefendGr, DORDER_RTR ); + } + } + + //reset defTarget is neat to many AA defences + if ( defTargetVTOL != NULLOBJECT ){ + if ( vtolDefendGr.members <= numEnemyAAInRange(defTargetVTOL.x, defTargetVTOL.y, AA_THREAT_RANGE)*3 ){ + defTargetVTOL = NULLOBJECT; + //orderGroup( vtolDefendGr, DORDER_RTR ); + } + } + + if (alertIsOn){ //------------------------------------ + + //reset attack target + attTargetVTOL = NULLOBJECT; + + //set defTarget, this is required in case a long range was set as Target + // and in the meanwhile it happen to got attacked by groud troops. In this + // case DyDo has to reset the target. + if ( gameTime - tTargetTime > 1*TIME_MINUTE ){ + defTargetVTOL = NULLOBJECT; + } + + if (defTargetVTOL != NULLOBJECT ){ + if ( !friendlyPlayer(defTargetVTOL.player) ){//due to NEXUS +//dbg("manageDefVTOL: attack defTargetVTOL",player); + orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); + tDefVtolAction = gameTime; + } + } else { + + //alertX/Y can also be the coord of enemy indirect weapons which attacked in nDefendRange + if ( alertX > 0 and alertY > 0){ + defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); + if ( defTargetVTOL == NULLOBJECT ){ + defTargetVTOL = objStrTargetInRange(alertX,alertY,TILE*12); + } + } + if ( defTargetVTOL != NULLOBJECT ){ +//dbg("manageDefVTOL: defTargetVTOL found and attacked ",player); + orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); + tDefVtolAction = gameTime; + bVTOLTargetIsDerrick = false; + } //else { dbg("manageDefVTOL: target not found ",player); } + } + + } else {// ============ alert not on ================== + + + //=========== Search a target in DefendRange ================= + if ( vtolDefendGr.members >= MIN_VTOLS_DEFEND_BASE ){ + if ( attTargetVTOL == NULLOBJECT ){ + attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); + if ( attTargetVTOL != NULLOBJECT ){ + targetPlayerVTOL = attTargetVTOL.player; + bVTOLTargetIsDerrick = false; +//displayMsg("manageDefVTOL: found TGT STR def range"); + } + } + if ( attTargetVTOL == NULLOBJECT ){ + attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); + if ( attTargetVTOL != NULLOBJECT ){ + targetPlayerVTOL = attTargetVTOL.player; + bVTOLTargetIsDerrick = false; +//displayMsg("manageDefVTOL: found TGT DROID def range"); + } + } + } + + //getAAStruct + //================== Search target = AA structs ========================= + if ( vtolDefendGr.members >= MIN_VTOLS_ATTACK_DERRICK ){ + if ( attTargetVTOL == NULLOBJECT ){ + attTargetVTOL = getAAStruct(true); +//displayMsg("manageDefVTOL: search TGT undefended AA def"); + if ( attTargetVTOL != NULLOBJECT ){ + targetPlayerVTOL = attTargetVTOL.player; + bVTOLTargetIsDerrick = true; +//displayMsg("manageDefVTOL: found TGT undefended AA def"); + } + } + } + + //================== Search target = Enemy Derricks ========================= + if ( vtolDefendGr.members >= MIN_VTOLS_ATTACK_DERRICK ){ + if ( attTargetVTOL == NULLOBJECT ){ +//displayMsg("manageDefVTOL: search TGT Human Derrick "); + attTargetVTOL = objHumanDerrick(true, 1, 0); + if ( attTargetVTOL != NULLOBJECT ){ + targetPlayerVTOL = attTargetVTOL.player; + bVTOLTargetIsDerrick = true; +//displayMsg("manageDefVTOL: found TGT Human Derrick "); + } + } + if ( attTargetVTOL == NULLOBJECT ){ + attTargetVTOL = undefendedEnemyDerrick(true); +//displayMsg("manageDefVTOL: search TGT undefended Derrick "); + if ( attTargetVTOL != NULLOBJECT ){ + targetPlayerVTOL = attTargetVTOL.player; + bVTOLTargetIsDerrick = true; +//displayMsg("manageDefVTOL: found TGT undefended Derrick "); + } + } + } + + //================== Search target = Enemy Bases ========================= + if ( vtolDefendGr.members >= MIN_VTOLS_ATTACK_BASE ){ + + if ( attTargetVTOL == NULLOBJECT ){ + + count = 0; + while ( attTargetVTOL == NULLOBJECT and count < 5) + { + //get a target Enemy first + if ( targetPlayerVTOL < 0){ + targetPlayerVTOL = getTargetEnemy(false); + if ( targetPlayerVTOL < 0){ + targetPlayerVTOL = getRandomEnemyPlayer(false); + } + } + if ( targetPlayerVTOL > 0){ + attTargetVTOL = getVTOLstructTarget();//uses targetPlayerVTOL + } + if ( attTargetVTOL == NULLOBJECT ){ + targetPlayerVTOL = -1; + } else { + bVTOLTargetIsDerrick = false; + } + count++; + } + + } +// if ( attTargetVTOL != NULLOBJECT ){ +//displayMsg("manageDefVTOL: found TGT enemy base targetPlayerVTOL("& targetPlayerVTOL &")"); +// } else { +//displayMsg("manageDefVTOL: NO TARGETS FOUND !!!"); +// } + + } + + if (bVTOLTargetIsDerrick){ + _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; + } else { + _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; + } + + + //================== Target is not NULLOBJECT ===================== + if ( attTargetVTOL != NULLOBJECT ) + { + + _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); + if (_dist > nDefendRange){ + + //if a droid, reset target + //if ( attTargetVTOL.type == OBJ_DROID ){ + //attTargetVTOL = NULLOBJECT; + //targetPlayerVTOL = -1; + //exit; + //} + + //check if enemy has build AA def around this object and if have enough VTOLS + count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); + if ( vtolDefendGr.members < count2*3 or vtolDefendGr.members < _nVTOLSRequired ){ +//displayMsg("manageDefVTOL: reset TARGET too many defences around it ("& vtolDefendGr.members &")<("& count2*3 &") or not enough VTOLS _nVTOLSRequired("& _nVTOLSRequired &" < "& vtolDefendGr.members &")!!!"); + attTargetVTOL = NULLOBJECT; + targetPlayerVTOL = -1; + exit; + } + + //re-attacking the enemy base + if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ +//displayMsg("manageDefVTOL: attack TARGET "); + orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); + tDefVtolAction = gameTime; + }// else { +//displayMsg("manageDefVTOL: cannot attack TARGET, not enough idle VTOLS ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); + //} + + } else { //if (_dist > nDefendRange){ + + //defending the base in defend range, do not check the numbers of VTOLs + if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! + if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ +//displayMsg("manageDefVTOL: VTOLs attacking enemy to defend base"); + orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); + tDefVtolAction = gameTime; + } + } + + } //if (_dist > nDefendRange){ + } //if ( attTargetVTOL != NULLOBJECT ) + }//enderlse alertIsOn +} + +//=========================== END VTOL STUFF ======================================== +event buildBase(inactive) //event 8 +{ + local int _f,_r,_c,_v,_h,_l; + + ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); + eventCheckTime[2] = gameTime; + + if ( lStopBuildingStructures ){ + //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); + exit; + } + + _f = nFactories; + _r = nResLabs; + _c = nCybFact; + _v = nVTOLFactories; + _h = numStructsByType(playerHQ, player); + _l = numStructsByType(lassat, player); + + + boolResult = true; + droid = closestDroidCanBuild(buildGroup,baseX,baseY); + + if(droid == NULLOBJECT){ + exit; + } + + + + //check PlayerHQ first + if(_h == 0 and isStructureAvailable(playerHQ , player) ) + { + buildX = baseX; + buildY = baseY; + boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); + if(boolResult){ + if (droidCanReach(droid, buildX ,buildY)){ + //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); + orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); + boolResult = false; + } + } + } + + //check factory as second + if(_f == 0 and isStructureAvailable(factory , player) and boolResult) + { + buildX = baseX; + buildY = baseY; + boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); + if(boolResult) + { + if (droidCanReach(droid, buildX ,buildY)){ + //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); + orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); + boolResult = false; + } + } + } + + //check resLab + if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) + { + buildX = baseX; + buildY = baseY; + boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); + if(boolResult) + { + if (droidCanReach(droid, buildX ,buildY)){ + //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); + orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); + boolResult = false; + } + } + } + + //check cybfactory + if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) + { + buildX = baseX; + buildY = baseY; + boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); + if(boolResult) + { + if (droidCanReach(droid, buildX ,buildY)){ + //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); + orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); + boolResult = false; + } + } + } + + //check lassat + if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) + { + buildX = baseX; + buildY = baseY; + boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); + if(boolResult) + { + if (droidCanReach(droid, buildX ,buildY)){ + //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); + //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsBuildLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsBuildLimits[nAI_Pers][STR_RESLAB] &")("& structsBuildLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsBuildLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); + orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); + boolResult = false; + } + } + } + + //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); + //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsBuildLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsBuildLimits[nAI_Pers][STR_RESLAB] &")("& structsBuildLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsBuildLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); + + //just validate the below rows + //droid = getADroid(buildGroup); + + + if( boolResult ) + { + + if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } + + if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsBuildLimits[nAI_Pers][STR_TANK_FACTORY] ){ + nStructToBeBuilt++; + } + + if ( nStructToBeBuilt == STR_RESLAB and _r >= structsBuildLimits[nAI_Pers][STR_RESLAB] ){ + nStructToBeBuilt++; + } + + if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsBuildLimits[nAI_Pers][STR_CYB_FACTORY] ){ + nStructToBeBuilt++; + } + + if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsBuildLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ + nStructToBeBuilt++; + } + + //all base structs have been built! + if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ + nStructToBeBuilt = 0; + exit; + } + + //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); + if( isStructureAvailable(structs[nStructToBeBuilt],player) ) + { + buildX = baseX; // pick a location + buildY = baseY; + if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) + { + droid = closestDroidCanBuild(buildGroup,buildX,buildY); + if( droid == NULLOBJECT and buildGroup.members < 2 ){ + droid = pickCybEng(true); + } + if( droid != NULLOBJECT) + { + if (droidCanReach(droid, buildX ,buildY)){ + //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); + //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); + orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); + nStructToBeBuilt++; + } + } + } + } + }// if( droid != NULLOBJECT and boolResult) +} +//----------------------------------------- +event sendBackDamagedUnits(inactive) +{ + + //Check for untis to be repaired + eventCheckTime[3] = gameTime; + if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) + { + + initIterateGroup(toBeRepairedTankGroup); + droid = iterateGroup(toBeRepairedTankGroup); + while(droid != NULLOBJECT) + { + if ( droid.order != DORDER_RTR ){ + orderDroid(droid,DORDER_RTR); + //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); + } + droid = iterateGroup(toBeRepairedTankGroup); + } + + initIterateGroup(toBeRepairedCyborgGroup); + droid = iterateGroup(toBeRepairedCyborgGroup); + while(droid != NULLOBJECT) + { + if ( droid.order != DORDER_RTR ){ + orderDroid(droid,DORDER_RTR); + //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); + } + droid = iterateGroup(toBeRepairedCyborgGroup); + } + + } else { + + //send in the base to be repaired by repair tank!! + initIterateGroup(toBeRepairedTankGroup); + droid = iterateGroup(toBeRepairedTankGroup); + while(droid != NULLOBJECT) + { + + if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) + { + if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) + { + //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); + orderDroid(droid, DORDER_RTB); + } + } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } + + droid = iterateGroup(toBeRepairedTankGroup); + } + + initIterateGroup(toBeRepairedCyborgGroup); + droid = iterateGroup(toBeRepairedCyborgGroup); + while(droid != NULLOBJECT) + { + + if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) + { + if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) + { + //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); + orderDroid(droid, DORDER_RTB); + } + } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } + + droid = iterateGroup(toBeRepairedCyborgGroup); + } + + } +} +//=============================================0 +event unitRepairSwitch(inactive) +{ + + eventCheckTime[4] = gameTime; + //displayMsg("unitRepairSwitch: unitRepairSwitch START "); + + //Check for untis to be repaired + if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) + { + //defense tanks + initIterateGroup(tankDefGroup); + droid = iterateGroup(tankDefGroup); + while(droid != NULLOBJECT) + { + if( droid.health < nDamageLevelRepair ) + { + groupAddDroid(toBeRepairedTankGroup, droid); + orderDroid(droid,DORDER_RTR); + //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); + } + droid = iterateGroup(tankDefGroup); + } + + //attack tanks + initIterateGroup(tankGroup); + droid = iterateGroup(tankGroup); + while(droid != NULLOBJECT) + { + if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) + { + groupAddDroid(toBeRepairedTankGroup, droid); + orderDroid(droid,DORDER_RTR); + //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); + } + droid = iterateGroup(tankGroup); + } + + //help group + initIterateGroup(helpGroup); + droid = iterateGroup(helpGroup); + while(droid != NULLOBJECT) + { + if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) + { + groupAddDroid(toBeRepairedTankGroup, droid); + orderDroid(droid,DORDER_RTR); + //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); + } + droid = iterateGroup(helpGroup); + } + + //cyborgs - defend + initIterateGroup(cyborgDefGroup); + droid = iterateGroup(cyborgDefGroup); + while(droid != NULLOBJECT) + { + if( droid.health < nDamageLevelRepair ) + { + groupAddDroid(toBeRepairedCyborgGroup, droid); + //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); + orderDroid(droid,DORDER_RTR); + } + droid = iterateGroup(cyborgDefGroup); + } + + //cyborgs - attack + initIterateGroup(cyborgAttGroup); + droid = iterateGroup(cyborgAttGroup); + while(droid != NULLOBJECT) + { + if( droid.health < nDamageLevelRepair) + { + groupAddDroid(toBeRepairedCyborgGroup, droid); + //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); + orderDroid(droid,DORDER_RTR); + } + droid = iterateGroup(cyborgAttGroup); + } + + //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup + } else { + if ( toBeRepairedTankGroup.members > 0 ){ + groupAddGroup(tankDefGroup,toBeRepairedTankGroup); + } + if ( toBeRepairedCyborgGroup.members > 0 ){ + groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); + } + } + + + //check if units have been repaired and assign back to tank group + initIterateGroup(toBeRepairedTankGroup); + droid = iterateGroup(toBeRepairedTankGroup); + while(droid != NULLOBJECT) + { + if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) + { + //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); + if (droid.droidType == DROID_REPAIR) + { + //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); + groupAddDroid(repairGroup,droid); + } + if (droid.droidType == DROID_WEAPON) + { + //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); + groupAddDroid(tankDefGroup,droid); + } + //mixed group checks!!! + if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) + { + nTotCyborgBuilt++; + if ( AIPersonality == AI_CYBORG){ + //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); + groupAddDroid(cyborgDefGroup, droid); + } else { + if (nTotCyborgBuilt > 2){ + //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); + groupAddDroid(tankDefGroup, droid); + nTotCyborgBuilt = 0; + } else { + //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); + groupAddDroid(cyborgDefGroup, droid); + } + } + } + + } else { + orderDroid(droid,DORDER_RTR); + } + droid = iterateGroup(toBeRepairedTankGroup); + } + + //check if units have been repaired and assign back to tank group + initIterateGroup(toBeRepairedCyborgGroup); + droid = iterateGroup(toBeRepairedCyborgGroup); + while(droid != NULLOBJECT) + { + if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) + { + //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); + groupAddDroid(cyborgDefGroup,droid); + } else { + orderDroid(droid,DORDER_RTR); + } + droid = iterateGroup(toBeRepairedCyborgGroup); + } + + //if ( gameTime - lastDisplayAI >= 80 ){ + //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); + //} +} +//-------------------------------------------------------------- +event activateAttack( inactive ) +{ + local int _nTankUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; + local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; + local bool _bUseCybUnitsToo; + + local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; + local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; + local int _cybRequired,_tankRequired,_player; + local float _nMyPowerIndex,_nEnPowerIndex; + + eventCheckTime[22] = gameTime; + + + if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ + exit; + } + if ( alertLevel == RED_ALERT ){ exit; } + + // ---------------------------------------------------------------------- + //Check for Final Attack in 1vs1 game or if just one enemy player exists + _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; + if ( !bTankAttIsOn and nEnemyPlayers == 1 and (gameTime - tLastFinalAttack) > 6*TIME_MINUTE and gameTime > 20*TIME_MINUTE) + { + _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); + _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); + _nMyPowerIndex = getPowerIndex( player ); + + _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); + _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); + _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); + _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); + + bFinalAttack_1vs1 = false; + //droid superiority + if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ + if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } + if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } + if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } + } + //enemy with lower power + if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ + if ( _nMyUnitsTot > 15 ){ + if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } + if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } + if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } + } + } + //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); + } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } + + if (bFinalAttack_1vs1){ + if ( gameTime - tLastFinalAttack > 5*TIME_MINUTE ){ + if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} + if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} + if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} + if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} + printDebug1("activateAttack: Final Attack Activated, attacking with droids("& tankGroup.members &") tLastFinalAttack("& tLastFinalAttack &") "); + tLastFinalAttack = gameTime; + tLastTankAttack = gameTime; + bTankAttIsOn = true; + nFinalAttacks++; + //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); + //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); + if ( !bTankAttIsOn ){ + setEventTrigger(TankAttack,TankAttackTr); + } + exit; + } + } + + if ( !bFinalAttack_1vs1 ){ + + if (!bTankAttIsOn){ + // ---------------------- virtual victory check + _player=0; + nTotEnemyDroids = 0; + while( _player < MAX_PLAYERS ){ + if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ + nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); + } + _player++; + } + //send reinforcements by grouping them (min 8 droids) + if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ + if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} + if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} + if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} + if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} + tLastTankAttack = gameTime; + bTankAttIsOn = true; + setEventTrigger(TankAttack,TankAttackTr); + printDebug1("activateAttack: Virtual Victory check is positive: attacking with droids ("& tankGroup.members &") TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); + exit; + } + } + + // ================== TANK ATTACK ============================= + if ( AIPersonality != AI_CYBORG and tankDefGroup.members > minDefDroids[nAI_Pers][MINDEF_TANKS]){ + _nTotUnits = tankDefGroup.members; + _nTankUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; + _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; + if ( cyborgDefGroup.members > minDefDroids[nAI_Pers][MINDEF_CYBORGS] ){ + _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + } else { + _nCybUnitsToBeMoved = 0; + } + _bUseCybUnitsToo = false; + + //force attack after some time by using both cyborgs and tanks droids. + if ( AIPersonality == AI_TURTLE ){ + _rndTime = (10*TIME_MINUTE + _random(900)); + } else { + _rndTime = (6*TIME_MINUTE + _random(900)); + } + if ( nMapPower <= LOW_POWER_MAP ){ + _bUseCybUnitsToo = true; + } + if ( gameTime > (15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ + _bUseCybUnitsToo = true; + _nUnitsRequiredToAttack = _nUnitsRequiredToAttack + 5;//otherwise will always attack with 7!! + } + if ( _bUseCybUnitsToo ){ + _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; + } + + if ( _nTotUnits >= _nUnitsRequiredToAttack ) + { + //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw + //do not attack if we have not enough units + if ( _bUseCybUnitsToo and (cyborgDefGroup.members > minDefDroids[nAI_Pers][MINDEF_CYBORGS]) ){ + _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); + } + moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nTankUnitsToBeMoved, true); + tLastTankAttack = gameTime; + bTankAttIsOn = true; + bAttackedHumanDerrick = false;//alternate attacks + //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); + printDebug1("ActivateAttack: Tank Attack Activated, att droids("& tankGroup.members &") _nTotUnits("& _nTotUnits &") _nUnitsRequired("& _nUnitsRequiredToAttack &") _bUseCybUn("& _bUseCybUnitsToo &") ToBeMoved Tk-Cy-toAdd("& _nTankUnitsToBeMoved &")("& _nCybUnitsToBeMoved &")("& nAttackingUnitsToAdd &")"); + setEventTrigger(TankAttack,TankAttackTr); + exit; + } + } + + //==================== CYBORG ATTACK ===================================== + //cyborgs + if (!bCybAttIsOn and cyborgDefGroup.members > minDefDroids[nAI_Pers][MINDEF_CYBORGS] and gameTime > VALID_TIME_CYBATTACK){ + _nTotCybUnits = cyborgDefGroup.members; + _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; + _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + if ( _nTotCybUnits >= _nCybUnitsRequiredToAttack ){ + moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); + bCybAttIsOn = true; + tLastCyborgAttack = gameTime; + bAttackedHumanDerrick = false;//alternate attacks + //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); + printDebug1("ActivateAttack: Cyborg Attack Activated, attacking with Cyborgs ("& cyborgAttGroup.members &") "); + setEventTrigger(CyborgAttack,CyborgAttackTr); + exit; + } + } + + //==================== HUMAN DERRICKS ===================================== + //attack human derrick with few defences if no targets in defend range + if ( AIPersonality == AI_CYBORG ){ + + if ( !bCybAttIsOn ){ + _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ + //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); + if (cyborgDefGroup.members >= _cybRequired){ + //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); + attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles + if ( attackCybObj != NULLOBJECT ){ + moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); + bCybAttIsOn = true; + tLastCyborgAttack = gameTime; + bAttackedHumanDerrick = true;//alternate attacks + nAttHumanPlayer++; + //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); + printDebug1("ActivateAttack: Attacking human derricks with Tk+Cy droids("& cyborgAttGroup.members &") "); + setEventTrigger(CyborgAttack,CyborgAttackTr); + exit; + } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } + } + } + } + + } else { //Other personalities + + if ( !bTankAttIsOn ){ + _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; + if ( !alertIsOn and !bAttackedHumanDerrick){ + //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); + if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ + //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); + attackTankObj = objHumanDerrick(false, 1, 8); + if ( attackTankObj != NULLOBJECT ){ + moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); + moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); + bTankAttIsOn = true; + tLastTankAttack = gameTime; + bAttackedHumanDerrick = true;//alternate attacks + nAttHumanPlayer++; + //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); + printDebug1("ActivateAttack: Attacking human derricks with droids("& tankGroup.members &") "); + setEventTrigger(TankAttack,TankAttackTr); + exit; + } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } + } + } + } + } + + } // if ( !bFinalAttack_1vs1 ){ + +} +//=========================================================================== +event TankAttack(inactive) +{ + + local int _distFromObj; + + ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); + //if ( gameTime - lastDisplayAI >= 10 ){ + //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); + //} + + //do a preliminary check + if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ + if (tankGroup.members>0){ + groupAddGroup(tankDefGroup , tankGroup); + } + deactivateTankAttack(); + exit;//this is necessary otherwise the event proceeeds! + } + + //get target for the first attack, further targets are chosen below + if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ + attackTankObj = getTargetObj(); + if ( attackTankObj != NULLOBJECT ){ + //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); + if ( isHumanPlayer(attackTankObj.player) ){ + nAttHumanPlayer++; + dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); + printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"' with ("& tankGroup.members &")"); + } else { + nAttAIPlayer++; + dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); + printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"' with ("& tankGroup.members &")"); + } + } + } + + if ( attackTankObj == NULLOBJECT ){ + if ( bTankAlreadyGathered ){ + //get a new target in area + attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); + if (attackTankObj == NULLOBJECT){ + attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); + } + + if (attackTankObj != NULLOBJECT){ + //collect info + targetPlayerTank = attackTankObj.player; + targetPlayerVTOL = targetPlayerTank; + tankAttackX = attackTankObj.x; + tankAttackY = attackTankObj.y; + orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); + //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); + //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); + //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); + } else { + //dbg("dbg->TankAttack: deactivate attack",player); + groupAddGroup(tankDefGroup , tankGroup); + deactivateTankAttack(); + } + } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } + exit; + + } else { // ____ attackTankObj != NULLOBJECT ______ + + //collect all obj info, later on this object could be dead... + _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); + targetPlayerTank = attackTankObj.player; + targetPlayerVTOL = targetPlayerTank; + tankAttackX = attackTankObj.x; + tankAttackY = attackTankObj.y; + + //determine gathering positions, 12 tiles away from it + //send tanks to gathering positions + if ( !lTankSentToGatheringPoint ){ + if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ + + count = random(3); + if ( count == 0 ){ //between bases + if ( attackTankObj.x > baseX ){ + count2 = baseX + (attackTankObj.x-baseX)/2; + } else { + count2 = baseX - (baseX-attackTankObj.x)/2; + } + if ( attackTankObj.y > baseY ){ + count3 = baseY + (attackTankObj.y-baseY)/2; + } else { + count3 = baseY - (baseY-attackTankObj.y)/2; + } + nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); + nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); + } + if ( count == 1 ){ //centre of the map + count2 = (mapWidth*TILE)/2; + count3 = (mapHeight*TILE)/2; + nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); + nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); + } + if ( count == 2 ){ //standard + nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); + nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); + } + + } + //centre of the map. + if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { + nTankGatheringX = (mapWidth*TILE)/2; + nTankGatheringY = (mapHeight*TILE)/2; + } + + orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); + lTankSentToGatheringPoint = true; + tTanksSentToGathering = gameTime; + } + + //check if tank group has arrived at gathring point, need to check the distance too!!! + if ( !bTankAlreadyGathered ){ + //displayMsg(" tanks ("& idleGroup(tankGroup) &"/"& tankGroup.members &") dist("& distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY)/TILE &") ("& gameTime - tTanksSentToGathering &"/2400 "); + if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) + { + bTankAlreadyGathered = true; + nTankGatheringX = -1; + nTankGatheringY = -1; + tTanksSentToGathering = 0; + orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); + + } else { + + //just "rememeber" tanks where to go... + if ( gameTime - tTanksReSentToGathering > 70 ){ + if (bAttackTeamAttacked){ + orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); + }else{ + orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); + } + tTanksReSentToGathering = gameTime; + if ( tTanksSentToGathering < 0){tTanksSentToGathering = gameTime;} + } + } + + } else {//bTankAlreadyGathered == TRUE + + //check if target has been destroyed + if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ + if ( gameTime - tTankAttackAction > 100 ){ + //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); + orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT + tTankAttackAction = gameTime; + } + } + + } + } +} +//=========================================================================== +event CyborgAttack(inactive)//Original event ID: xx (of 106) +{ + local int _distFromObj; + + ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); + //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); + + //do a preliminary check + if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ + //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); + //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); + if (cyborgAttGroup.members > 0){ + groupAddGroup(cyborgDefGroup , cyborgAttGroup); + } + deactivateCybAttack(); + exit; + } + + //get target + //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); + + if ( attackCybObj == NULLOBJECT ){ + + if ( bCybAlreadyGathered ){ + //get a new target in area + attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); + if (attackCybObj == NULLOBJECT){ + attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); + } + if (attackCybObj != NULLOBJECT){ + //collect info + targetPlayerCyb = attackCybObj.player; + targetPlayerVTOL = targetPlayerCyb; + cybAttackX = attackCybObj.x; + cybAttackY = attackCybObj.y; + + //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); + //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); + tCybAttackAction = gameTime; + orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); + } else { + //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); + if (cyborgAttGroup.members>0){ + groupAddGroup(cyborgDefGroup , cyborgAttGroup); + } + deactivateCybAttack(); + } + + } else { // NOT bCybAlreadyGathered + + //displayMsg("#### CyborgAttack: First target not found"); + attackCybObj = getTargetObj(); + if ( attackCybObj != NULLOBJECT ){ + if ( isHumanPlayer(attackCybObj.player) ){ + nAttHumanPlayer++; + dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackCybObj.x, attackCybObj.y, 0, true); + printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackCybObj.player) &"' with "& cyborgAttGroup.members &" droids "); + } else { + nAttAIPlayer++; + dropBeaconToAllies("go!" ,attackCybObj.x, attackCybObj.y, 0, false); + printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackCybObj.player) &"' with "& cyborgAttGroup.members &" droids"); + } + } + exit; + } + + } else { //attackCybObj != NULLOBJECT + + //collect all obj info, later on this object could be dead... + _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); + targetPlayerCyb = attackCybObj.player; + targetPlayerVTOL = targetPlayerCyb; + cybAttackX = attackCybObj.x ; + cybAttackY = attackCybObj.y ; + + //determine gathering positions, 12 tiles away from it + //send cyborgs to gathering positions + if ( !lCybSentToGatheringPoint ){ + + if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ + + count = random(3); + count2 = (mapWidth*TILE+mapHeight*TILE)/2; + + if ( count == 0 ){ + if ( attackCybObj.x > baseX ){ + count2 = baseX + (attackCybObj.x-baseX)/2; + } else { + count2 = baseX - (baseX-attackCybObj.x)/2; + } + if ( attackCybObj.y > baseY ){ + count3 = baseY + (attackCybObj.y-baseY)/2; + } else { + count3 = baseY - (baseY-attackCybObj.y)/2; + } + nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); + nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); + //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); + } + if ( count == 1 ){ //centre of the map + count2 = (mapWidth*TILE)/2; + count3 = (mapHeight*TILE)/2; + nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); + nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); + //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); + } + if ( count == 2 ){ //standard + nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); + nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); + //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); + } + + } + //centre of the map. + if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { + //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); + nCybGatheringX = (mapWidth*TILE)/2; + nCybGatheringY = (mapHeight*TILE)/2; + } + + //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); + //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); + orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); + lCybSentToGatheringPoint = true; + tCybSentToGathering = gameTime; + } + + //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! + if ( !bCybAlreadyGathered ) { + + if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 4 * TILE or gameTime - tCybSentToGathering > 2400) { + //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); + //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); + bCybAlreadyGathered = true; + nCybGatheringX = -1; + nCybGatheringY = -1; + tCybSentToGathering = 0; + orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); + //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); + } else { + + //just "rememeber" cyborgs where to go... + if ( gameTime - tCybReSentToGathering > 100 ){ + if (bAttackTeamAttacked){ + orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); + }else{ + orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); + } + //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); + tCybReSentToGathering = gameTime; + if ( tCybSentToGathering < 0 ){ tCybSentToGathering = gameTime; } + } + } + + } else {//if ( bCybAlreadyGathered ) + + //check if target has been destroyed + if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ + if ( gameTime - tCybAttackAction > 100 ){ + tCybAttackAction = gameTime; + //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); + orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); + //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); + } + } + + } + } ////attackCybObj != NULLOBJECT +} + + + +//================================================================ +// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject +event AIattacked(AIattackedTr) //event 20 +{ + local DROID _droid,_droid2; + local STRUCTURE _structure,_structure2; + local bool bProceed,_bAttackedByVTOL; + local int _nDistFromBase, _nDistFromEnemy, _nAA; + + /* + if( !aiResponsibleForPlayer(player) ) + { + setEventTrigger(AIattacked,inactive); + } + else + { + */ + ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); + + bProceed = true; + + if ( gameTime - alertTime < 80 ){ exit; } + + if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ + _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); + _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); + } else { + exit; + } + + if (enemyBaseObject.type == OBJ_DROID){ + _droid2 = objToDroid(enemyBaseObject); + if ( isVtol(_droid2) ) { + _bAttackedByVTOL = true; + bAttackedByVTOL = true; + } else { + _bAttackedByVTOL = false; + } + } + + //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup + if( myBaseObject.type == OBJ_DROID ){ + _droid = objToDroid(myBaseObject); + if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ + if ( _nDistFromBase > nBaseRange ){ + //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); + orderDroid( _droid, DORDER_RTB); + } + } + } + + + //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); + if (_nDistFromBase > nDefendRange){ + //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); + if( myBaseObject.type == OBJ_DROID ){ + _droid = objToDroid(myBaseObject); + if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ + if (enemyBaseObject.type == OBJ_DROID){ + if ( !_bAttackedByVTOL ) { + bAttackTeamAttacked = true;//activates single unit order instead of group order + } + } + } + } else {//myBaseObject.type == OBJ_STRUCTURE + //order VTOLs to defend this structure + if( !_bAttackedByVTOL ){ + if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ + _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); + if ( _nAA*3 < vtolDefendGr.members ){ + defTargetVTOL = enemyBaseObject; + targetPlayerVTOL = enemyBaseObject.player; + tTargetTime = gameTime; + //bVTOLTargetIsDerrick = false; + //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); + } + } + } + } + exit; + } + + //check if attacked by mortars!!! + if ( !_bAttackedByVTOL ){ + if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ + bAttackedByMortars = true;//activate research + nKineticX = myBaseObject.x; + nKineticY = myBaseObject.y; + //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); + if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ + defTargetVTOL = enemyBaseObject; + targetPlayerVTOL = enemyBaseObject.player; + bVTOLTargetIsDerrick = false; + tTargetTime = gameTime; + } + bProceed = true; //send also def troops to attack + setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build + //attacked by ripple rockets or other very long range kinetic turrets + } else if ( _nDistFromEnemy >= 19*TILE ){ + bAttackedByLongRangeWeap = true; + nKineticX = myBaseObject.x; + nKineticY = myBaseObject.y; + //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); + if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ + defTargetVTOL = enemyBaseObject; + targetPlayerVTOL = enemyBaseObject.player; + bVTOLTargetIsDerrick = false; + tTargetTime = gameTime; + } + if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ + bProceed = true; + } else { + bProceed = false; //too far away + } + setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); + } else { + //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); + bProceed = true; + } + } + + if(bProceed and gameTime - alertTime > 50){ + if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ + + if (enemyBaseObject.type == OBJ_DROID){ + _droid2 = objToDroid(enemyBaseObject); + attackedByDroid(_droid2); + } + if (enemyBaseObject.type == OBJ_STRUCTURE){ + _structure2 = objToStructure(enemyBaseObject); + attackedByStruct(_structure2); + } + + //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); + if ( !_bAttackedByVTOL ){ + + + if (gameTime - alertTime > 10){ + gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); + gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); + gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); + gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); + //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); + //printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); + } + + alertTime = gameTime; + alertIsOn = true; + alertX = enemyBaseObject.x; + alertY = enemyBaseObject.y; + + //remember coord of attacked obj: build defences + if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { + defSpotX = myBaseObject.x; + defSpotY = myBaseObject.y; + nLastDefSpotUpdate = gameTime; + } + } + + } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ + } //if(bProceed and gameTime - alertTime > 50){ + //} +} +//-------------------------------------------------------------- +event manageDefTank( inactive ) +{ + + local int _x,_y,_x1,_y1, _nDist; + + ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); + eventCheckTime[6] = gameTime; + + //if ( gameTime - lastDisplayAI >= 80 ){ + //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); + //} + + if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ + if ( alertX >= 0 and alertY >= 0 ){ + dropBeaconToAllies("help" , alertX, alertY, 0, true); + dropBeaconToAllies("help" , alertX, alertY, 0, false); + } + } + + + if( tankDefGroup.members == 0 ){ exit; } + + if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ + count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); + //bring def units back at home + if ( count2 > nDefendRange ){ + gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); + gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); + } + } else { + gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); + gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); + } + //check is not -1; + if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } + if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } + + //if an ALERT is on send to ALERT coord + if ( alertIsOn ){ + + //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); + //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected + _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); + if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ + orderGroupScoutCMD(tankDefGroup,alertX,alertY); + tDefTankAction = gameTime; + } + + } else { //alert is not ON + + //reset alert coord + if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} + + //get a target or gather coord + if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) + { + + if ( objTargetTankDefGRP == NULLOBJECT ){ + objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); + } + if ( objTargetTankDefGRP == NULLOBJECT ){ + objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); + } + + //target found! + if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ + if ( gameTime - tDefTankAction > 60 ){ + if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ + //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); + orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); + tDefTankAction = gameTime; + } + } + + } else {//no enemy in range, return to gathering point + + if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ + //displayMsg("manageDefTank: _____________back to gathering point __________"); + orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); + tDefTankAction = gameTime; + } + + } + + } else {//return togathering point + + objTargetTankDefGRP = NULLOBJECT; + if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) + { + //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); + orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); + tDefTankAction = gameTime; + } + + } + + + }//alertIsOn +} + +//====================================================== +event manageDefCyborgs (inactive)//event 18!!!! +{ + + local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; + local int _x,_y,_x1,_y1,_nDist; + + + ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); + eventCheckTime[5] = gameTime; + //if ( gameTime - lastDisplayAI >= 90 ){ + //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); + //} + + if( cyborgDefGroup.members == 0 ){ exit; } + + if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ + count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); + if ( count2 > nDefendRange ){ + gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); + gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); + } + } else { + gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); + gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); + } + if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } + if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } + + if ( alertIsOn ) + { + + //set alert coord if not done already + if (cybAlertX < 0 or (cybAlertX != alertX) ){ + if(alertX > 0){ + cybAlertX = alertX; + cybAlertY = alertY; + } + } + + //go to alert coord + _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); + //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); + if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ + orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); + tDefCybAction = gameTime; + } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } + + } else {//def alert not active + + if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ + + //reset alert coord + if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} + + //enemy droid or struct in Cyborg Range? + count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); + if ( count < nDefendRange ){ + + //enemies in nDefendRange? + if ( objTargetCybDefGRP == NULLOBJECT ){ + objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); + } + if ( objTargetCybDefGRP == NULLOBJECT ){ + objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); + } + //if no targets go back to gathering points + if ( objTargetCybDefGRP == NULLOBJECT ){ + if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ + orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); + tDefCybAction = gameTime; + } + } else { + //Attack enemy in defend range!!! + if ( gameTime - tDefCybAction > 60 ){ + count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); + if ( count > 2*TILE ){ + orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); + tDefCybAction = gameTime; + } + } + + } + + } else { //count > nDefendRange, send units back!! + + if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ + orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); + tDefCybAction = gameTime; + } + + } + + } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK + + if ( gameTime - tDefCybAction > 60){ + if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ + orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); + tDefCybAction = gameTime; + } + } + } + } //alertIsOn +} +//=================================================================== +//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp +//does not use any money, only help and repairTaks +event manageIdleTrucks(inactive) +{ + + ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); + eventCheckTime[7] = gameTime; + //dbg("manageIdleTrucks: ________________ START 1__________________",player); + if ( gameTime < 300 ) { exit; } + + boolResult = true; + boolResult2 = true; + boolResult3 = true; + + //force helpbuild of derricks + initEnumStruct(FALSE,derrick,player,player); + structure = enumStruct(); + while (structure != NULLOBJECT){ + if(!structureComplete(structure)){ + if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) + { + + _idleTruck = pickCybEng(true); + if (_idleTruck == NULLOBJECT){ + _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); + } + if (_idleTruck != NULLOBJECT){ + if (droidCanReach(_idleTruck, structure.x, structure.y) ){ + //displayMsg("**** manageIdleTrucks: found a derrick not complete for droid ("& _idleTruck.id &") "); + orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); + } + } + + } //else {displayMsg("manageIdleTrucks: there is some threat in range of derrick");} + } + structure = enumStruct(); + } + + //force helpbuild of repair Facility first + initEnumStruct(FALSE,repairFacility,player,player); + structure = enumStruct(); + while (structure != NULLOBJECT){ + if(!structureComplete(structure)){ + if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) + { + _idleTruck = pickCybEng(true); + if (_idleTruck == NULLOBJECT){ + _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); + } + if (_idleTruck != NULLOBJECT){ + if (droidCanReach(_idleTruck, structure.x, structure.y) ){ + //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); + orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); + } + } + } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} + } + structure = enumStruct(); + } + + + if ( (numAAinBase > 4 and bAttackedByVTOL) or !bAttackedByVTOL ) { + if( buildDefGroup.members>0 ){ + if (!repairDefStructs(BUILDDEF_GRP)){ + if ( !repairStructs(BUILDDEF_GRP) ){ + if ( !helpBuild(BUILDDEF_GRP) ){ + boolResult = helpBuild(BUILDDEF_GRP); + } + } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} + } + } + } + + //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } + if( cyborgConstructGroup.members>0 ){ + harvestNearOilRes(); + if ( !repairStructs(CYBENG_GRP) ){ + if (!repairDefStructs(BUILDDEF_GRP)){ + if ( !helpBuild(CYBENG_GRP) ){ + boolResult3 = repairDefStructs(CYBENG_GRP); + //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ + //harvestNearOilRes(); + //} + } + } + } + } + //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } + if( buildGroup.members>0 and lMinBaseStructBuilt ){ + if (!helpBuild(BUILD_GRP)){ + if ( !repairStructs(BUILD_GRP) ){ + boolResult2 = repairDefStructs(BUILD_GRP); + } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} + } + } + + //exit;// problems before + //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } + //send all idle back to the base!!! + sendIdleBackToTheBase(BUILD_GRP); + sendIdleBackToTheBase(CYBENG_GRP); + sendIdleBackToTheBase(BUILDDEF_GRP); + + //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} + + +} +//================================================ +event manageRepairTeam(inactive) +{ + + ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); + + //if ( gameTime - lastDisplayAI >= 80 ){ + //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); + //} + if (repairGroup.members < 0){exit;} + + //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); + boolResult = true; + + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); + droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); + boolResult = false; + } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } + } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } + } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } + + + if (boolResult){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + + if (boolResult){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + + if (boolResult){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + + if (boolResult){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + + if (boolResult){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + + if (boolResult){ + droid2 = idleRepairDroid(baseX,baseY);//this picks up + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if( droid.id != droid2.id ){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + } + + //modify -> force return to base even if not idle + initIterateGroup(repairGroup); + droid = iterateGroup(repairGroup); + while(droid != NULLOBJECT) + { + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { + //displayMsg("*** manageRepairTeam: send repair tank to RTB"); + orderDroid(droid, DORDER_RTB); + } + droid = iterateGroup(repairGroup); + } + + //As last chance let`s try to completely repair defend idle droids + if (boolResult and !alertIsOn){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(tankDefGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nDefendRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in tankDefGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + if (boolResult and !alertIsOn){ + droid2 = idleRepairDroid(baseX,baseY); + if ( droid2 != NULLOBJECT ) + { + droid = nearestDroidToBeRepaired(cyborgDefGroup, droid2.x, droid2.y); + if ( droid != NULLOBJECT){ + if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nDefendRange ) { + orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); + //displayMsg("*** manageRepairTeam: found unit in cyborgDefGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); + boolResult = false; + } + } + } + } + +} + +// ===================================================================== +event updateBaseDetails(inactive) +{ + ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); + eventCheckTime[8] = gameTime; + + updateBaseRange(); + updateBaseCoord(); + updateBeacons(); + + //get all players stats + updatePlayersStats(); + + //units to attack with tanks + if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } + if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ + nAttackingUnitsToAdd = random(MAX_ATTACK_TANKS_ADD); + nCybAttUnitsToAdd = random(MAX_ATTACK_CYBORG_ADD); + tChangeTimeTankToAdd = gameTime; + } + + + //store the oliRes to get at the beginning + if( nTotOilInAtStart < nFreeOilRes ){ + nTotOilInAtStart = nFreeOilRes; + } + + updateDefendRange(); + + //checking if I have min numb of derricks; + if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ + if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ + bNeedDerrick = true; + } else { + bNeedDerrick = false; + } + } + + //build defense queue + count = 0; + pickDefQueueDepth = 0; + while(count < numDefStructs ) + { + if(isStructureAvailable(defStructs[count],player)){ + pickDefQueue[pickDefQueueDepth] = defStructs[count]; + pickDefQueueDepth = pickDefQueueDepth + 1; + } + count = count + 1; + } + + //build wall defense queue + count = 0; + pickWallDefQueueDepth = 0; + while( count < numWallWeaps ) + { + if( isStructureAvailable(wallWeaps[count],player) ){ + pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; + pickWallDefQueueDepth = pickWallDefQueueDepth + 1; + } + count = count + 1; + } + + //Fortresses queue + count = 0; + pickFortQueueDepth = 0; + while(count < numFortressDef) + { + if(isStructureAvailable(fortressDef[count],player) ){ + pickFortQueue[pickFortQueueDepth] = fortressDef[count]; + pickFortQueueDepth = pickFortQueueDepth + 1; + } + count = count + 1; + } + + //update structs queue + count = 0; + pickStrQueueDepth = 0; + while(count < numStructs) + { + if(isStructureAvailable(structs[count],player) ) + { + pickStrQueue[pickStrQueueDepth] = structs[count]; + pickStrQueueDepth = pickStrQueueDepth + 1; + } + count = count + 1; + } + + +} + +// ============================ Debug messages==================== +event showPlayerInfo (inactive) +{ + ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); + boolResult = true; +} + +//----------------------------------------------------------------- +event buildRepFirst(inactive) +{ + + local int _nMaxRepFac; + ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); + eventCheckTime[9] = gameTime; + + //displayMsg("lStopBuildRepFacility ("& lStopBuildRepFacility &") nPower("& nPower &")"); + if( !lStopBuildRepFacility ) + { + if (nMapPower <= LOW_POWER_MAP){ + _nMaxRepFac = 2; + } + if (nMapPower == NORMAL_POWER_MAP){ + _nMaxRepFac = 3; + } + if (nMapPower == HIGH_POWER_MAP){ + _nMaxRepFac = 5; + } + //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one + // repFac to support attack team + if( numStructsByType(repairFacility, player) < _nMaxRepFac and (gameTime - nLastTimeBuiltRepFac) > 600 ) + { + boolResult = false; + if ( isStructureAvailable(repairFacility, player) ) + { + //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 + buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); + buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); + + boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); + //DylanDog - BUG on BP2.92, the check on struct availability was not made + if(boolResult) + { + droid = closestDroidCanBuild(buildGroup,buildX,buildY); + if(droid != NULLOBJECT) + { + if (droidCanReach(droid, buildX, buildY) ){ + orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); + nLastTimeBuiltRepFac = gameTime; + } + } + } + } + } + } + +} + + +//====================================ADVANCED HARVESTER SCRIPT========================== +event harvesterOperate(inactive) +{ + ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); + eventCheckTime[10] = gameTime; + + //displayMsg("harvestOperate: called ("& bOilResLeft &") ("& harvesterGroup.members &")"); + + if ( !bOilResLeft ){ exit; } + + //stop moving to oilRes if a derrick is already built in that position or if a threat is present + stopDroidHarvesting(); + + _oilRes = NULLOBJECT; + + //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY + checkDerrickIsBuilt(player); + + //nearest oilRes to base, try to pick up the nearest to the base as it is + //the easier to defend. + droid = closestIdleDroid(harvesterGroup,baseX, baseY); + if( droid != NULLOBJECT ) + { + _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach + } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } + //get the number of Derricks built + if ( _oilRes != NULLOBJECT ) + { + //displayMsg("harvesterOperate: oilRes found"); + if ( nMyDerricks < numMaxDerricks ) + { + //to avoid another droid target this oliRes + if( gameTime < TIME_HARVESTING_PHASE ){ + + _nOilRes = getOilResTargetFree(); + if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ + oilResTargetId[_nOilRes] = _oilRes.id; + oilResTargetX[_nOilRes] = _oilRes.x; + oilResTargetY[_nOilRes] = _oilRes.y; + orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); + //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); + } + //else { + //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); + //} + + } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET + + //Check this oilRes is not too far away + //count = ((mapWidth+mapHeight)/2)*TILE; + //count = (count/3*2);//2/3 of the map + //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); + if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) + { + + orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); + //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); + } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } + } + } + } //else { displayMsg("harvesterOperate: oilRes not found");} +} + + +//====================================================================== +event truckGroupSlider(inactive) +{ + + ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); + eventCheckTime[11] = gameTime; + //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); + //at this time the harvesting phase should be finished + if ( gameTime > TIME_HARVESTING_PHASE ){ + + //harvester are not required, move them to buildGRP and buildDefGRP + if ( !bOilResLeft ){ + + initIterateGroup(harvesterGroup); + droid = iterateGroup(harvesterGroup); + while(droid != NULLOBJECT) + { + if ( buildGroup.members > buildDefGroup.members ){ + //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); + groupAddDroid(buildDefGroup, droid ); + } else { + //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); + groupAddDroid(buildGroup, droid ); + } + droid = iterateGroup(harvesterGroup); + } + + } else { + + if ( harvesterGroup.members == 0 ){ + if ( buildGroup.members > buildDefGroup.members ){ + + droid = closestIdleDroid(buildGroup,baseX,baseY); + if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); + groupAddDroid(harvesterGroup, droid ); + } + + } else { + + if (droid == NULLOBJECT){ droid = pickDefTruck(true); } + if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); + groupAddDroid(harvesterGroup, droid ); + } + } + } + } + + } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp + + if ( bOilResLeft ){ + if ( harvesterGroup.members < 2 ){ + if ( buildDefGroup.members >= 1 ){ + droid = getADroid(buildDefGroup); + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); + groupAddDroid(harvesterGroup, droid ); + } + } + } + if ( harvesterGroup.members < 2 ){ + if ( buildGroup.members > 1 ){ + droid = getADroid(buildGroup); + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); + groupAddDroid(harvesterGroup, droid ); + } + } + } + } else { + if ( harvesterGroup.members > 0 ){ + initIterateGroup(harvesterGroup); + droid = iterateGroup(harvesterGroup); + while(droid != NULLOBJECT) + { + if ( buildGroup.members > buildDefGroup.members ){ + //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); + groupAddDroid(buildDefGroup, droid ); + } else { + //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); + groupAddDroid(buildGroup, droid ); + } + droid = iterateGroup(harvesterGroup); + } + } + } + + }//gametime > TIME_HARVESTING_PHASE + + //ensure a bit of balance between buildGrp and buildDef GRP + if ( !lMinBaseStructBuilt ){ + if ( buildDefGroup.members > buildGroup.members ){ + droid = getADroid(buildDefGroup); + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); + groupAddDroid(buildGroup, droid ); + } + } + + if ( buildGroup.members > buildDefGroup.members+1 ){ + droid = getADroid(buildGroup); + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); + groupAddDroid(buildDefGroup, droid ); + } + } + } else {//need more def trucks + if ( buildGroup.members > buildDefGroup.members ){ + droid = getADroid(buildGroup); + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); + groupAddDroid(buildDefGroup, droid ); + } + } + + if ( buildDefGroup.members > buildGroup.members+1 ){ + droid = getADroid(buildDefGroup); + if (droid != NULLOBJECT){ + //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); + groupAddDroid(buildGroup, droid ); + } + } + } + + //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); + +} + +//============================================================================ +event defendDerrick(inactive) +{ + local STRUCTURESTAT _defStruct; + + ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); + eventCheckTime[12] = gameTime; + + if (lStopBuildDefDerricks){exit;} + //displayMsg("_______________ defendDerrick called 1______________"); + + //also checks there are already enough def around the derrick + _derrick = closestDerrickToDefend(); + if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain + //this is the difference against event harvestOperate + //displayMsg("_______________ defendDerrick called 2______________"); + + droid = pickDefTruck(false); + + if(droid != NULLOBJECT) + { + + _defStruct = getDefStruct(); + + if( isStructureAvailable(_defStruct,player) ) + { + buildX = _derrick.x ; + buildY = _derrick.y ; + if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ + if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { + if (droidCanReach(droid, buildX, buildY) ){ + orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); + //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); + } + } + } //else { displayMsg("defendDerrick : some threat in range") ;} + } //else { displayMsg("defendDerrick : structure no available") ;} + } //else { displayMsg("defendDerrick : NO idle trucks found") ; } + } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } +} + +//============================================================================ +// build a power gen for every 4 derricks. VITAL! +event buildPowerGenerators(inactive) +{ + + ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); + eventCheckTime[13] = gameTime; + + //search for incompleted structure fist + boolResult = true; + initEnumStruct(false,powGen,player,player); + structure = enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if ( !structureComplete(structure) ){ + droid = closestDroidCanBuild(buildGroup,structure.x,structure.y); + if( droid != NULLOBJECT ) + { + if (droidCanReach(droid, structure.x, structure.y) ){ + //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); + orderDroidObj(droid,DORDER_HELPBUILD,structure); + boolResult = false; + } + } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } + } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } + structure = enumStruct(); + } + + if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) + { + buildX = baseX; + buildY = baseY; + boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); + if(boolResult) + { + droid = closestDroidCanBuild(buildGroup,baseX,baseY); + if( droid != NULLOBJECT ){ + if ( droidCanReach(droid, buildX, buildY) ) + //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); + orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); + tLastPowerGen = gameTime; + } + } + } + +} +//------------------------------------- +event defendGatewaysPoint(inactive) +{ + ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); + eventCheckTime[14] = gameTime; + _idleTruck = NULLOBJECT; + _notIdleTruck = NULLOBJECT; + //-------------------------------- + //displayMsg("defendGatewaysPoint: lStopBuildDefGateway("& lStopBuildDefGateway &") defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); + + if( buildDefGroup.members < 0 or lStopBuildDefGateway ) + { exit; } + + //defend real gateways if they exists + if ( nRealGatewaysFound == 0){ + setEventTrigger(defendGatewaysPoint,inactive); + exit; + } + + _idleTruck = pickDefTruck(false); + if ( _idleTruck == NULLOBJECT ){ + //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); + exit; + } + + count = 0; + boolResult = true; + while ( count < nRealGatewaysFound and boolResult) + { + count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); + //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); + if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ + buildGatewayDef(_idleTruck, count); + boolResult = false;//exit the loop + } else { + displayMsg("defendGatewaysPoint: cannot build def as GTW("& count &" >= "& nRealGatewaysFound &") or threat in range"); + } + count++; + } + +} + +//======================================================================= +event defendBase(inactive) +{ + local STRUCTURESTAT _defStruct; + + ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); + eventCheckTime[15] = gameTime; + + //dbg("dbg->defendBase: lStopBuildDef ("& lStopBuildDef &") time("& gameTime - tLastbuildBaseDef &") > ("& TIME_TOFORCE_BUILDDEF &")",player); + if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 ) { + //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); + exit; + } + + if (lStopBuildDef or gameTime < 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning + exit; + } + + droid = pickDefTruck(false); + if( droid == NULLOBJECT ) { exit; } + + count = random(100); + if ( AIPersonality == AI_TURTLE ) { count = count+25; } + if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ + count = random(pickFortQueueDepth); + _defStruct = pickFortQueue[count]; + } else { + _defStruct = getDefStruct(); + } + + // ----------- build! ---------------- + if(isStructureAvailable(_defStruct,player)) + { + + if( defSpotX > 0 and defSpotY > 0 ){ + //best option + buildX = defSpotX; + buildY = defSpotY; + } else { + buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); + buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); + } + + //check number of def already built in area + if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ + boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); + if(boolResult == TRUE) + { + if ( droidCanReach(droid, buildX, buildY) ){ + printDebug1("defendBase: building base defence on coord ("& buildX/TILE &"-"& buildY/TILE &") defSpotX-Y("& defSpotX/TILE &")("& defSpotY/TILE &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); + tLastbuildBaseDef = gameTime; + } + } + } else { + //force the building every tot min regardless of the def already built... + if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ + if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) + { + if ( droidCanReach(droid, buildX, buildY) ){ + printDebug1("defendBase: force building base defence on coord ("& buildX/TILE &"-"& buildY/TILE &") defSpotX-Y("& defSpotX/TILE &")("& defSpotY/TILE &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); + tLastbuildBaseDef = gameTime; + } + } + } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } + } + } else { printDebug1("#### Trying to build a def struct which is not available"); } + + +} + +// ========================================================================== +event upgradeStructures(inactive) +{ + ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); + eventCheckTime[16] = gameTime; + + + droid = closestIdleDroid(buildGroup,baseX,baseY); + if(droid == NULLOBJECT){ + droid = pickDefTruck(true); + } + if(droid != NULLOBJECT) + { + + boolResult = true; + + if ( lMinBaseStructBuilt ){ + initEnumStruct(false,powGen,player,player); + structure= enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) + { + //displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); + orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); + boolResult = false; + } + structure= enumStruct(); + } + } + + + //if "R-Vehicle-Body05" is not completed we do not perform the upgrade + if ( !lStopFactUpgrade and boolResult ) + { + initEnumStruct(false,factory,player,player); + structure= enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) + { + //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); + boolResult = false; + } + structure= enumStruct(); + } + + if ( !lStopFactUpgrade2 and boolResult ) + { + initEnumStruct(false,factory,player,player); + structure= enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) + { + orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); + boolResult = false; + } + structure= enumStruct(); + } + } + + initEnumStruct(false,vtolFactory,player,player); + structure= enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) + { + orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); + boolResult = false; + } + structure= enumStruct(); + } + + }//if ( !lStopFactUpgrade and boolResult ) + + //researches + if(!lStopResLabUpgrade and boolResult) + { + initEnumStruct(false,resLab,player,player); + structure= enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) + { + //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); + orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); + boolResult = false; + } + structure= enumStruct(); + } + }//power check + + } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } +} + +//=========================================================================== +event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); +{ + + /* + if( !aiResponsibleForPlayer(player) ) + { + dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); + setEventTrigger(droidBuilt,inactive); + } + else + { + */ + + ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); + + boolResult = true; + //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); + if(droid != NULLOBJECT) + { + if ( droid.player != player ){ exit; } + // TANK + if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) + { + nTotTankBuilt++; + //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); + groupAddDroid(tankDefGroup, droid); + } + + // TANK REPAIR + if(droid.droidType == DROID_REPAIR ) + { + //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); + groupAddDroid(repairGroup, droid); + } + + //TANK CONTRUCTOR + if( droid.droidType == DROID_CONSTRUCT ) + { + //store coord for stuck check + //storeDroidCoord(droid); + //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); + groupAddDroid(buildGroup, droid); + } + + + // CYBORG + if(droid.propulsion == cyborgPropulsion) + { + if(droid.droidType == DROID_CYBORG_CONSTRUCT) + { + //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); + groupAddDroid(cyborgConstructGroup, droid); + } else { + nTotCyborgBuilt++; + if ( AIPersonality == AI_CYBORG ){ + //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); + groupAddDroid(cyborgDefGroup, droid); + } else { + if (nTotCyborgBuilt > 2){ + //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); + groupAddDroid(tankDefGroup, droid); + nTotCyborgBuilt = 0; + } else { + //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); + groupAddDroid(cyborgDefGroup, droid); + } + } + } + } + + + // VTOL + if( isVtol(droid) ) + { + //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); + groupAddDroid(vtolDefendGr, droid); + //need to check if I have to give new droid an order to attack + if (attTargetVTOL != NULLOBJECT){ + if ( !friendlyPlayer(attTargetVTOL.player) ){ + //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); + orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); + } + } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } + if ( defTargetVTOL != NULLOBJECT ){ + if ( !friendlyPlayer(defTargetVTOL.player) ){ + //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); + orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL + } + } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } + //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); + exit; + } + + //to be improved: add secondary for weapons cyborgs + setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); + setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); + setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); + + boolResult = false; + if( droid.droidType == DROID_WEAPON){ + boolResult = true; + //short range tanks + if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); + //displayMsg("droidbuilt: short attack range assigned to tank "); + //long range tanks-1 + } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon ){ + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); + //displayMsg("droidbuilt: short attack range assigned to tank "); + } else if ( droid.weapon == FlashLight or droid.weapon == PulseLaser or droid.weapon == HeavyLaser ){ + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); + //displayMsg("droidbuilt: long attack range assigned to Laser-tank "); + //long range tanks-2 + } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); + //displayMsg("droidbuilt: long attack range assigned to tank "); + } else { + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); + //displayMsg("droidbuilt: default attack range assigned to droid "); + } + } + + + if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ + boolResult = true; + //short range cyborgs + if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); + //displayMsg("droidbuilt: long attack range assigned to cyborg"); + } else { + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); + //displayMsg("droidbuilt: short attack range assigned to cyborg"); + } + } + + //for debug purposes only + //if( !boolResult ){ + //dbg("dbg->droidbuilt: no attack range assigned to droid",player); + //} + + }//droid != NULLOBJECT + //} +} + +// ================== UNITS RESORTING SCRIPT ========================== +event reSortUnits(inactive) +{ + + /* + if( !aiResponsibleForPlayer(player) ) + { + setEventTrigger(reSortUnits, inactive); + } + else + { + */ + + + ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); + + groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); + //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); + initIterateGroup(xGroup); + droid = iterateGroup(xGroup); + while(droid != NULLOBJECT) + { + //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); + assignDroidToGrp(droid); + droid = iterateGroup(xGroup); + } + + groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); + //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); + + //deactivate itself + setEventTrigger(reSortUnits,inactive); + + //} +} + +// ============================================================================= +event SelectTankTemplate(inactive) +{ + + local int _nRnd, _nRnd2,_nBestHvyBody,_nBestMedBody,_nBestLghBody; + + eventCheckTime[17] = gameTime; + ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); + + //displayMsg("SelectTankTemplate 1: nWorkingFact("& nWorkingFact &") nFactories("& nFactories &") boolResult ("& boolResult &") nProdSelect("& nProdSelect &") stopProdTank("& lStopTankProduction &")_______________"); + + if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } + if ( nWorkingFact == nFactories ){ exit; } + + boolResult = true; + + //build trucks + if ( gameTime > TIME_HARVESTING_PHASE and (numTemplatesInProduction(constructor2,player) > 0 or numTemplatesInProduction(constructor,player) > 0) ){ + lStopBuildTankProd = true; + } + if (!lStopBuildTankProd ){ + initEnumStruct(false,factory,player,player); + structure = enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if(structureComplete(structure) and structureIdle(structure)){ + if ( skCanBuildTemplate(player,structure, constructor2) ){ + buildDroid(constructor2, structure, player, 1); // can harvest on islands! + } else { + buildDroid(constructor, structure, player, 1); // build tank wheeled constructor + } + lastTruckBuilt = gameTime; + boolResult = false; + } + structure = enumStruct(); + } + } + + //repair Truck + if ( boolResult and repairGroup.members+numTemplatesInProduction(repairTank,player) < MAX_REPAIR_UNITS ){ + if ( getStructure(repairFacility,player) == NULLOBJECT ){ + if ( gameTime > TIME_HARVESTING_PHASE ){ + initEnumStruct(false,factory,player,player); + structure = enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + if(structureComplete(structure) and structureIdle(structure)){ + if( skCanBuildTemplate(player,structure, repairTank) ){ + boolResult = false; + buildDroid(repairTank, structure, player, 1); // build tank repair + lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power + } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} + } + structure = enumStruct(); + } + } + } + } + + //do not build any other type of tanks for cyborgAI + if ( AIPersonality == AI_CYBORG ){ exit; } + + //displayMsg("SelectTankTemplate 2: nWorkingFact("& nWorkingFact &") nFactories("& nFactories &") boolResult ("& boolResult &") nProdSelect("& nProdSelect &") stopProdTank("& lStopTankProduction &")_______________"); + + //build tanks + if (boolResult and !lStopTankProduction) + { + boolResult = true; + _pos = -1;//tmpl to be built + + initEnumStruct(false,factory,player,player); + structure = enumStruct(); + while(structure != NULLOBJECT and boolResult) + { + //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); + if(structureComplete(structure) and structureIdle(structure)) + { + + _nRnd = random(100);//weapon type (WEAPON_AR/AT/AP) + if ( _nRnd < 40 ){ + _nRnd = 0;//AllRounder + } + if ( _nRnd >= 40 and _nRnd < 70 ){ + _nRnd = 1;//AntiTank + } + if ( _nRnd >= 70 and _nRnd < 100 ){ + _nRnd = 2;//AntiPersonnel + } + _nRnd2 = random(100);//body type + + _nBestHvyBody = checkBestBody(BODY_HEAVY,_nRnd,structure);//heavy + _nBestMedBody = checkBestBody(BODY_MEDIUM,_nRnd,structure);//medium + _nBestLghBody = checkBestBody(BODY_LIGHT,_nRnd,structure);//light + + //dbg("SelectTankTemplate: _nRnd("& _nRnd &") bodies hv-md-lg("& _nBestHvyBody &")("& _nBestMedBody &")("& _nBestLghBody &")",player); + printDebug1("SelectTankTemplate: _nRnd2("& _nRnd2 &") _nRnd("& _nRnd &") bodies hv-md-lg("& _nBestHvyBody &")("& _nBestMedBody &")("& _nBestLghBody &")"); + + if ( _nBestHvyBody == 0 and _nBestMedBody == 0 and _nBestLghBody == 0){ + printDebug1("####SelectTankTemplate: Not able to build any template with _nRnd("& _nRnd &"); bodies hv-md-lg("& _nBestHvyBody &")("& _nBestMedBody &")("& _nBestLghBody &")"); + // + if( skCanBuildTemplate(player,structure, tmpl0[61]) ){//Viper Flamer + buildDroid( tmpl0[61] , structure, player, 1); + } else { + if( skCanBuildTemplate(player,structure, tmpl0[60]) ){//Viper HMG + buildDroid( tmpl0[60] , structure, player, 1); + } else { + if( skCanBuildTemplate(player,structure, tmpl0[62]) ){//Viper MG + buildDroid( tmpl0[62] , structure, player, 1); + } else { + printDebug1("####SelectTankTemplate: REALLY not able to build any tank template !!"); + } + } + } + exit; + } + + //Heavy and Medium are availabe + if ( _nBestHvyBody > 0 ){ + if (_nBestMedBody > 0 ){ + if ( _nRnd2 < 65 ){ + boolResult = buildHeavyTank(_nRnd,structure); + } else { + boolResult = buildMediumTank(_nRnd,structure); + } + } else { + boolResult = buildHeavyTank(_nRnd,structure); + } + } + + //Medium and Light are availabe + if ( _nBestHvyBody == 0 ){ + if (_nBestMedBody > 0 ){ + if (_nBestLghBody > 0 ){ + if ( _nRnd2 < 65 ){ + boolResult = buildMediumTank(_nRnd,structure); + } else { + boolResult = buildLightTank(_nRnd,structure); + } + } else { + boolResult = buildMediumTank(_nRnd,structure); + } + } + } + + //Only Light is availabe + if ( _nBestHvyBody == 0 and _nBestMedBody == 0 and _nBestLghBody > 0){ + boolResult = buildLightTank(_nRnd,structure); + } + + //if ( boolResult ){ + //dbg("Building Tank: _nRnd("& _nRnd &") _nRnd2("& _nRnd2 &") bodies hv-md-lg("& _nBestHvyBody &")("& _nBestMedBody &")("& _nBestLghBody &")",player); + //printDebug1(" Building Tank: _nRnd("& _nRnd &") _nRnd2("& _nRnd2 &") bodies hv-md-lg("& _nBestHvyBody &")("& _nBestMedBody &")("& _nBestLghBody &")"); + //} else { + //printDebug1("#### Not able to build _nRnd("& _nRnd &") _nRnd2("& _nRnd2 &") bodies hv-md-lg("& _nBestHvyBody &")("& _nBestMedBody &")("& _nBestLghBody &")"); + //} + + }//endif(structureComplete(structure) and structureIdle(structure)) + + structure = enumStruct(); + }//end while + + + }//endif (boolResult and !lStopTankProduction) +} + + +//========================================================================= +event SelectCyborgTemplate(inactive) +{ + + local TEMPLATE cybTmpl[17]; + local int _nRnd, _pos; + local bool _bBuildAR_cyborg, _bBuildAT_cyborg, _bBuildAP_cyborg, _bBuildKK_cyborg; + + ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); + eventCheckTime[18] = gameTime; + //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); + + _pos = -1; + _bBuildAR_cyborg = false;//AllRounder + _bBuildAT_cyborg = false; //AntiTank + _bBuildAP_cyborg = false; //AntiPersonnel + _bBuildKK_cyborg = false; //Kinetic (Grenadier-NeedleGunner) + + if( getDroidCount(player) >= MAX_DROIDS){ exit; } + + if(!lStopCybProduction) + { + initEnumStruct(false,cybFactory,player,player); + structure = enumStruct(); + boolResult = true; + while(structure != NULLOBJECT and boolResult) + { + if( structureComplete(structure) and structureIdle(structure) ) + { + + boolResult = true; + + // build cyborg constructor + if( !lStopCybEngProd ){ + boolResult = false; + lastCybEngBuilt = gameTime; + buildDroid(cybcondroid, structure, player, 1); + //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); + } + + //build cyborg Mechanic + /* + if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ + tLastCybMech = gameTime; + nCybMechanic++; + buildDroid(cybMech, structure, player, 1); + } + */ + + if( boolResult ) + { + + count = 0; + while ( _pos == -1 and count < 20 ) + { + _nRnd = random(100); + if ( _nRnd < 30 ){ + _bBuildAR_cyborg = true;//Allrounder + nTotCybAR++; + } else if ( _nRnd >= 30 and _nRnd < 55 ){ + _bBuildAT_cyborg = true; //AntiTank + nTotCybAT++; + } else if ( _nRnd >= 55 and _nRnd < 80 ){ + _bBuildAP_cyborg = true; //AntiPersonnel + nTotCybAP++; + } else { + _bBuildKK_cyborg = true; //Kinetic + nTotCybKK++; + } + + //Build best Anti-Tank Template + if ( _bBuildAT_cyborg ){ + if( skCanBuildTemplate(player,structure, superCyb[9]) ){ _pos = 9; }//Lancer + if( skCanBuildTemplate(player,structure, superCyb[7]) ){ _pos = 7; }//Scourge + if ( random(10) < 5 ){ + if( skCanBuildTemplate(player,structure, superCyb[3]) ){ _pos = 3; }//Super Tank-Killer Cyborg + } else { + if( skCanBuildTemplate(player,structure, superCyb[0]) ){ + _pos = 0;//Super Scourge Cyborg + } else { + //backup + if( skCanBuildTemplate(player,structure, superCyb[3]) ){ _pos = 3; }//Super Tank-Killer Cyborg + } + } + } + + //Build best All-Rounder Template + if ( _bBuildAR_cyborg ){ + if( skCanBuildTemplate(player,structure, superCyb[6]) ){ _pos = 6; } + if( skCanBuildTemplate(player,structure, superCyb[5]) ){ _pos = 5; } + if( skCanBuildTemplate(player,structure, superCyb[4]) ){ _pos = 4; } + if( skCanBuildTemplate(player,structure, superCyb[1]) ){ _pos = 1; } + } + + //Build best Anti-Personnel Template + if ( _bBuildAP_cyborg ){ + if ( random(100) < 65 ){//65% Flamers-Lasers + if( skCanBuildTemplate(player,structure, superCyb[15]) ){ _pos = 15; } + if( skCanBuildTemplate(player,structure, superCyb[12]) ){ _pos = 12; } + if( skCanBuildTemplate(player,structure, superCyb[10]) ){ _pos = 10; } + if( skCanBuildTemplate(player,structure, superCyb[2] ) ){ _pos = 2; } + } else { //35% Gunners + if( skCanBuildTemplate(player,structure, superCyb[16]) ){ _pos = 16; } + if( skCanBuildTemplate(player,structure, superCyb[14]) ){ _pos = 14; } + if( skCanBuildTemplate(player,structure, superCyb[11]) ){ _pos = 11; } + } + } + + //Build best Kinetic Template + if ( _bBuildKK_cyborg ){ + if( skCanBuildTemplate(player,structure, superCyb[13]) ){ _pos = 13; } + if( skCanBuildTemplate(player,structure, superCyb[8] ) ){ _pos = 8; } + } + count++; + } //endwhile + + if ( _pos == -1 ){ + printDebug1("#### SelectCyborgTemplate: (A) cannot build template ["& _pos &"] "); + nTotCybErr++; + exit; + } + if( skCanBuildTemplate(player,structure, superCyb[_pos]) ) + { + //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& _nBestTmpl &"] - tot templates found ("& nCybTemplates &") "); + buildDroid(superCyb[_pos],structure,player,1); //build droid + boolResult = false; + } else { + printDebug1("#### SelectCyborgTemplate: (B) cannot build template ["& _pos &"] "); + } + + } //end check on tankGroupMembers + + } + structure = enumStruct(); + } + } + +} + +// ---------------------- DylanDog ---------------------------------- +event buildRepFacSuppAttack(inactive) +{ + local int _totFacilities; + eventCheckTime[19] = gameTime; + + exit; //need to think if this is ok + +} +//======================================================================= +// do research +event doResearch(inactive)//doResearchTr +{ + ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); + eventCheckTime[20] = gameTime; + //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); + + + initEnumStruct(false,resLab,player,player); + structure= enumStruct(); + count = 0; + boolResult2 = true; + while(structure != NULLOBJECT and boolResult2) + { + if( structureIdle(structure) and structureComplete(structure) ){ + //displayMsg("doResearch: resLab ("& structure.id &")"); + //check for AA first!! + if ( bAttackedByVTOL ){ + if ( !researchFinished(CycloneAASite,player) ){ + //displayMsg("doResearch: forcing research of Cyclone AA Site"); + boolResult = pursueResearch(structure,player,CycloneAASite); + if (boolResult) { + printDebug1("doResearch: forcing research of Cyclone AA Site"); + boolResult2 = false; tLastResearch = gameTime; + }//execute only once + } + } + //need rearmin pad for VTOL troops? + if ( nVTOLFactories > 0 ){ + if ( !isStructureAvailable(vtolPad,player) ){ + //displayMsg("doResearch: forcing research OF VTOLPad"); + + boolResult = pursueResearch(structure,player,VTOLPadRes); + if (boolResult) { + printDebug1("doResearch: forced research OF VTOLPad"); + boolResult2 = false; tLastResearch = gameTime; + }//execute only once + } + } + + if ( !lStopResearch and boolResult2 ){ + + //1v1 game, human player has more power and derricks are ok + if (bForceResPowUp){ + if (!researchFinished(powUpgrades3,player)){ + boolResult = pursueResearch(structure,player,powUpgrades3); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); + printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); + } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } + } else { + if (!researchFinished(powUpgrades6,player)){ + boolResult = pursueResearch(structure,player,powUpgrades6); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); + printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); + } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } + } + } + } + + //Need a CB tower and bombard ? + if (boolResult2 and bAttackedByMortars){ + if (!researchFinished(resCBSense,player)){ + boolResult = pursueResearch(structure,player,resCBSense); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); + printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); + } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } + } else { + if (!researchFinished(bombardPit,player)){ + boolResult = pursueResearch(structure,player,bombardPit); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); + printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); + } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } + } + } + } + + //Need a CB tower and RippleRockets ? + if (boolResult2 and bAttackedByLongRangeWeap){ + if (!researchFinished(resCBSense,player)){ + boolResult = pursueResearch(structure,player,resCBSense); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); + printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); + } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } + } else { + if (!researchFinished(rippleRockets,player)){ + boolResult = pursueResearch(structure,player,rippleRockets); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); + printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); + } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } + } + } + } + + //Need Scorpion for VTOL templates? + if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ + boolResult = pursueResearch(structure,player,scorpionBody); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); + printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); + } + } + + //Need Scorpion for VTOL templates? + if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ + boolResult = pursueResearch(structure,player,lancerATweap); + if (boolResult) { + boolResult2 = false; tLastResearch = gameTime; + //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); + printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); + } + } + + //perform a standard Research + if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ + //displayMsg("doResearch: no standard research to pursue found, doing a random research"); + printDebug1("doResearch: no standard research to pursue found, doing a random research"); + skDoResearch(structure,player,1); + tLastResearch = gameTime; + boolResult2 = false;//execute only once + } else { + boolResult2 = false;//execute only once + } + + }// if ( !lStopResearch ){ + + }//if( structureIdle(structure) and structureComplete(structure) ){ + structure= enumStruct(); + } //endwhile + //}//(!lStopResearch) + + + // =========== perform cheap researches ============== + boolResult = true; + if ( !lStopCheapResearch ) + { + initEnumStruct(false,resLab,player,player); + structure= enumStruct(); + count = 0; + while(structure != NULLOBJECT and boolResult) + { + if( structureIdle(structure) and structureComplete(structure) ) + { + //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); + count = do_CheapResearch(structure, 0 ); + //if ( do_CheapResearch(structure, 0 ) < 0 ){ + //displayMsg("doResearch: no cheap research to pursue found"); + //} + boolResult = false;//execute only once + } + structure= enumStruct(); + } + }//(!lStopCheapResearch) +} + +//---------------------------------------------------------------- +event difficultyModifier(inactive) +{ + if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file + { + skDifficultyModifier(player); + } + else + { + setEventTrigger(difficultyModifier, inactive); + } +} + +//----------------------------------------------------------------------------- +event manageHelpTeam(inactive) +{ + + local int _dist; + + ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); + + + if ( gameTime - tProd4 >= 80 ){ + //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); + tProd4 = gameTime; + } + + if ( nAllyBeingHelped == -1 ){ + deactivateHelp(); + exit; + } + + if ( helpGroup.members == 0 ){ + msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); + deactivateHelp(); + } else { + //if haveBeacon + if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ + +//displayMsg("manageHelpTeam: 1"); + + //update beacon for the first time or with a new one + if ( beaconX[nAllyBeingHelped] > -1 ){ + nHelpX = beaconX[nAllyBeingHelped]; + nHelpY = beaconY[nAllyBeingHelped]; + } + _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); + + if ( _dist > TILE*12){ //move to beacon + if ( gameTime - tHelpAction > 200){ + orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); + //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); + tHelpAction = gameTime; + } + } else { //scout to beacon + if ( gameTime - tHelpAction > 50){ + orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); + tHelpAction = gameTime; + } + //reset help coord, this will force searching of target next time event is called + if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ + nHelpX = -1; + nHelpY = -1; + } + + } + + + } else { //else -> do not have beacon and help coord + +//displayMsg("manageHelpTeam: 2"); + + //beacon expired, no enemy in short range...get a target + if ( objTargetHelpTeam == NULLOBJECT ){ +//displayMsg("manageHelpTeam: 3"); + + //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); + if ( objTargetHelpTeam == NULLOBJECT ){ + objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); + } + if ( objTargetHelpTeam == NULLOBJECT ){ + objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); + } + + + if ( objTargetHelpTeam != NULLOBJECT ){ +//displayMsg("manageHelpTeam: 4"); + + _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); + + if ( _dist > TILE*12){ //move to target + if ( gameTime - tHelpAction > 200){ + orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); + msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); + tHelpAction = gameTime; + } + } else { //scout to target + if ( gameTime - tHelpAction > 50){ + orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); + //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); + tHelpAction = gameTime; + } + } + + } else { +//displayMsg("manageHelpTeam: 5"); + //deactivate help, no more enemies in Range + msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); + deactivateHelp(); + } + + } else { //have a target!!! + +//displayMsg("manageHelpTeam: 6"); + if ( gameTime - tHelpAction > 50){ + orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); + //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); + tHelpAction = gameTime; + } + + } + } + + } +} + +//---------------------------------------------------------------- +// check if all units are assigned to a group !!! +event unitAssignationCheck( inactive ) +{ + eventCheckTime[21] = gameTime; + count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; + if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) + { + dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); + setEventTrigger(reSortUnits,reSortUnitsTr); + } +} +//---------------------------------------------------------------- +event VTOLmicroManager(inactive) +{ + local DROID _droid,_targetVTOL[3]; + local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; + local DROID _aTmp[60]; + _n=0; _i=0; _nNumEnDroids=0; + + if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } + if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } + + /* + //update array enemy droids in alert area + InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); + _droid = EnumDroid(); + while(_droid != NULLOBJECT and _n < 60) + { + if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ + aTmp[_n] = _droid; + _n++; + _nNumEnDroids++; + } + _droid = EnumDroid(); + } + + //get best three targets + _i=0; + _nBestHit = 999999; + _loop = 0; + while (_loop < 3 and _loop < _nNumEnDroids){ + _i=0; + while (_i <= _n){ + _droid = aTmp[_i]; + if ( _droid.hitPoints > _nBestHit ) { + _targetVTOL[_loop] = _droid; + _nBestHit = _droid.hitPoints; + _nPos = _i; + } + _i++; + } + //clear this array pos to avoid to be chosen twice or more + aTmp[_nPos] = NULLOBJECT; + _loop++; + } + + //Attack the targets, assign at least 3 droids to each target + _i=0; + _n=0; + initIterateGroup(vtolDefendGr); + droid = iterateGroup(vtolDefendGr); + while(droid != NULLOBJECT) + { + if ( _n == 3 ){ _i++; _n=0;} + if ( _i == 3 ){ _i=0;} + orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); + _n++; + droid = iterateGroup(vtolDefendGr) + } + + + */ +} +//---------------------------------------------------------------- +event reassignPlayers(reassignPlayersTr) +{ + if( playerLeft == player ){ + console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); + bRunning = true; + activateAI(); + } +} + + +//---------------------------------------------------------------- +//Check if any threat is in range of Trucks/cybEng order location. +//The order RTB is given only if the droid distance from order location is +// greater than 4 TILES. This because AI left the droid complete the +// building even with threat in range. The droid is called back anyway if +// it is attacked (see event AIattacked). +event threatCheck(threatCheckTr) +{ + local int _dist,_dist2; + + //buildGroup + initIterateGroup(buildGroup); + droid = iterateGroup(buildGroup); + while(droid != NULLOBJECT) + { + _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); + _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); + if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) + { + //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); + orderDroid( droid, DORDER_RTB ); + } + droid = iterateGroup(buildGroup); + } + + //buildDefGroup + initIterateGroup(buildDefGroup); + droid = iterateGroup(buildDefGroup); + while(droid != NULLOBJECT) + { + _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); + _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); + if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) + { + //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); + orderDroid( droid, DORDER_RTB ); + } + droid = iterateGroup(buildDefGroup); + } + + //cyborgConstruct + initIterateGroup(cyborgConstructGroup); + droid = iterateGroup(cyborgConstructGroup); + while(droid != NULLOBJECT) + { + _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); + _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); + if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) + { + //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); + orderDroid( droid, DORDER_RTB ); + } + droid = iterateGroup(cyborgConstructGroup); + } + +} +//---------------------------------------------------------------- +//structureBuiltInRange +event buildRippleRockets(inactive) +{ + + local int _nBestDef, _numWeapInRange, _numWeapInBase, _rnd; + + if(!isStructureAvailable(incendrys[3],player)){ exit; } + + _numWeapInBase = numStructinRange(incendrys[3],player, baseX, baseY, nDefendRange ); + + //dbg("buildRippleRockets Weap: lMinBaseStructBuilt("& lMinBaseStructBuilt &") _numWeapInBase("& _numWeapInBase &") lStopBuildDef("& lStopBuildDef &") tLastRRBuilt("& tLastRRBuilt &")",player); + + if ( _numWeapInBase >= 2 or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; } + if ( _numWeapInBase > 1 and lStopBuildDef ) { exit; } + if ( gameTime - tLastRRBuilt < 3 * TIME_MINUTE ){ exit; } + + + droid = closestDroidCanBuild(buildDefGroup,baseX, baseY); + if (droid == NULLOBJECT){ + droid = closestIdleDroid(buildGroup,baseX, baseY); + } + if ( buildGroup.members < 2 and buildDefGroup.members < 2){ + if (droid == NULLOBJECT){ + droid = pickCybEng(true); + } + } + + + // build AA defenses. + if ( droid != NULLOBJECT ){ + + //pick up the position + buildX = baseX+(5*TILE); + buildY = baseY-(5*TILE); + + if(_nBestDef >= 0 ){ + boolResult = pickStructLocation(incendrys[3], ref buildX, ref buildY, player); + if(boolResult and droidCanReach(droid, buildX ,buildY) ) + { + printDebug1("buildRippleRockets: build Ripple Rockets _numWeapInBase("& _numWeapInBase &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,incendrys[3],buildX,buildY); + tLastRRBuilt = gameTime; + } + } //else { displayMsg("buildRippleRockets: No def struc found"); } + } //else { displayMsg("buildRippleRockets: No idle droid found"); } +} + +//---------------------------------------------------------------- +//structureBuiltInRange +event buildArtillery(inactive) +{ + local int _nBestDef, _numWeapInRange, _numWeapInBase, _rnd; + + //find best defense we can build. + count = 0; + _nBestDef = -1; + while( count < numIncendrys) + { + if(isStructureAvailable(incendrys[count],player)) + { _nBestDef = count; } + count++; + } + if ( _nBestDef < 0 ){ exit; }//no artillery + + count = 0; + while( count < numIncendrys) + { + _numWeapInBase = _numWeapInBase + numStructinRange(incendrys[count],player, baseX, baseY, nDefendRange + TILE*3); + count++; + } + + //dbg("buildArtillery Weap: lMinBaseStructBuilt("& lMinBaseStructBuilt &") num weap in base("& _numWeapInBase &") lStopBuildDef("& lStopBuildDef &") tLastArtilleryBuilt("& tLastArtilleryBuilt &")",player); + + if ( _numWeapInBase >= 5 or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; } + if ( _numWeapInBase > 2 and lStopBuildDef ) { exit; } + //if ( gameTime - tLastIWbuilt < 1 * TIME_MINUTE ){ exit; } + + droid = closestDroidCanBuild(buildDefGroup,baseX, baseY); + if (droid == NULLOBJECT){ + droid = closestIdleDroid(buildGroup,baseX, baseY); + } + + // build AA defenses. + if ( droid != NULLOBJECT ){ + + //pick up the position + nArtilleryPos++; + if ( nArtilleryPos > 3 ){ nArtilleryPos = 0; } + if ( nArtilleryPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } + if ( nArtilleryPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } + if ( nArtilleryPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } + if ( nArtilleryPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } + + if(_nBestDef >= 0 ){ + boolResult = pickStructLocation(incendrys[_nBestDef], ref buildX, ref buildY,player); + if(boolResult and droidCanReach(droid, buildX ,buildY) ) + { + printDebug1("buildArtillery: build def ["& _nBestDef &"] _numWeapInBase("& _numWeapInBase &")"); + orderDroidStatsLoc(droid, DORDER_BUILD,incendrys[_nBestDef],buildX,buildY); + tLastArtilleryBuilt = gameTime; + } + } //else { displayMsg("buildArtillery: No def struc found"); } + } //else { displayMsg("buildArtillery: No idle droid found"); } +} + +/* +============================================================================== +Functions Section +============================================================================== +*/ +function void shutDownThisAI() +{ + bRunning = false; + setEventTrigger(activateAttack, inactive); + setEventTrigger(AIbrain, inactive); + setEventTrigger(AIcheck, inactive); + setEventTrigger(defFromLongRangeWeap, inactive); + setEventTrigger(beaconEv, inactive); + setEventTrigger(buildAAdef, inactive); + setEventTrigger(buildBase, inactive); + setEventTrigger(buildPowerGenerators, inactive); + setEventTrigger(buildRepFacSuppAttack, inactive); + setEventTrigger(buildRepFirst, inactive); + setEventTrigger(buildVtols, inactive); + setEventTrigger(CyborgAttack, inactive); + setEventTrigger(defendBase, inactive); + setEventTrigger(defendDerrick, inactive); + setEventTrigger(defendGatewaysPoint, inactive); + setEventTrigger(difficultyModifier, inactive); + setEventTrigger(doResearch, inactive); + setEventTrigger(evDebug, inactive); + setEventTrigger(evPrintDebug, inactive); + setEventTrigger(harvesterOperate, inactive); + setEventTrigger(manageDefCyborgs, inactive); + setEventTrigger(manageDefTank, inactive); + setEventTrigger(manageDefVTOL, inactive); + setEventTrigger(manageHelpTeam, inactive); + setEventTrigger(manageIdleTrucks, inactive); + setEventTrigger(manageRepairTeam, inactive); + setEventTrigger(reSortUnits, inactive); + setEventTrigger(SelectCyborgTemplate, inactive); + setEventTrigger(SelectTankTemplate, inactive); + setEventTrigger(sendBackDamagedUnits, inactive); + setEventTrigger(showAImessage, inactive); + setEventTrigger(showPlayerInfo, inactive); + setEventTrigger(shutDownAI, inactive); + setEventTrigger(TankAttack, inactive); + setEventTrigger(truckGroupSlider, inactive); + setEventTrigger(unitAssignationCheck, inactive); + setEventTrigger(unitRepairSwitch, inactive); + setEventTrigger(updateBaseDetails, inactive); + setEventTrigger(upgradeStructures, inactive); + setEventTrigger(useLassat, inactive); + setEventTrigger(vtolEnabler, inactive); + setEventTrigger(vtolStructs, inactive); + setEventTrigger(threatCheck,inactive); + //events activated via callbacks, not sure if this is required or not. + setEventTrigger(droidBuilt, inactive); + setEventTrigger(AIattacked, inactive); + setEventTrigger(vtolDefend, inactive); + //setEventTrigger(consoleEv, inactive); + setEventTrigger(multiMsgEv, inactive); + setEventTrigger(beaconEv, inactive); + setEventTrigger(reassignPlayers, inactive); + setEventTrigger(VTOLhunter,inactive); + setEventTrigger(buildArtillery,inactive); + setEventTrigger(buildRippleRockets,inactive); + + + +} +//----------------------------------------------------------------------------- +function void buildRearmPads() +{ + + if(!isStructureAvailable(vtolPad,player)){ + //displayMsg("*** buildRearmPads: vtolPad not available "); + return; + } + + buildX = baseX; + buildY = baseY; + + if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) + { + droid = closestDroidCanBuild(buildGroup, buildX , buildY ); + if ( buildGroup.members < 2 ){ + if (droid == NULLOBJECT){ + droid = pickCybEng(true); + } + } + if(droid != NULLOBJECT) + { + if ( droidCanReach(droid, buildX, buildY) ){ + //displayMsg("*** buildRearmPads: droid to build vtolPad"); + orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); + } + } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } + } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } +} +//----------------------------------------------------------------------------- +function void vtolFactoryBuildVtol(STRUCTURE _factory) +{ + local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; + local TEMPLATE _tmplToBuild; + local bool _bResult, _bBombVTOL; + + if( _factory == NULLOBJECT){ return; } + if( !structureIdle(_factory) ) { return; } + + _bResult = false; + _bBombVTOL = false; + + _t = -1; + _nLoop = 0; + _nTemplAT = 0; + _nTemplBomb = 0; + while( _nLoop < numVtolTemplates ) + { + if ( _nLoop < 5 ){//AT - light/medium body + if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ + _nTemplAT++; + _bResult = true; + //dbg("vtolFactoryBuildVtol: can build AT vtols["& _nLoop &"]",player); + } + } else { //Bomb - Heavy Body + if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ + //dbg("vtolFactoryBuildVtol: can build Bomb vtols["& _nLoop &"]",player); + _nTemplBomb++; + _bResult = true; + } + } + _nLoop++; + } + + if(!_bResult) { + //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); + return; + } + + + _nRnd = random(100); + if ( _nTemplBomb == 0){ //Only AT + + if ( _nRnd < 70 ){ //Lancer - Scourge + //Lancer-Scourge + if( skCanBuildTemplate( player ,_factory, vtols[0]) ){ _t = 0; } + if( skCanBuildTemplate( player ,_factory, vtols[2]) ){ _t = 2; } + if( skCanBuildTemplate( player ,_factory, vtols[4]) ){ _t = 4; } + if ( _t == -1 ){ //backup + if( skCanBuildTemplate( player ,_factory, vtols[1]) ){ _t = 1; } + if( skCanBuildTemplate( player ,_factory, vtols[3]) ){ _t = 3; } + } + } else {//HPV + if( skCanBuildTemplate( player ,_factory, vtols[1]) ){ _t = 1; } + if( skCanBuildTemplate( player ,_factory, vtols[3]) ){ _t = 3; } + if ( _t == -1 ){ //backup + if( skCanBuildTemplate( player ,_factory, vtols[0]) ){ _t = 0; } + if( skCanBuildTemplate( player ,_factory, vtols[2]) ){ _t = 2; } + if( skCanBuildTemplate( player ,_factory, vtols[4]) ){ _t = 4; } + } + } + + + } else { + + if ( _nRnd < 50 ){ //Bomb + + if( skCanBuildTemplate( player ,_factory, vtols[5]) ){ _t = 5; } + if( skCanBuildTemplate( player ,_factory, vtols[6]) ){ _t = 6; } + if( skCanBuildTemplate( player ,_factory, vtols[7]) ){ _t = 7; } + if( skCanBuildTemplate( player ,_factory, vtols[8]) ){ _t = 8; } + + } else { //AT + + _nRnd = random(100); + if ( _nRnd < 70 ){ //Lancer - Scourge + //Lancer-Scourge + if( skCanBuildTemplate( player ,_factory, vtols[0]) ){ _t = 0; } + if( skCanBuildTemplate( player ,_factory, vtols[2]) ){ _t = 2; } + if( skCanBuildTemplate( player ,_factory, vtols[4]) ){ _t = 4; } + if ( _t == -1 ){ //backup + if( skCanBuildTemplate( player ,_factory, vtols[1]) ){ _t = 1; } + if( skCanBuildTemplate( player ,_factory, vtols[3]) ){ _t = 3; } + } + } else {//HPV + if( skCanBuildTemplate( player ,_factory, vtols[1]) ){ _t = 1; } + if( skCanBuildTemplate( player ,_factory, vtols[3]) ){ _t = 3; } + if ( _t == -1 ){ //backup + if( skCanBuildTemplate( player ,_factory, vtols[0]) ){ _t = 0; } + if( skCanBuildTemplate( player ,_factory, vtols[2]) ){ _t = 2; } + if( skCanBuildTemplate( player ,_factory, vtols[4]) ){ _t = 4; } + } + } + + } + } + + if ( _t == -1 ){ + //dbg("vtolFactoryBuildVtol: tmplate not found lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); + exit; + } + + if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ + displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &")"); + buildDroid(vtols[_t],_factory,player,1); + } + //else { + //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); + //} + + +} +//----------------------------------------------------------------------------- +function void deactivateTankAttack() +{ + tTanksSentToGathering = 0; + tTankAttackAction = 0; + bTankAttIsOn = false; + lTankSentToGatheringPoint = false; + bTankAlreadyGathered = false; + nTankGatheringX = -1; + nTankGatheringY = -1; + tankAttackX = -1; + tankAttackY = -1; + targetPlayerTank = -1; + attackTankObj = NULLOBJECT; + bAttackTeamAttacked = false; + setEventTrigger(TankAttack,inactive); +} +//----------------------------------------------------------------------------- +function void deactivateCybAttack() +{ + bCybAttIsOn = false; + lCybSentToGatheringPoint = false; + bCybAlreadyGathered = false; + cybAttackX = -1; + cybAttackY = -1; + nCybGatheringX = -1; + nCybGatheringY = -1; + targetPlayerCyb = -1; + tCybSentToGathering = 0; + tCybAttackAction = 0; + bAttackTeamAttacked = false; + setEventTrigger(CyborgAttack,inactive); +} +//----------------------------------------------------------------------------- +function void harvestNearOilRes() +{ + local FEATURE _oilRes, _bestOilRes; + local int _player,_tempDist,_bestDist; + local STRUCTURE _hq; + local bool _okToProceed; + + _oilRes = NULLOBJECT; + _bestOilRes = NULLOBJECT; + _okToProceed = true; + _bestDist = 9999*TILE; + + droid = pickCybEng(true);//needed for droidCanReach + if( droid != NULLOBJECT ) { + + initGetFeature(oilRes,player,player); + _oilRes = getFeature(player); + + while(_oilRes != NULLOBJECT) + { + + if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { + + //check oilRes is not in Ally base range + _okToProceed = true; + _player=0; + while (_player < MAX_PLAYERS) + { + //check oilRes is not in range of an Ally base, leave this oilRes to the Ally + if ( friendlyPlayer(_player) and ( _player != player) ){//OK + _hq = getStructure( playerHQ , _player); + if ( _hq != NULLOBJECT ){ + if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) + { _okToProceed = false; } + } + } + + _player++; + }//endwhile + + //Check this oilRes is not too far away, trucks will harvest anyway + count = ((mapWidth+mapHeight)/2)*TILE; + count = (count/2);//half map + count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); + if ( count2 > count ) + { + _okToProceed = false; + //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); + } + + + //check for threats in range + if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) + { _okToProceed = false; } + + if ( _okToProceed ){ + _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); + if(_tempDist < _bestDist ) + { + _bestOilRes = _oilRes; + _bestDist = _tempDist; + } + } + + }//endif droidCanReach + + _oilRes = getFeature(player); + }//while + + + } + if ( _bestOilRes != NULLOBJECT ){ + droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); + if ( nMyDerricks < numMaxDerricks ) { + orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); + //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); + } + } + + return; +} +//----------------------------------------------------------------------------- +function DROID pickCybEng(bool _idleOne) +{ + local DROID _Truck,_tempTruck; + _Truck = NULLOBJECT; + initIterateGroup(cyborgConstructGroup); + _tempTruck = iterateGroup(cyborgConstructGroup); + while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) + { + if(_idleOne) + { + if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } + } else { + _Truck = _tempTruck; + } + _tempTruck = iterateGroup(cyborgConstructGroup); + }//end while + + return _Truck; +} + +//----------------------------------------------------------------------------- +function int getOilResTargetFree() +{ + local int _i; + _i = 0; + while ( _i < 11 ) + { + //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); + if (oilResTargetId[_i] == -1) + { + return _i; + } + _i++; + } + return -1; +} + + +//----------------------------------------------------------------------------- +function void checkDerrickIsBuilt(int _player) +{ + local STRUCTURE _structure; + local FEATURE _tempOilRes; + local int _i, _cc,_el; + + //if no oliRes left then reset the array! + initGetFeature(oilRes,-1,player); + _tempOilRes = getFeature(player); + _i = 0; + while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) + { + _i++; + _tempOilRes = getFeature(player); + } + + if( _i == 0 ){ + //general reset of array + _cc = 0; + while ( _cc < 11 ) + { + oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; + _cc++; + } + } + + _el = 0; + initEnumStruct(false,derrick,_player,_player); + _structure= enumStruct(); + //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ + while ( _structure != NULLOBJECT ) + { + while ( _el < 11 ) + { + if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) + { + //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ + oilResTargetId[_el] = -1; + oilResTargetX[_el] = -1; + oilResTargetY[_el] = -1; + } + //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} + _el++; + } + _el = 0; + _structure= enumStruct(); + } +} +//----------------------------------------------------------------------------- +function void stopDroidHarvesting() +{ + local int _player, _dist, _dist2, _c2; + + _player=0; + + if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} + + while ( _player < MAX_PLAYERS ) + { + initEnumStruct(false,derrick,_player,_player); + structure= enumStruct(); + _c2=0; + while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) + { + //check harvesting team first + initIterateGroup(harvesterGroup); + droid = iterateGroup(harvesterGroup); + while(droid != NULLOBJECT) + { + if( droid.orderx == structure.x and droid.ordery == structure.y ){ + _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); + if( _dist > 3*TILE ){ + //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); + if ( bOilResLeft ){ + //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); + orderDroid( droid, DORDER_STOP ); + } else { + if( _dist < 20 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ + //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); + boolResult = buildDefStruct(droid,structure.x,structure.y); + if ( !boolResult ){//cannot reach location! + //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); + orderDroid( droid, DORDER_RTB ); + } + } else { + //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); + orderDroid( droid, DORDER_RTB ); + } + } + } + } + droid = iterateGroup(harvesterGroup); + } + //check cyborg engineers + initIterateGroup(cyborgConstructGroup); + droid = iterateGroup(cyborgConstructGroup); + while(droid != NULLOBJECT) + { + if( droid.orderx == structure.x and droid.ordery == structure.y ){ + _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); + if( _dist > 3*TILE ){ + //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); + if ( bOilResLeft ){ + //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); + orderDroid( droid, DORDER_STOP ); + } else { + if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ + //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); + boolResult = buildDefStruct(droid,structure.x,structure.y); + if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } + } else { + //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); + orderDroid( droid, DORDER_RTB ); + } + } + } + } + droid = iterateGroup(cyborgConstructGroup); + } + + structure= enumStruct(); + _c2++; + } + _player++; + } + + //check if any threat is in range + initIterateGroup(harvesterGroup); + droid = iterateGroup(harvesterGroup); + while(droid != NULLOBJECT) + { + _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); + if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) + { + //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); + orderDroid( droid, DORDER_RTB ); + } + droid = iterateGroup(harvesterGroup); + } + + initIterateGroup(cyborgConstructGroup); + droid = iterateGroup(cyborgConstructGroup); + while(droid != NULLOBJECT) + { + _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); + _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); + if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) + { + //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); + orderDroid( droid, DORDER_RTB ); + } + droid = iterateGroup(cyborgConstructGroup); + } + + return; +} +//----------------------------------------------------------------------------- +function bool buildDefStruct(DROID _droid, int _x, int _y ) +{ + local int _t; + _t = max(pickDefQueueDepth - 1 - _random(3),0); + if( isStructureAvailable(pickDefQueue[_t],player) ) + { + buildX = _x ; + buildY = _y ; + if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) + { + if (droidCanReach(_droid, buildX, buildY) ){ + orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); + //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); + return true; + } + } + } + return false; +} + +//----------------------------------------------------------------------------- +function int getWeaponUnitsInfo( int _player, int _choice) +{ + + if ( _choice == WUI_TOTUNITS){ + return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; + } + if ( _choice == WUI_POWER){ + return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; + } + if ( _choice == WUI_HP){ + return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; + } + return -1; +} +//----------------------------------------------------------------------------- +function float getPowerIndex(int _player) +{ + + + local RESEARCHSTAT _powUpgrades[7]; + local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; + local float _powIndRet; + _nArr = 7; + + _powUpgrades[0] = powUpgrades0; + _powUpgrades[1] = powUpgrades1; + _powUpgrades[2] = powUpgrades2; + _powUpgrades[3] = powUpgrades3; + _powUpgrades[4] = powUpgrades4; + _powUpgrades[5] = powUpgrades5; + _powUpgrades[6] = powUpgrades6; + + _powUpgrPerc[0] = 125; + _powUpgrPerc[1] = 150; + _powUpgrPerc[2] = 175; + _powUpgrPerc[3] = 200; + _powUpgrPerc[4] = 230; + _powUpgrPerc[5] = 260; + _powUpgrPerc[6] = 290; + + _nLastRes = -1; + _index = 0; + while ( _index < _nArr ){ + if (researchFinished( _powUpgrades[_index],_player) ){ + //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); + _nLastRes = _index; + } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} + _index++; + } + _nDerricks = getNumDerricks(_player); + + if ( _nLastRes != -1 ) + { + _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; + //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); + return _powIndRet; + } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} + + return (float)_nDerricks; + //researchFinished(res,pl) + +} +//----------------------------------------------------------------------------- +function int getNumDerricks(int _player) +{ + local int _count; + local STRUCTURE _structure; + _count = 0; + initEnumStruct(false,derrick,_player,_player); + _structure= enumStruct(); + while ( _structure != NULLOBJECT ) + { + _count++; + _structure= enumStruct(); + } + return _count; +} + +//----------------------------------------------------------------------------- +// show a debug message, ca be activated/deactivated +function void displayMsg(STRING _message) +{ + if( isHumanPlayer(player) ) + { + dbg(_message, player); + } +} +//----------------------------------------------------------------------------- +// show a debug message -> reports error +function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) +{ + local int _toPlayer; + _toPlayer = 0; + + //avoid too many blips... + if ( _message != "help" ){ + if ( (gameTime - tBeaconSent) < 2*TIME_MINUTE ){ return; } + } else { + if ( (gameTime - tBeaconSent) < 1*TIME_MINUTE ){ return; } + } + + while ( _toPlayer < MAX_PLAYERS ){ + if( friendlyPlayer(_toPlayer) ){ + if ( _bToHuman ){ + if ( isHumanPlayer(_toPlayer) ){ + dropBeacon( _message, _toPlayer, player, _x, _y, _z ); + msg( _message, player, _toPlayer); + } + } else { //send msg to AI + if ( !isHumanPlayer(_toPlayer) ){ + dropBeacon( "a", _toPlayer, player, _x, _y, _z ); + msg( _message, player, _toPlayer); + } + } + } + _toPlayer++; + } + tBeaconSent = gameTime; + return; + +} + +//----------------------------------------------------------------------------- +// show a debug message -> reports error +function void sendMsgToAllAllies(STRING _message) +{ + local int _c; + _c = 0; + while ( _c < MAX_PLAYERS ){ + if( friendlyPlayer(_c) ) + { + msg(_message, player, _c ); + } + _c++; + } +} +//----------------------------------------------------------------------------- +// show a debug message -> reports error +function void displayErrMsg(STRING _message) +{ + local int _c; + _c = 0; + while ( _c < MAX_PLAYERS ){ + if( isHumanPlayer(_c) ) + { + dbg(_message, _c); + } + _c++; + } +} +//----------------------------------------------------------------------------- +// Return an AA defence as target for +// VTOL: _nDefInRange*3 < vtolDefendGr.members +// DROID: _nDefInRange < 1 +function STRUCTURE getAAStruct(bool _bVTOLTarget) +{ + local int _n, _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; + local STRUCTURE _bestAAdef, _tempAAdef, _BaseStruct,_struct; + + _bestDist = 999*TILE; + _bestAAdef = NULLOBJECT; + _numPl = 0;//avoid to start always from player 0 + _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 + + while(_numPl < MAX_PLAYERS) + { + + if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ + //displayMsg("undefendedEnemyAAdef: AAdef x-y("& _targetPl &"-"& count &")"); + //find enemy HQ and check distance to AAdef + _dist = 0; + _struct = getStructure(playerHQ,_targetPl); + if ( _struct == NULLOBJECT ){ + _struct = getStructure(factory,_targetPl); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(resLab,_targetPl); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(cybFactory,_targetPl); + } + + if ( _struct != NULLOBJECT ){ + //only AAdefs visible to player (myself) are processed + + _n=0; + while (_n < numGenAA){ + + if ( AIstrength < 4 ){ + initEnumStruct(false,vtolGenStruct[_n],_targetPl,player); //only struct visible to player + } else { + initEnumStruct(false,vtolGenStruct[_n],_targetPl,_targetPl); //all structs, also those not visible to player + } + _tempAAdef = enumStruct(); + while(_tempAAdef != NULLOBJECT and _struct != NULLOBJECT) + { + _tempDist = distBetweenTwoPoints(_tempAAdef.x, _tempAAdef.y, baseX, baseY); + _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempAAdef.x, _tempAAdef.y); + + if ( _bVTOLTarget ){ + _nDefInRange = numEnemyAAInRange(_tempAAdef.x, _tempAAdef.y, AA_THREAT_RANGE ); + if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange*3 < vtolDefendGr.members ){ + _bestAAdef = _tempAAdef; + _bestDist = _tempDist; + } + } else { + _nDefInRange = numEnemyWeapStructsInRange(player, _tempAAdef.x, _tempAAdef.y, COMBAT_RANGE , false); + if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 1 ){ + _bestAAdef = _tempAAdef; + _bestDist = _tempDist; + } + } + + _tempAAdef = enumStruct(); + }//while + + _n++; + }//while + + + + }//struct + + + } + _targetPl++; + if ( _targetPl > 7 ){ _targetPl = 0; } + _numPl++; + }//endwhile players + + return _bestAAdef; +} +//----------------------------------------------------------------------------- +// Return a derrick as target for +// VTOL: _nDefInRange*3 < vtolDefendGr.members +// DROID: _nDefInRange < 1 +function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) +{ + local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; + local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; + + _bestDist = 999*TILE; + _derrick = NULLOBJECT; + _numPl = 0;//avoid to start always from player 0 + _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 + + while(_numPl < MAX_PLAYERS) + { + + if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ + //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); + //find enemy HQ and check distance to derrick + _dist = 0; + _struct = getStructure(playerHQ,_targetPl); + if ( _struct == NULLOBJECT ){ + _struct = getStructure(factory,_targetPl); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(resLab,_targetPl); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(cybFactory,_targetPl); + } + + if ( _struct != NULLOBJECT ){ + //only derricks visible to player (myself) are processed + if ( AIstrength < 4 ){ + initEnumStruct(false,derrick,_targetPl,player); //only struct visible to player + } else { + initEnumStruct(false,derrick,_targetPl,_targetPl); //all structs, also those not visible to player + } + _tempDerrick = enumStruct(); + while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) + { + _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); + _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); + + if ( _bVTOLTarget ){ + _nDefInRange = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); + if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange*3 < vtolDefendGr.members ){ + _derrick = _tempDerrick; + _bestDist = _tempDist; + } + } else { + _nDefInRange = numEnemyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, COMBAT_RANGE , false); + if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 1 ){ + _derrick = _tempDerrick; + _bestDist = _tempDist; + } + } + + _tempDerrick = enumStruct(); + }//while + }//struct + + + } + _targetPl++; + if ( _targetPl > 7 ){ _targetPl = 0; } + _numPl++; + }//endwhile players + + return _derrick; +} +//----------------------------------------------------------------------------- +function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) +{ + + local int _bestDist, _tempDist, _targetPl, _dist,_xCoord,_yCoord ; + local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; + + _bestDist = 999*TILE; + _derrick = NULLOBJECT; + _targetPl = 0;//avoid to start always from player 0 + + while(_targetPl < MAX_PLAYERS) + { + + boolResult = true; + if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ + boolResult = false; + } + //a target player is required? + if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ + boolResult = false; + } + + if ( !friendlyPlayer(_targetPl) and boolResult ){ + + //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); + //find enemy HQ and check distance to derrick + _dist = 0; + _xCoord = getEnemy_baseCoord( _targetPl , "X" ); + _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); + + if (_xCoord>0 and _yCoord>0 ){ + //only derricks visible to player (myself) are processed + initEnumStruct(false,derrick,_targetPl,player); + _tempDerrick = enumStruct(); + while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) + { + _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); + _dist = distBetweenTwoPoints(_xCoord, _yCoord, _tempDerrick.x, _tempDerrick.y); + + //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); + if (_tempDist < _bestDist and _dist > 20*TILE ){ + _derrick = _tempDerrick; + _bestDist = _tempDist; + } + _tempDerrick = enumStruct(); + }//while + } + + + } + _targetPl++; + }//endwhile players + + return _derrick; + +} +//----------------------------------------------------------------------------- +/* + Used to pick up the most appropriate Derrick to defend. + It also check that the Derrick has already enough defences or not. +*/ +function STRUCTURE closestDerrickToDefend() +{ + local int _bestDist, _derrickDist; + local STRUCTURE _derrick, _tempDerrick; + local bool _OK1, _OK2; + + _bestDist = 999*TILE; + _derrick = NULLOBJECT; + + initEnumStruct(false,derrick,player,player); + _tempDerrick = enumStruct(); + + if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) + { + return _derrick; + } + while(_tempDerrick != NULLOBJECT) + { + _OK1 = false; + _OK2 = false; + _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); + if( _derrickDist > max(nBaseRange,15*TILE) ) + { + + //check derrick area + if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) + { + if ( _derrickDist < _bestDist ) + { + _OK1 = true; + //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); + } + } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } + + //now check the building area + buildX = _tempDerrick.x; + buildY = _tempDerrick.y; + boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); + if(boolResult) + { + //check for defence structs in BUILDING area, this is an HACK + if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ + _OK2 = true; + } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } + } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } + + if ( _OK1 and _OK2 ) + { + _derrick = _tempDerrick; + _bestDist = _derrickDist; + } + + } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } + _tempDerrick = enumStruct(); + }//endwhile + return _derrick; +} +//----------------------------------------------------------------------------- +//Pick up the closest oilRes at given coord and check that oliRes is not already +//a "target" of another droid +function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) +{ + local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; + local FEATURE _closestOilRes,_tempOilRes; + local bool _okToProceed; + local STRUCTURE _hq; + + _bestDist = 999*TILE; + _closestOilRes = NULLOBJECT; + _okToProceed = TRUE; + _nOilResFound = 0; + + _player=0; + while (_player < MAX_PLAYERS) + { + initGetFeature(oilRes,-1,player); + _tempOilRes = getFeature(player); + _ii = 0; + while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) + { + + //check the oilRes can be reached + if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT + if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ + _okToProceed = false; + } + } else { + _okToProceed = false; + } + //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); + + //check that this OilRes is not already a "target" of a droid + if ( gameTime < TIME_HARVESTING_PHASE ){ + _i = 0; + while (_i < 11) + { + if ( _tempOilRes.id == oilResTargetId[_i] ){ + _okToProceed = false; + } + _i++; + } + } + + //check oilRes is not in range of an Ally base, leave this oilRes to the Ally + if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK + _hq = getStructure(playerHQ,_player); + if ( _hq != NULLOBJECT ) { + if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) + { + _okToProceed = false; + } + } + } + + //check for threats in range + if( gameTime > TIME_HARVESTING_PHASE ){ + if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) + { + _okToProceed = false; + } + } else { + if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) + { + _okToProceed = false; + } + } + + + if ( _okToProceed ) { + _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); + //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); + if (_tempDist < _bestDist ) + { + _closestOilRes = _tempOilRes; + _bestDist = _tempDist; + } + } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } + _tempOilRes = getFeature(player); + _nOilResFound++; + _okToProceed = true; + _ii++; + } + _player++; + } + + return _closestOilRes; +} + +//----------------------------------------------------------------------------- +function DROID getADroid(GROUP _theGRP) +{ + local DROID _tempTruck,_returnTruck; + + _returnTruck = NULLOBJECT; + + initIterateGroup(_theGRP); + _tempTruck = iterateGroup(_theGRP); + while(_tempTruck != NULLOBJECT) + { + _returnTruck = _tempTruck; + _tempTruck = iterateGroup(_theGRP); + } + + return _returnTruck; +} +//----------------------------------------------------------------------------- +function bool droidOrderIdle(DROID _droid) +{ + if(_droid.order == DORDER_RTB){ + return true; + } + + if(_droid.order == DORDER_STOP){ + return true; + } + + if(_droid.order == DORDER_NONE){ + return true; + } + + if(_droid.order == DORDER_GUARD){ + return true; + } + + return false; +} +//----------------------------------------------------------------------------- +function void debugCentreView(DROID _droid) +{ + + local int _player; + _player = 0; + if( debugCenterView == true ){ + while(_player < 8) + { + if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK + centreView(_droid); + } + _player++; + } + } +} + +//----------------------------------------------------------------------------- +function DROID pickDefTruck(bool _idleOne) +{ + local DROID _tempTruck, _Truck; + + _Truck = NULLOBJECT; + + initIterateGroup(buildDefGroup); + _tempTruck = iterateGroup(buildDefGroup); + //let`s try with really idle one + while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) + { + if( droidOrderIdle(_tempTruck) ) { + _Truck = _tempTruck; + } + if ( !_idleOne and _Truck == NULLOBJECT ){ + if ( _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR ){ + _Truck = _tempTruck; + } + } + _tempTruck = iterateGroup(buildDefGroup); + }//end while + + /* + //now try with trucks just helping or repairing + if ( _Truck == NULLOBJECT ){ + initIterateGroup(buildDefGroup); + _tempTruck = iterateGroup(buildDefGroup); + while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) + { + if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { + _Truck = _tempTruck; + } + _tempTruck = iterateGroup(buildDefGroup); + }//end while + } + */ + + return _Truck; +} +//----------------------------------------------------------------------------- +// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); +function void buildGatewayDef(DROID _defTruck, int _pos) +{ + local int _x,_y,_nDefBuilt,_tmpl,_n; + + if (_defTruck == NULLOBJECT ){ return; } + + //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); + if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ + //dbg("dbg->buildGatewayDef(): No wall def available",player); + return; + } + + _x = aGatewayPosX[_pos]; + _y = aGatewayPosY[_pos]; + if ( pickWallDefQueueDepth > 0 ){ + _n = min(pickWallDefQueueDepth,3); + _tmpl = pickWallDefQueueDepth - 1 - _random(_n); + if(isStructureAvailable(pickWallDefQueue[_tmpl],player)){ + skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[_tmpl], _defTruck, player); + //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& _tmpl &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); + printDebug1("buildGatewayDef(): build WALL def ["& _tmpl &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); + } + + } + + /* + else { + + //standard defences + _n = min(pickDefQueueDepth,3); + _tmpl = pickDefQueueDepth - 1 - _random(_n); + boolResult = isStructureAvailable(pickDefQueue[_tmpl],player); + //dbg("dbg->buildGatewayDef(): STD _tmpl("& _tmpl &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); + if( isStructureAvailable(pickDefQueue[_tmpl],player) ){ + + _x = getSafeBuildCoord( _defTruck, pickDefQueue[_tmpl], _x, _y, 0);//_x + _y = getSafeBuildCoord( _defTruck, pickDefQueue[_tmpl], _x, _y, 1);//_y + boolResult = pickStructLocation(pickDefQueue[_tmpl], ref _x, ref _y, player); + boolResult2 = droidCanReach(_defTruck, _x ,_y); + //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); + if(boolResult and droidCanReach(_defTruck, _x ,_y)){ + orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[_tmpl], _x, _y); + lastBuildDefX = _x;//store coord needed to check if struct has been built + lastBuildDefY = _y; + //dbg("buildGatewayDef: build STD def ["& _tmpl &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); + printDebug1("buildGatewayDef(): droid build STD def ["& _tmpl &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); + } + } + } + */ +} +//----------------------------------------------------------------------------- +// _x and _y are changed per reference +function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) +{ + local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; + + _c3 = 0; + while ( _c3 < 8){ + _aX[_c3] = -1; + _aY[_c3] = -1; + _aD[_c3] = -1; + _c3++; + } + + boolResult = pickStructLocation(_struct, ref _x, ref _y, player); + boolResult2 = droidCanReach(_droid, _x ,_y); + if ( boolResult and boolResult2 ){ + if ( _choice == 0 ){ return _x; } + if ( _choice == 1 ){ return _y; } + } + + _x1 = _x; _y1 = _y; + _c3 = 1; _c2 = 0; + while ( _c3 < 3){ + + _x = _x1 + _c3*TILE; + _y = _y1 + _c3*TILE; + boolResult = pickStructLocation(_struct, ref _x, ref _y, player); + boolResult2 = droidCanReach(_droid, _x ,_y); + //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + if ( boolResult and boolResult2 ){ + _aX[_c2] = _x; + _aY[_c2] = _y; + _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); + //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + _c2++; + } + + _x = _x1 - _c3*TILE; + _y = _y1 - _c3*TILE; + boolResult = pickStructLocation(_struct, ref _x, ref _y, player); + boolResult2 = droidCanReach(_droid, _x ,_y); + if ( boolResult and boolResult2 ){ + _aX[_c2] = _x; + _aY[_c2] = _y; + _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); + //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + _c2++; + } + + _x = _x1 + _c3*TILE; + _y = _y1 - _c3*TILE; + boolResult = pickStructLocation(_struct, ref _x, ref _y, player); + boolResult2 = droidCanReach(_droid, _x ,_y); + if ( boolResult and boolResult2 ){ + _aX[_c2] = _x; + _aY[_c2] = _y; + _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); + //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + _c2++; + } + + _x = _x1 - _c3*TILE; + _y = _y1 + _c3*TILE; + boolResult = pickStructLocation(_struct, ref _x, ref _y, player); + boolResult2 = droidCanReach(_droid, _x ,_y); + if ( boolResult and boolResult2 ){ + _aX[_c2] = _x; + _aY[_c2] = _y; + _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); + //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + _c2++; + } + + _c3++; + } + + _c3 = 0; + _c1 = 9999*TILE; + //find the nearest place to build + while ( _c3 < _c2 ){ + //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + if ( _aD[_c3] < _c1 ){ + _x = _aX[_c3]; + _y = _aY[_c3]; + _c1 = _aD[_c3]; + } + _c3++; + } + + //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); + + if ( _choice == 0 ){ return _x; } + if ( _choice == 1 ){ return _y; } + + return -1; + +} +//----------------------------------------------------------------------------- +function bool isDefStrComplete() +{ + local STRUCTURE _defense; + local int _i; + + _i=0; + _defense = NULLOBJECT; + + while(_i < pickDefQueueDepth ) + { + initEnumStruct(FALSE,pickDefQueue[_i],player,player); + _defense = enumStruct(); + while (_defense != NULLOBJECT){ + //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); + if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ + //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); + if(!structureComplete(_defense)){ + //displayMsg("isDefStrComplete: def NOT complete "); + return false; + } else { + //displayMsg("isDefStrComplete: def IS complete "); + return true; + } + } + _defense = enumStruct(); + } + _i++; + }//endwhile + + //displayMsg("isDefStrComplete: OUT OF THE LOOP "); + return false; +} +//----------------------------------------------------------------------------- +//sends the defTruck to help building structures. +//It checks there are no threat in range. +function bool helpBuild(int _group) +{ + local DROID _idleTruck; + local STRUCTURE _structurestat; + local int _i; + + _i=0; + + if (_group == BUILDDEF_GRP){ + _idleTruck = pickDefTruck(true); + } + if (_group == CYBENG_GRP){ + _idleTruck = pickCybEng(true); + } + if (_group == BUILD_GRP){ + _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); + } + if (_group == HARVEST_GRP){ + _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); + } + + if (_idleTruck == NULLOBJECT){ return false; } + + //look for def structures first + while(_i < pickWallDefQueueDepth ) + { + initEnumStruct(FALSE,pickWallDefQueue[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if ( !structureComplete(_structurestat) ){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + //look for def structures first + while(_i < pickDefQueueDepth ) + { + initEnumStruct(FALSE,pickDefQueue[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if ( !structureComplete(_structurestat) ){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + //look for for incendries + //numIncendrys INT 8 + //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" + //look for def structures first + _i=0; + while(_i < numIncendrys ) + { + initEnumStruct(FALSE,incendrys[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if ( !structureComplete(_structurestat) ){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + if (_idleTruck == NULLOBJECT){ return false; } + //look for sensor types + //numSense INT 3 + //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" + _i=0; + while(_i < numSense ) + { + initEnumStruct(FALSE,sense[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if ( !structureComplete(_structurestat) ){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + + + //look for anti a. + //numAA INT 6 + //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane + _i=0; + while(_i < numAA ) + { + initEnumStruct(FALSE,vtolDefStruct[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if ( !structureComplete(_structurestat) ){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + if (_idleTruck == NULLOBJECT){ return false; } + + //look for Fortresses structs. + //numFortressDef + //fortressDef[0] + _i=0; + while(_i < numFortressDef ) + { + initEnumStruct(FALSE,fortressDef[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if(!structureComplete(_structurestat)){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + + //look for Essential structs. + //numStructs + //structs[0] + _i=0; + while(_i < numStructs ) + { + initEnumStruct(FALSE,baseStructs[_i],player,player); + _structurestat = enumStruct(); + while (_structurestat != NULLOBJECT){ + if(!structureComplete(_structurestat)){ + if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) + { + if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ + orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); + return true; + } + } //else {displayMsg("helpBuild: there is some threat in range");} + } + _structurestat = enumStruct(); + }//while struct + _i++; + }//While _i + + //displayMsg("helpBuild: no structs found"); + return false; +} + + +//----------------------------------------------------------------------------- +//search for the most damaged structure in the base and repair it +//if found return true, otherwise return false. Return false also +// if not idle trucks are found. it checks there are no threats in range +function bool repairStructs(int _group) +{ + local int _mostDamage,_tempDamage, _i,_numStrToCheck; + local STRUCTURE _structure, _mostDamagedStructure; + local DROID _idleTruck; + + _mostDamage = 0; + _mostDamagedStructure = NULLOBJECT; + _idleTruck = NULLOBJECT; + + if (_group == BUILDDEF_GRP){ + _idleTruck = pickDefTruck(true); + } + if (_group == CYBENG_GRP){ + _idleTruck = pickCybEng(true); + } + if (_group == BUILD_GRP){ + _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); + } + if (_group == HARVEST_GRP){ + _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); + } + + if (_idleTruck == NULLOBJECT){ return false; } + + + _i = 0; + _numStrToCheck = (numBaseStructs - 1); + while( _i < _numStrToCheck )//exclude derricks, threated below in this function + { + initEnumStruct(FALSE,baseStructs[_i],player,player); + _structure = enumStruct(); + while(_structure != NULLOBJECT) + { + _tempDamage = 100 - _structure.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) + //{ + if(_tempDamage > _mostDamage){ + _mostDamage = _tempDamage; + _mostDamagedStructure = _structure; + } + //} + } + _structure = enumStruct(); + } + _i = _i + 1; + } + + if(_mostDamagedStructure != NULLOBJECT) { + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); + return true; + } + + initEnumStruct(false,derrick,player,player); + _structure = enumStruct(); + while(_structure != NULLOBJECT) + { + _tempDamage = 100 - _structure.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { + if(_tempDamage > _mostDamage){ + _mostDamage = _tempDamage; + _mostDamagedStructure = _structure; + } + } + } + _structure = enumStruct(); + } + + if(_mostDamagedStructure != NULLOBJECT) { + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); + return true; + } + + return false; +} + +//----------------------------------------------------------------------------- +//search for the most damaged sefense in the base and repair it +//if found return true, otherwise return false. Return false also +// if not idle trucks are found. it checks there are no threats in range +function bool repairDefStructs(int _group) +{ + local int _mostDamage,_tempDamage, _i; + local STRUCTURE _defense, _mostDamagedDefense; + local DROID _idleTruck; + + _mostDamage = 0; + _mostDamagedDefense = NULLOBJECT; + + _idleTruck = NULLOBJECT; + + if (_group == BUILDDEF_GRP){ + _idleTruck = pickDefTruck(true); + } + if (_group == CYBENG_GRP){ + _idleTruck = pickCybEng(true); + } + if (_group == BUILD_GRP){ + _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); + } + if (_group == HARVEST_GRP){ + _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); + } + + if (_idleTruck == NULLOBJECT){ return false; } + +//look for vtol def + _i=0; + while(_i < numAA ) + { + initEnumStruct(FALSE,vtolDefStruct[_i],player,player); + _defense = enumStruct(); + while (_defense != NULLOBJECT){ + if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ + _tempDamage = 100 - _defense.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { + if(_tempDamage > _mostDamage) { + _mostDamage = _tempDamage; + _mostDamagedDefense = _defense; + } + } + } + } + _defense = enumStruct(); + }//while struct + _i++; + }//While _i + if(_mostDamagedDefense != NULLOBJECT) + { + //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); + return true; + } + + _i=0; + //look for def structures + while(_i < pickWallDefQueueDepth ) + { + initEnumStruct(FALSE,pickWallDefQueue[_i],player,player); + _defense = enumStruct(); + while (_defense != NULLOBJECT){ + if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ + _tempDamage = 100 - _defense.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { + if(_tempDamage > _mostDamage) { + _mostDamage = _tempDamage; + _mostDamagedDefense = _defense; + } + } + } + } + _defense = enumStruct(); + }//while struct + _i++; + }//While _i + if(_mostDamagedDefense != NULLOBJECT) { + //displayMsg("**** repairDefStructs: found a damaged WALL def struct damage=("& _mostDamage &") "); + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); + return true; + } + + _i=0; + //look for def structures + while(_i < pickDefQueueDepth ) + { + initEnumStruct(FALSE,pickDefQueue[_i],player,player); + _defense = enumStruct(); + while (_defense != NULLOBJECT){ + if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ + _tempDamage = 100 - _defense.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { + if(_tempDamage > _mostDamage) { + _mostDamage = _tempDamage; + _mostDamagedDefense = _defense; + } + } + } + } + _defense = enumStruct(); + }//while struct + _i++; + }//While _i + if(_mostDamagedDefense != NULLOBJECT) { + //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); + return true; + } + + //double check... + if (_idleTruck == NULLOBJECT){ return false; } + + //look for for incendries + _i=0; + while(_i < numIncendrys ) + { + initEnumStruct(FALSE,incendrys[_i],player,player); + _defense = enumStruct(); + while (_defense != NULLOBJECT){ + if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ + _tempDamage = 100 - _defense.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { + if(_tempDamage > _mostDamage) { + _mostDamage = _tempDamage; + _mostDamagedDefense = _defense; + } + } + } + } + _defense = enumStruct(); + }//while struct + _i++; + }//While _i + if(_mostDamagedDefense != NULLOBJECT) + { + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); + return true; + } + + //double check... + if (_idleTruck == NULLOBJECT){ return false; } + + //look for sensor types + //numSense INT 3 + //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" + _i=0; + while(_i < numSense ) + { + initEnumStruct(FALSE,sense[_i],player,player); + _defense = enumStruct(); + while (_defense != NULLOBJECT){ + if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ + _tempDamage = 100 - _defense.health; + if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ + if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { + if(_tempDamage > _mostDamage) { + _mostDamage = _tempDamage; + _mostDamagedDefense = _defense; + } + } + } + } + _defense = enumStruct(); + }//while struct + _i++; + }//While _i + if(_mostDamagedDefense != NULLOBJECT){ + //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); + orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); + return true; + } + return false; +} + +//----------------------------------------------------------------------------- +/* +update gateways coordinate +this works for now with maps with at least 2 gateways near the base +*/ +function int updateGateways() +{ + local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; + local float _basecoordX,_basecoordY; + local int _dist; + + _x = 0; + _y = 0; + + _i=0; + while (_i<4){ + _xx[_i] = -1; + _yy[_i] = -1; + _i++; + } + + //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); + + //corner 1 + _tx = max( baseX-TILE*8 , 0 ); + _ty = max( baseY-TILE*8 , 0 ); + _basecoordX = (float)_tx/(float)TILE; + _basecoordY = (float)_ty/(float)TILE; + if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ + _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); + //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + if( _dist < gatewaysRangeTiles*TILE) { + //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + _xx[0] = _x; + _yy[0] = _y; + }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} + }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} + + //corner 2 + _x = 0; + _y = 0; + _tx = min( baseX+TILE*8 , mapWidth*TILE ); + _ty = min( baseY+TILE*8 , mapHeight*TILE ); + _basecoordX = (float)_tx/(float)TILE; + _basecoordY = (float)_ty/(float)TILE; + if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ + _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); + //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + if( _dist < gatewaysRangeTiles*TILE) { + if( (_xx[0]+_yy[0] != _x+_y) ) { + //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + _xx[1] = _x; + _yy[1] = _y; + } + }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} + }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} + + //corner 3 + _x = 0; + _y = 0; + _tx = min( baseX+TILE*8 , mapWidth*TILE ); + _ty = max( baseY-TILE*8 , 0 ); + _basecoordX = (float)_tx/(float)TILE; + _basecoordY = (float)_ty/(float)TILE; + if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) + { + _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); + //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + if( _dist < gatewaysRangeTiles*TILE) { + if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { + //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + _xx[2] = _x; + _yy[2] = _y; + } + }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} + }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} + + //corner 4 + _x = 0; + _y = 0; + _tx = max( baseX-TILE*8 , 0 ); + _ty = min( baseY+TILE*8 , mapHeight*TILE ); + _basecoordX = (float)_tx/(float)TILE; + _basecoordY = (float)_ty/(float)TILE; + if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) + { + _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); + //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + if( _dist < gatewaysRangeTiles*TILE) { + if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { + //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); + _xx[3] = _x; + _yy[3] = _y; + } + }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} + }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} + + + //find out how many gateways have been found + _i=0; + while ( _i < 4 ) { + if( _xx[_i] > 0 and _yy[_i] > 0 ) { + //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); + aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; + aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; + _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); + nRealGatewaysFound++; + printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); + } + _i++; + }//endwhile + + /* + if (nRealGatewaysFound == 0){ + numDefStrAtGateway = 3; + } + if (nRealGatewaysFound == 1){ + numDefStrAtGateway = 5; + } + if (nRealGatewaysFound == 2){ + numDefStrAtGateway = 4; + } + if (nRealGatewaysFound == 3){ + numDefStrAtGateway = 3; + } + if (nRealGatewaysFound == 4){ + numDefStrAtGateway = 2; + } + if (nRealGatewaysFound > 4){ + numDefStrAtGateway = 2; + } + */ + numDefStrAtGateway = 1; + //reSortGateways - put the gateways near to the enemy on the top of the array. + //reSortGateways(); + //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); + + return nRealGatewaysFound;//default is 0 +} + +//----------------------------------------------------------------------------- +function void initAssignUnitToGrp() +{ + local GROUP xGRP; + local DROID _droid; + local int cc,_tot; + + cc=0; + groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); + initIterateGroup(xGRP); + droid = iterateGroup(xGRP); + while(droid != NULLOBJECT) + { + assignDroidToGrp(droid); + droid = iterateGroup(xGRP); + } + + //in assignDroidToGrp all trcks are assigned as default to buildGroup + _tot = buildGroup.members; + if ( _tot == 2 or _tot == 3 ){ + _droid = getADroid(buildGroup); + if (_droid != NULLOBJECT){ + groupAddDroid(harvesterGroup, _droid ); + } + } + if ( _tot > 3 ){ + _droid = getADroid(buildGroup); + if (_droid != NULLOBJECT){ + groupAddDroid(harvesterGroup, _droid ); + } + _droid = getADroid(buildGroup); + if (_droid != NULLOBJECT){ + groupAddDroid(harvesterGroup, _droid ); + } + } + +} +//----------------------------------------------------------------------------- +function void updateBaseRange() +{ + + local int _baseRange,_i,_result; + + maxy = 0; maxx = 0; + miny = (mapHeight*128); minx = (mapWidth*128); + + _baseRange = 1; //avoid possible div by 0 + aaRange = 1; + + _i = 0; + while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! + { + initEnumStruct(FALSE,baseStructs[_i],player,player); + structure = enumStruct(); + while(structure != NULLOBJECT) + { + if(structure.x < minx){minx = structure.x;} + if(structure.x > maxx){maxx = structure.x;} + if(structure.y < miny){miny = structure.y;} + if(structure.y > maxy){maxy = structure.y;} + + _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); + if(_result > _baseRange){_baseRange = _result;} + + structure = enumStruct(); + } + _i = _i + 1; + } + + _result = 7 * TILE; + + minx = minx - _result; maxx = maxx + _result; + miny = miny - _result; maxy = maxy + _result; + + if(minx < 0){minx = TILE;} + if(miny < 0){miny = TILE;} + if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} + if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} + + aaRange = _baseRange + TILE; //between the base and _baseRange + + nBaseRange = _baseRange + (5 * TILE); +} + +//----------------------------------------------------------------------------- +function void updateDefendRange() +{ + + local int _n,_g; + + //Update nDefendRange + _n = 0; + _g = 999*TILE; + while ( _n < MAX_PLAYERS ) + { + if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() + structure = getStructure(playerHQ,_n); + if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } + if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } + if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } + if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } + if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } + if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } + if ( structure != NULLOBJECT ){ + if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) + { + _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist + } + } + } + _n++; + } + if ( _g != 999*TILE ){ + nDefendRange = _g/2; + } else { + + if ( nPlayersInGame > 1 ){ + if (nPlayersInGame < 5 ){ + nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); + } else if (nPlayersInGame < 8 ){ + nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); + } + nDefendRange = (int)((float)(nDefendRange)*0.7); + } + + } + + if (nDefendRange < nBaseRange){ //double check... + nDefendRange = nBaseRange + 8*TILE; + } + + if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big + nDefendRange = MAX_DEFEND_RANGETILES*TILE; + } +} +//----------------------------------------------------------------------------- +//update base coordinates dinamically +function void updateBaseCoord() +{ + local STRUCTURE _structure; + local DROID _truck; + local bool _bHaveBaseStructs; + local int _index,_baseX,_baseY,_numBaseStructs,_bucket; + + _bHaveBaseStructs = FALSE; + + //Go through all structures + _index = 0; + _numBaseStructs = 0; + _baseX = 0; + _baseY = 0; + while(_index+1 < numBaseStructs)//+1 to exclude derricks!! + { + initEnumStruct(FALSE,baseStructs[_index],player,player); + _structure = enumStruct(); + while(_structure != NULLOBJECT) + { + _baseX = _baseX + _structure.x / TILE; + _baseY = _baseY + _structure.y / TILE; + + _numBaseStructs++; + _structure = enumStruct(); + } + _index++; + } + + if(_numBaseStructs > 0) + { + baseX = (_baseX / _numBaseStructs) * TILE; + baseY = (_baseY / _numBaseStructs) * TILE; + } + else + { + + _truck = getADroid(buildGroup); + if(_truck == NULLOBJECT) + { + _truck = getADroid(harvesterGroup); + } + if(_truck == NULLOBJECT) + { + _truck = getADroid(buildDefGroup); + } + + + if(_truck != NULLOBJECT){ + baseX = _truck.x; + baseY = _truck.y; + }else{ + baseX = (TILE * mapWidth) / 2; + baseY = (TILE * mapHeight) / 2; + displayMsg("### Couldn't find base location for " & getPlayerName(player)); + } + + } +} +//perform a research o resLab _resFac on the _lastResIndex+1 item +//returns -1 if no researches have started +//----------------------------------------------------------------------------- +function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) +{ + local bool _bStarted; + local int _tech, _nn, _ii; + + /* current tech tree */ + _tech = 0; //0=tank + _nn = 0; + + + _bStarted = false; //this res lab idle for now + while(not _bStarted and _nn < 100) + { + + _lastResIndex = find_Research(_lastResIndex, _tech, 2);//1=standard res, 2= cheap + if(_lastResIndex > -1) //found research + { + _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); + if ( _bStarted ){ + tLastResearch = gameTime; + //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); + printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); + } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } + + } + else + { + _bStarted = TRUE; //make loop end, no research found + } + + _nn++; + } + + if(!_bStarted) {return -1;} + return _lastResIndex; +} +//perform a research o resLab _resFac on the _lastResIndex+1 item +//returns -1 if no researches have started +//----------------------------------------------------------------------------- +function int do_Research(STRUCTURE _resFac, int _lastResIndex) +{ + local bool _bStarted; + local int _tech, _nn, _VTOLprob; + + /* current tech tree */ + _tech = 0; //0=tank 1=VTOL research + _nn = 0; + + //VTOL AI + if ( AIPersonality == AI_VTOL ){ + if ( gameTime > TIME_START_VTOLRESEARCH ){ + if ( !skVtolEnableCheck(player) ){ + _VTOLprob = 99; //max spped VTOL research + } else { + _VTOLprob = 40; + } + } else { + if ( !skVtolEnableCheck(player) ){ + _VTOLprob = 50; + } else { + _VTOLprob = 40; + } + } + } + + //Other AIs + if ( gameTime > TIME_START_VTOLRESEARCH ){ + if ( !skVtolEnableCheck(player) ){ + _VTOLprob = 50; + } else { + _VTOLprob = 25; + } + } else { + _VTOLprob = 20; + } + + if ( random(100) > _VTOLprob ){ + _tech = 0;//standard researches + } else { + _tech = 9;//VTOL + } + + _bStarted = false; //this res lab idle for now + while(not _bStarted and _nn < 100) + { + + _lastResIndex = find_Research(_lastResIndex, _tech, 1);//1=standard Research + if(_lastResIndex > -1){ + _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); + if ( _bStarted ){ + //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); + printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); + tLastResearch = gameTime; + } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } + + } + else //try with second block + { + if ( _tech == 0 ){ //was not researching VTOL stuff + //Try array research block #2 + _tech = 1; + _lastResIndex = find_Research(_lastResIndex, _tech, 1);//1=standard Research + if(_lastResIndex > -1){ + _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); + if ( _bStarted ){ + //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); + printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); + tLastResearch = gameTime; + } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } + } else { + _bStarted = true; //make loop end, no research found + } + } else {//was researching VTOL stuff + _bStarted = true; //make loop end, no research found + } + } + + _nn++; + } + + + if(!_bStarted) + { + return -1; + } + + return _lastResIndex; +} +//----------------------------------------------------------------------------- +// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) +// if not research is found returns -1 +function int find_Research(int _searchStart, int _techTree, int whichArray) +{ + local int _retInt; + + ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); + ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); + + if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== + + //find research to pursue + _retInt = _searchStart; + while(_retInt < numRes[_techTree]) + { + if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) + { + //displayMsg("Standard Research found ("& _retInt &") "); + return _retInt; //found research + } + _retInt++; + } + + } else { // =============== CHEAP RESEARCH ================== + + while(_retInt < numCheapRes[0]) + { + if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) + { + //displayMsg("Cheap Research found ("& _retInt &") "); + return _retInt; //found research + } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } + _retInt++; + } + + } + + _retInt = -1; //not found + return(_retInt); +} +//----------------------------------------------------------------------------- +function int numStructsByType(STRUCTURESTAT _structure, int _player) +{ + local STRUCTURE _str; + local int _count; + + _count=0; + + initEnumStruct(false,_structure,_player,_player); + _str = enumStruct(); + while(_str != NULLOBJECT) + { + _count++; + _str = enumStruct(); + } + return _count; +} +//----------------------------------------------------------------------------- +function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) +{ + local DROID _droid, _damagedUnit; + local int _tmpDist; + + _tmpDist = 999*TILE; + _damagedUnit = NULLOBJECT; + + initIterateGroup(_group); + _droid = iterateGroup(_group); + while(_droid != NULLOBJECT) + { + if( _droid.health < MIN_HEALT_REPAIR_BASE ) + { + if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) + { + _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); + _damagedUnit = _droid; + } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } + } + _droid = iterateGroup(_group); + } + + //check for damaged units _droid.health < 95 + if ( _damagedUnit == NULLOBJECT ){ + initIterateGroup(_group); + _droid = iterateGroup(_group); + while(_droid != NULLOBJECT) + { + if( _droid.health < 95 ) + { + if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) + { + _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); + _damagedUnit = _droid; + } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } + } + _droid = iterateGroup(_group); + } + } + + return _damagedUnit; +} +//----------------------------------------------------------------------------- +function DROID unitToBeRepaired(GROUP _group) +{ + local DROID _droid, _damagedUnit; + local int _tmpDamage, _damage; + + _tmpDamage = 0; + _damagedUnit = NULLOBJECT; + + initIterateGroup(_group); + _droid = iterateGroup(_group); + while(_droid != NULLOBJECT) + { + _damage = 100 - _droid.health; + if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) + { + if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) + { + _tmpDamage = _damage; + _damagedUnit = _droid; + } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } + } + _droid = iterateGroup(_group); + } + + return _damagedUnit; +} +//----------------------------------------------------------------------------- +// check if the repair droid itself has to be repaired or not. +function DROID idleRepairDroid(int _x, int _y) +{ + local DROID _closestTruck,_tempTruck; + local int _closestDist,_tempDist; + + _closestTruck = NULLOBJECT; + _closestDist = 999*TILE; + + initIterateGroup(repairGroup); + _tempTruck = iterateGroup(repairGroup); + while(_tempTruck != NULLOBJECT) + { + //if less then I cannot pick him up to avoid self repair + if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { + if(_tempTruck.order != DORDER_DROIDREPAIR) { + _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); + if(_tempDist < _closestDist) + { + _closestDist = _tempDist; + _closestTruck = _tempTruck; + } + } + } + _tempTruck = iterateGroup(repairGroup); + } + return _closestTruck; +} +//----------------------------------------------------------------------------- +function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) +{ + local int _c; + local DROID _tempTruck; + + _c = 0; + + //If requested, leave trucked droids in defend group + if (_bNoTrucks ){ + initIterateGroup(_fromGRP); + _tempTruck = iterateGroup(_fromGRP); + while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ + if ( _tempTruck.propulsion != TrackedProp ){ + groupAddDroid(_toGRP, _tempTruck); + _c++; + } + _tempTruck = iterateGroup(_fromGRP); + } + } + + //move the remaining units + initIterateGroup(_fromGRP); + _tempTruck = iterateGroup(_fromGRP); + while ( _c < _unitsToMove ){ + groupAddDroid(_toGRP, _tempTruck); + _c++; + _tempTruck = iterateGroup(_fromGRP); + } + +} +//----------------------------------------------------------------------------- +function void attackedByDroid(DROID _droid) +{ + local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; + local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; + + if ( _droid == NULLOBJECT ){ return; } + + boolResult = true; + _nOldAlertDistFromBase = 9999*TILE; + _nOldEnWeapDroids = 0; + + if (_droid.player<0 or _droid.player>7){ + //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); + return; + } + if( isVtol(_droid) ){ + //set target for VTOLs + if ( defTargetVTOL == NULLOBJECT ){ + defTargetVTOL = _droid; + targetPlayerVTOL = _droid.player; + bVTOLTargetIsDerrick = false; + } + return; + } + + + _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); + + //get VTOL target + if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ + defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); + if ( defTargetVTOL == NULLOBJECT ){ + //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); + defTargetVTOL = _droid; + bVTOLTargetIsDerrick = false; + if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } + } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } + } + + _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); + _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); + _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; + _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; + + //if it is a new second alert check which one is the nearest to the base + if (alertIsOn and alertX>0 and alertY>0){ + _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); + _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one + if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ + boolResult = false; + } + //if new alert is within the base this has priority 1!! + if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ + boolResult = false; + } + } + + if(boolResult) + { + + //determine the ALERT level + if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { + alertLevel = RED_ALERT; + } + if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { + alertLevel = YELLOW_ALERT; + } + if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { + alertLevel = GREEN_ALERT; + } + + // move all untis in tankDefGrp + if (alertLevel == RED_ALERT){ + if (tankGroup.members>0){ + //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); + groupAddGroup(tankDefGroup,tankGroup); + deactivateTankAttack(); + } + if (cyborgAttGroup.members>0){ + //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); + groupAddGroup(cyborgDefGroup , cyborgAttGroup); + deactivateCybAttack(); + } + if (helpGroup.members>0){ + //displayMsg("attackedByDroid: RED ALERT all helping units back!"); + msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); + if ( AIPersonality == AI_CYBORG ){ + groupAddGroup(cyborgDefGroup , helpGroup); + } else { + groupAddGroup(tankDefGroup , helpGroup); + } + deactivateHelp(); + } + //ask for help, recalculate my units + _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; + + } + + }//endif boolResult +} +//----------------------------------------------------------------------------- +function void attackedByStruct(STRUCTURE _struct) +{ + + local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; + local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; + + if ( _struct == NULLOBJECT ){ return; } + + boolResult = true; + if (_struct.player<0 or _struct.player>7){ + return; + } + + //set as VTOL target + defTargetVTOL = _struct; + targetPlayerVTOL = _struct.player; + bVTOLTargetIsDerrick = false; + + //// IF targetPl NOT SET - PUNISH THE OFFENDER + _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); + _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); + _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); + _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; + _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; + + + //if it is a new second alert check which one is the nearest to the base + if ( alertIsOn and alertX > 0 and alertY > 0 ){ + _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); + _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one + if ( _nOldEnWeapDroids > _nEnWeapDroids ) + { + + boolResult = false; + } + //if new alert is uin the base this has priority 1!! + if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) + { + boolResult = true; + } + } + + if(boolResult) + { + + //determine the ALERT level + if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { + alertLevel = RED_ALERT; + } + if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { + alertLevel = YELLOW_ALERT; + } + if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { + alertLevel = GREEN_ALERT; + } + + if (tankGroup.members>0 and alertLevel == RED_ALERT){ + //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); + groupAddGroup(tankDefGroup,tankGroup); + } + if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ + //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); + groupAddGroup(cyborgDefGroup , cyborgAttGroup); + } + + + //displayMsg("______________________________________________________________________________________"); + + }//endif boolResult +} +//----------------------------------------------------------------------------- +function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) +{ + local STRUCTURE _struct; + local int _tot; + + _tot=0; + + initEnumStruct(false,_structToCheck,player,player); + _struct = enumStruct(); + while(_struct != NULLOBJECT) + { + if(structureComplete(_struct)) + { + if(!structureIdle(_struct)){ _tot++; } + } + _struct = enumStruct(); + } + + return _tot; +} +//----------------------------------------------------------------------------- +function int numRemainingOilRes() +{ + local FEATURE _tempOilRes; + local int _nTot; + _nTot=0; + + initGetFeature(oilRes,-1,player); + _tempOilRes = getFeature(player); + while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) + { + _nTot++; + _tempOilRes = getFeature(player); + } + + return _nTot; +} +//----------------------------------------------------------------------------- +function bool bAnyOilResLeft() +{ + local DROID _droid; + boolResult = true; + + InitEnumDroids(player,player); + _droid = EnumDroid(); + while ( _droid != NULLOBJECT and boolResult ){ + if (_droid != NULLOBJECT){ boolResult = false;} + _droid = EnumDroid(); + } + + if ( _droid == NULLOBJECT ){ + return false; + } + + initGetFeature(oilRes,-1,player); + feature = getFeature(player); + while(feature != NULLOBJECT) + { + if ( droidCanReach(_droid, feature.x, feature.y) ){ + return true; + } + feature = getFeature(player); + } + + return false; +} +//----------------------------------------------------------------------------- +function int getTotDerricksMap() +{ + local int _player, _totDerricks; + _player = 0; + _totDerricks = 0; + + while ( _player < MAX_PLAYERS ){ + _totDerricks = _totDerricks + getNumDerricks(_player); + _player++; + } + return _totDerricks; +} + +//----------------------------------------------------------------------------- +function void sendIdleBackToTheBase(int _group) +{ + local DROID _idleTruck; + local bool _stop; + local int _c; + + //_c=0; + //_stop = false; + _idleTruck = NULLOBJECT; + + if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } + if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } + if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } + if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } + + if ( _idleTruck != NULLOBJECT) { + _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); + if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) + { + //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); + orderDroid(_idleTruck, DORDER_RTB); + } + //else { + //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); + //} + + } //end while + //_c++; + //} +} +//----------------------------------------------------------------------------- +//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 +function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) +{ + local int _xx,_yy,_return; + local DROID _droid; + + _droid = getADroid(harvesterGroup); + if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } + if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } + if ( _droid != NULLOBJECT ){ + if (_x1 > _x2) { + _xx = _x1 - _nDist; + if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } + } else { + _xx = _x1 + _nDist; + if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } + } + if (_y1 > _y2) { + _yy = _y1 - _nDist; + if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } + } else { + _yy = _y1 + _nDist; + if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } + } + //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); + + if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ + //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); + if( droidCanReach(_droid, _xx, _yy) ){ + if( _nWhichCooord == 1){ + return _xx; + } + if( _nWhichCooord == 2){ + return _yy; + } + } + } + } + return -1; +} + +//----------------------------------------------------------------------------- +// _targetPlayer == -1 as default +function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) +{ + local BASEOBJ _attackObject; + local int _targetPl,_xCoord,_yCoord; + + _attackObject = NULLOBJECT; + _targetPl = -1; + + //if big maps, pick up nearest enemy + if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ + if ( _targetPlayer >= 0 ){ + _targetPl = _targetPlayer; + } else { + _targetPl = getNearestEnemyPlayer(_mustBeHuman); + } + } else { + if ( _targetPlayer >= 0 ){ + _targetPl = _targetPlayer; + } + } + + //target player not found!!! + if ( _targetPl < 0 ) { + _targetPl = getRandomEnemyPlayer(_mustBeHuman); + } + if ( _targetPl == -1 ){ + //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); + return _attackObject; //NULLOBJECT + } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } + + _xCoord = getEnemy_baseCoord( _targetPl , "X" ); + _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); + if (_xCoord>0 and _yCoord>0 ){ + _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); + } + if ( _attackObject == NULLOBJECT ){ + _attackObject = skLocateEnemy(_targetPl); + } + + return _attackObject; +} + +//----------------------------------------------------------------------------- +function int gameType() +{ + + if ( nHumanPlayers == 1 ){ + + if ( nPlayersInGame == 2 ){ + return GT_2PLAYERS_1HP; + } + if ( nPlayersInGame == 3 or nPlayersInGame == 4){ + if ( nTeam == 2 ){ + return GT_4PLAYERS_1HP_2T; + } + if ( nTeam > 2 ){ + return GT_4PLAYERS_1HP_34T; + } + } + if ( nPlayersInGame > 4 ){ + if ( nTeam < 4 ){ + return GT_8PLAYERS_1HP_23T; + } + if ( nTeam >= 4 ){ + return GT_8PLAYERS_1HP_4567T; + } + } + + } else if ( nHumanPlayers == 2 ){ + + if ( nPlayersInGame == 3 or nPlayersInGame == 4){ + if ( nTeam == 2 ){ + return GT_4PLAYERS_2HP_2T; + } + if ( nTeam > 2 ){ + return GT_4PLAYERS_2HP_34T; + } + } + if ( nPlayersInGame > 4 ){ + if ( nTeam < 4 ){ + return GT_8PLAYERS_2HP_23T; + } + if ( nTeam >= 4 ){ + return GT_8PLAYERS_2HP_4567T; + } + } + + } else if ( nHumanPlayers == 3 ){ + + return GT_8PLAYERS_3HP_23T; + + } else { + + return GT_STANDARD; + } + + return GT_STANDARD; +} +//----------------------------------------------------------------------------- +// +function int getTargetEnemy(bool _dbg) +{ + local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; + local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; + local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; + local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; + local int _player,_tempPlayer,_c2,_c3; + local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; + + _tempPlayer = -1; + + _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; + _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); + _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); + _nMyPowerIndex = getPowerIndex( player ); + + //find average values first + _player=0; + while( _player < MAX_PLAYERS ){ + if ( isPlayerStillLive(_player) ){ + _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); + _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); + _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); + _nEnPowerIndex = getPowerIndex( _player ); + _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; + _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; + _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; + _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; + } + _player++; + } + _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; + _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; + _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; + _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; + + + //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); + //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); + + //search for enemies which are too strong + _player=0; + while( _player < MAX_PLAYERS ){ + if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ + //give priority to human players ;-) + boolResult = true; + if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ + boolResult = false; + } + if ( boolResult or _tempPlayer == -1){ + _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); + _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); + _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); + _nEnPowerIndex = getPowerIndex( _player ); + if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } + if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } + if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } + if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } + } + }//endif !friendlyPlayer() + _player++; + } + + //search for enemies which are too weak + if ( _tempPlayer == -1){ + //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); + if ( _dbg ) { + printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); + } + _player=0; + while( _player < MAX_PLAYERS ){ + if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ + //give priority to human players ;-) + boolResult = true; + if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ + boolResult = false; + } + if ( boolResult or _tempPlayer == -1){ + _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); + _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); + _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); + _nEnPowerIndex = getPowerIndex( _player ); + if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } + if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } + if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } + if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } + } + }//endif !friendlyPlayer() + _player++; + } + if ( _tempPlayer == -1){ + //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); + if ( _dbg ) { + printDebug1("getTargetEnemy: too weak enemy not found"); + } + } else { + //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); + if ( _dbg ) { + printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); + } + + //check we do not attack weak human player too often! unless this is the strong AI + if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) + { + if (nAttHumanPlayer > nAttAIPlayer*2) { + printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); + //get an AI enemy as target, if possible...maybe there are only enemy human players??? + _c2 = random(MAX_PLAYERS); + _c3 = 0; + boolResult = true; + while( _c3 < MAX_PLAYERS and boolResult ) + { + if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ + boolResult = false; + _tempPlayer = _c2; + } + _c2++; _c3++; + if ( _c2 == 8 ){ _c2 = 0; } + } + if ( !boolResult ){ + printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); + } else { + printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); + } + //if the loops ends it means there are no enemy AI left!! + } else { + printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); + } + } + + } + } else { + //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); + if ( _dbg ) { + printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); + } + } + + return _tempPlayer; +} +//----------------------------------------------------------------------------- +/* +// TankAttack/CyborgAttack events +// --> getTargetObj +// --> getTargetEnemy() +// --> findEnemyOBJ() +// +*/ +function BASEOBJ getTargetObj() +{ + + + local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; + local bool _mustBeHuman; + + _mustBeHuman = false; + nPerc_HP_Target = -1; + + //search for primary enemy player target + _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies + if (_targetPlayer >= 0){ + printDebug1("dbg->getTargetObj: Very strong or weak enemy found:'"& getPlayerName(_targetPlayer) &"'"); + } + + _nGameType = gameType(); + if ( _nGameType == GT_4PLAYERS_1HP_2T ){ + nPerc_HP_Target = 40+random(10)+AIstrength*10; + } + if ( _nGameType == GT_4PLAYERS_1HP_34T ){ + nPerc_HP_Target = 30+random(20)+AIstrength*10; + } + if ( _nGameType == GT_4PLAYERS_2HP_2T ){ + nPerc_HP_Target = 40+random(10)+AIstrength*10; + } + if ( _nGameType == GT_4PLAYERS_2HP_34T ){ + nPerc_HP_Target = 30+random(20)+AIstrength*10; + } + if ( _nGameType == GT_8PLAYERS_1HP_23T ){ + nPerc_HP_Target = 20+random(20)+AIstrength*10; + } + if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ + nPerc_HP_Target = 15+random(25)+AIstrength*10; + } + if ( _nGameType == GT_8PLAYERS_2HP_23T ){ + nPerc_HP_Target = 25+random(25)+AIstrength*10; + } + if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ + nPerc_HP_Target = 25+random(20)+AIstrength*10; + } + if ( _nGameType == GT_8PLAYERS_3HP_23T ){ + nPerc_HP_Target = 25+random(20)+AIstrength*10; + } + if ( nPerc_HP_Target == -1 ){ + nPerc_HP_Target = 25+random(20)+AIstrength*10; + } + + //select the type of target + _rnd = random(100); + if ( _rnd <= nPerc_HP_Target ){ + _mustBeHuman = true; + //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); + } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} + + //test or debug game + if ( bRunning or !bHasHumanEnemies(player) ){ + //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); + _mustBeHuman = false; + } + + //check if big map and if derricks are required + _rnd = random(10); + if ( bNeedDerrick or ( _rnd < 7 and (mapWidth+mapHeight)/2 > BIG_MAP) ){ + //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); + printDebug1("getTargetObj-> _targetPlayer forced to ("& -1 &") target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") _mustBeHuman("& _mustBeHuman &")" ); + attackTankObj = closestEnemyDerrick(_mustBeHuman , -1); + } else { + printDebug1("getTargetObj-> target will not be a derrick; _targetPlayer("& _targetPlayer &") _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); + } + + if ( attackTankObj == NULLOBJECT ){ + printDebug1("getTargetObj-> derrick not found, try with base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")"); + attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); + } + //attackTankObj = findEnemyOBJ(_mustBeHuman); + + if (attackTankObj != NULLOBJECT) { + //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); + printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); + } else { + //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); + printDebug1("getTargetObj-> NO target found !"); + } + return attackTankObj; +} + +//----------------------------------------------------------------------------- +function bool bHasHumanEnemies(int _player) +{ + local int _c; + _c = 0; + while( _c < MAX_PLAYERS ) + { + if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { + return true; + } + _c++; + } + return false; +} +//----------------------------------------------------------------------------- +function int getRandomEnemyPlayer(bool _mustBeHuman) +{ + local int _c2,_c3; + _c2 = random(MAX_PLAYERS); + _c3 = 0; + while( _c3 < MAX_PLAYERS ) + { + + boolResult = true; + if ( _mustBeHuman and !isHumanPlayer(_c2) ){ + boolResult = false; + } + if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { + return _c2; + } + _c2++; _c3++; + if ( _c2 == 8 ){ _c2 = 0; } + } + return -1; +} +//----------------------------------------------------------------------------- +function int getNearestEnemyPlayer(bool _humanPlayer) +{ + local STRUCTURE _struct; + local int _player, _targetPlayer, _bestDist, _dist, _ii; + + _struct = NULLOBJECT; + _player = 0; + _targetPlayer = -1; + _bestDist = 9999999; + + while( _player < MAX_PLAYERS ) + { + + boolResult = true; + if ( _humanPlayer and !isHumanPlayer(_player) ){ + boolResult = false; + } + if ( !isPlayerStillLive(_player) ){ + boolResult = false; + } + if (!friendlyPlayer(_player) and boolResult){//OK + + //find enemy HQ and check distance to + _struct = getStructure(playerHQ,_player); + if ( _struct == NULLOBJECT ){ + _struct = getStructure(factory,_player); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(cybFactory,_player); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(resLab,_player); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(powGen,_player); + } + if ( _struct == NULLOBJECT ){ + _struct = getStructure(vtolFactory,_player); + } + if ( _struct == NULLOBJECT ){ + _ii = 0; + while ( _ii < numStructs and _struct == NULLOBJECT){ + _struct = getStructure(structs[_ii],_player); + _ii++; + } + } + if ( _struct != NULLOBJECT ){ + _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); + if ( _dist < _bestDist ){ + _bestDist = _dist; + _targetPlayer = _player; + } + } + + }//player check + + _player++; + }//while + return _targetPlayer; +} + +//----------------------------------------------------------------------------- +function int getEnemy_baseCoord( int _player, STRING sCoord ) +{ + local STRUCTURE _structure; + local int _index,_baseX,_baseY,_numBaseStructs; + //Go through all structures + _index = 0; + _numBaseStructs = 0; + _baseX = 0; + _baseY = 0; + while(_index+1 < numBaseStructs)//+1 to exclude derricks!! + { + initEnumStruct( false, baseStructs[_index], _player, _player); + _structure = enumStruct(); + + while(_structure != NULLOBJECT) + { + _baseX = _baseX + _structure.x / TILE; + _baseY = _baseY + _structure.y / TILE; + _numBaseStructs++; + _structure = enumStruct(); + } + _index++; + } + + if(_numBaseStructs > 0) + { + _baseX = (_baseX / _numBaseStructs) * TILE; + _baseY = (_baseY / _numBaseStructs) * TILE; + //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); + + } else { + + //method #2 + _index = 0; + _numBaseStructs = 0; + while(_index+1 < numBaseStructs)//+1 to exclude derricks!! + { + _structure = getStructure(baseStructs[_index],_player); + if ( _structure != NULLOBJECT ){ + _baseX = _baseX + _structure.x / TILE; + _baseY = _baseY + _structure.y / TILE; + _numBaseStructs++; + } + _index++; + } + if(_numBaseStructs > 0) + { + _baseX = (_baseX / _numBaseStructs) * TILE; + _baseY = (_baseY / _numBaseStructs) * TILE; + //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); + } else { + printDebug1("#### getEnemy_baseCoord: not able to find any struct for player ("& _player &") "); + return -1; + } + } + + if ( sCoord == "X" or sCoord == "x" ) { + return _baseX; + } else { + return _baseY; + } + return -1; +} + + +//----------------------------------------------------------------------------- +function bool friendlyPlayer(int _playerToCheck) +{ + if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ + return true; + } + + return false; +} +//----------------------------------------------------------------------------- +function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) +{ + local BASEOBJ _objTarget; + local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; + local STRUCTURE _tempDerrick; + + _targetPlayer = 0; + _objTarget = NULLOBJECT; + _dist = 9999*TILE; + + while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) + { + if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { + + initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); + _tempDerrick = enumStruct(); + while( _tempDerrick != NULLOBJECT ){ + boolResult = true; + if ( bVTOLTarget ){ + _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); + } else { + _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); + _defences = _defences + numEnemyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); + } + _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); + if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } + if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ + _objTarget = _tempDerrick; + _dist = _tmpDist; + } + _tempDerrick = enumStruct(); + } + + } + _targetPlayer++; + } + return _objTarget; +} +//----------------------------------------------------------------------------- +function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) +{ + local BASEOBJ _objTarget; + local int _x,_y,_x1,_y1; + local int _xx, _yy, _targetPlayer; + + resetStructTargets(); + setStructTarIgnore(ST_WALL); + setStructTarPref(ST_DEF_GROUND); + setStructTarPref(ST_FACTORY); + setStructTarPref(ST_CYBORG_FACTORY); + setStructTarPref(ST_VTOL_FACTORY); + setStructTarPref(ST_POWER_GEN); + //setStructTarPref(ST_SENSOR); + setStructTarPref(ST_RESOURCE_EXTRACTOR); + setStructTarPref(ST_DEF_AIR); + setStructTarPref(ST_RESEARCH); + setStructTarPref(ST_HQ); + setStructTarPref(ST_REARM_PAD); + setStructTarPref(ST_SENSOR); + + _objTarget = NULLOBJECT; + _Range = _Range/2 ; + + _xx = (mapWidth*128)-(128*2); + _yy = (mapHeight*128)-(128*2); + + _x = min( _xCoord + _Range , _xx ); + _y = min( _yCoord + _Range , _yy ); + _x1 = max( _xCoord - _Range , 256); + _y1 = max( _yCoord - _Range , 256); + + _targetPlayer = 0; + while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ + if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) + { + _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); + if (_objTarget != NULLOBJECT) + { + //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); + if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) + { + _objTarget = NULLOBJECT; + } + } + } + _targetPlayer++; + } + return _objTarget; +} +//----------------------------------------------------------------------------- +function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) +{ + local BASEOBJ _objTarget; + local int _x,_y,_x1,_y1; + local int _xx, _yy, _n, _bestHitPoints; + + resetDroidTargets(); + setDroidTarIgnore(ST_WALL); + if ( bIsVTOL ){ + setDroidTarPref(DT_SUPER_HEAVY); + setDroidTarPref(DT_HEAVY); + setDroidTarPref(DT_MEDIUM); + setDroidTarPref(DT_LIGHT); + setDroidTarPref(DT_LEGS); + setDroidTarPref(DT_VTOL); + } + else//tank or cyborg + { + setDroidTarPref(DT_SENSOR); + setDroidTarPref(DT_CONSTRUCT); + setDroidTarPref(DT_COMMAND); + setDroidTarPref(DT_REPAIR); + setDroidTarPref(DT_WEAP_GROUND); + setDroidTarPref(DT_WEAP_AIR); + setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units + } + + + _objTarget = NULLOBJECT; + + _xx = (mapWidth*128)-(128*2); + _yy = (mapHeight*128)-(128*2); + + _Range = _Range/2; + + _x = min( _xCoord + _Range , _xx ); + _y = min( _yCoord + _Range , _yy ); + _x1 = max( _xCoord - _Range , 256); + _y1 = max( _yCoord - _Range , 256); + + if (bIsVTOL and targetPlayerVTOL > -1){ + _n=0; + _bestHitPoints=0; + InitEnumDroids(targetPlayerVTOL,player); + droid = EnumDroid(); + while(droid != NULLOBJECT) + { + if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ + if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ + if ( droid.hitPoints > _bestHitPoints ){ + //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); + _objTarget = droid; + _bestHitPoints = droid.hitPoints; + } + } + } + _n++; + droid = EnumDroid(); + } + } + + _bestHitPoints=0; + if ( _objTarget == NULLOBJECT ){ + //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); + count = 0; + while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ + if ( count != player and !friendlyPlayer(count) ) + { + _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); + if (_objTarget != NULLOBJECT) + { + if ( !isVtol(objToDroid(_objTarget)) ){ + if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) + { + //if ( _objTarget.hitPoints > _bestHitPoints ){ + _objTarget = NULLOBJECT; + //_bestHitPoints = _objTarget.hitPoints; + //} + } + } + } + } + count++; + } + } else { + if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} + } + return _objTarget; +} +//----------------------------------------------------------------------------- +function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) +{ + local int _c; + local DROID _tempTruck; + + _c = 0; + + initIterateGroup(_grp); + _tempTruck = iterateGroup(_grp); + while ( _tempTruck != NULLOBJECT ){ + if (droidCanReach(_tempTruck,_x, _y )){ + orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); + } + _tempTruck = iterateGroup(_grp); + _c++; + } + return; +} + +//----------------------------------------------------------------------------- +function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) +{ + local int _c; + local DROID _tempTruck; + + _c = 0; + + initIterateGroup(_grp); + _tempTruck = iterateGroup(_grp); + while ( _tempTruck != NULLOBJECT ){ + if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ + orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); + } + _tempTruck = iterateGroup(_grp); + _c++; + } + return; +} +//----------------------------------------------------------------------------- +function void SetDyDoPersonality(int nPersonality, int _player) +{ + local int cc,_c,_nAdd,_nAddVTOL; + cc=0; + + if (_player != player){exit;} + + //random personality + _c = nPersonality; + if ( nPersonality == 0 or nPersonality > 4 ){ + if ( random(100) < 75 ){//75% General 1 + _c = 1; + } else {//30% for General 2-3-4 + _c = 2+random(6); + if ( _c > 4 ){ + if ( _c == 5 ) { _c = 2;} + if ( _c == 6 ) { _c = 3;} + if ( _c == 7 ) { _c = 4;} + } + } + AIPersonality = _c; + _c--; + nAI_Pers = _c; + } else { + AIPersonality = nPersonality; + nPersonality--; + nAI_Pers = nPersonality; + } + + + //____________________General 2____________________________ + if ( AIPersonality == AI_VTOL){ + //Cheap Researches + cc=0; + while ( cc < numCheapResGen2[0] ){ + researchCheap[0][cc] = general2Cheap[0][cc]; + cc++; + } + cc=0; + //Standard Researches + while ( cc < numResGen2[0] ){ + research[0][cc] = general2[0][cc]; + cc++; + } + cc=0; + //Standard Researches + while ( cc < numResGen2[1] ){ + research[0][cc] = general2[1][cc]; + cc++; + } + cc=0; + while ( cc < numResGen2[9] ){ + research[9][cc] = general2[9][cc]; + cc++; + } + numRes[0] = numResGen2[0]; + numRes[1] = numResGen2[1]; + numRes[9] = numResGen2[9]; + + } + //____________________General 3____________________________ + if ( AIPersonality == AI_TURTLE){ + //Cheap Researches + while ( cc < numCheapResGen3[0] ){ + researchCheap[0][cc] = general3Cheap[0][cc]; + cc++; + } + cc=0; + //Standard Researches + while ( cc < numResGen3[0] ){ + research[0][cc] = general3[0][cc]; + cc++; + } + cc=0; + //Standard Researches + while ( cc < numResGen3[1] ){ + research[0][cc] = general3[1][cc]; + cc++; + } + cc=0; + while ( cc < numResGen3[9] ){ + research[9][cc] = general3[9][cc]; + cc++; + } + numRes[0] = numResGen3[0]; + numRes[1] = numResGen3[1]; + numRes[9] = numResGen3[9]; + + } + //____________________General 4____________________________ + if ( AIPersonality == AI_CYBORG){ + //Cheap Researches + while ( cc < numCheapResGen4[0] ){ + researchCheap[0][cc] = general4Cheap[0][cc]; + cc++; + } + cc=0; + //Standard Researches + while ( cc < numResGen4[0] ){ + research[0][cc] = general4[0][cc]; + cc++; + } + cc=0; + //Standard Researches + while ( cc < numResGen4[1] ){ + research[0][cc] = general4[1][cc]; + cc++; + } + cc=0; + while ( cc < numResGen4[9] ){ + research[9][cc] = general4[9][cc]; + cc++; + } + numRes[0] = numResGen4[0]; + numRes[1] = numResGen4[1]; + numRes[9] = numResGen4[9]; + + } + //update struct to be built + count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); + printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); + + //determine numb if additinal structs and type of mapPower + _nAdd = 0; + if (count < 4){ + printDebug1("Build standard quantity of structures -1"); + _nAdd = -1; + _nAddVTOL = -1; + nMapPower = VERY_LOW_POWER_MAP; + } else if (count >= 4 and count < 7){ + printDebug1("Build standard quantity of structures"); + _nAdd = 0; + _nAddVTOL = 0; + nMapPower = LOW_POWER_MAP; + } else if (count >= 7 and count < 11){ + printDebug1("Build standard quantity of structures + 1"); + _nAdd = 1; + _nAddVTOL = 0; + nMapPower = NORMAL_POWER_MAP; + } else if (count >= 11){ + printDebug1("Build standard quantity of structures + 2"); + _nAdd = 2; + _nAddVTOL = 1; + nMapPower = HIGH_POWER_MAP; + } + + //print off standard stats + count2=0; + while ( count2 < 4 ){ + if ( nAI_Pers == count2 ){ + printDebug1(" Standard building: Fact-Res-Cyb-VTOL("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &") _nAdd("& _nAdd &") _nAddVTOL("& _nAddVTOL &")"); + } + count2++; + } + + //update array + count2=0; + while ( count2 < 4 ){ + structsBuildLimits[count2][STR_TANK_FACTORY] =_nAdd + structsLimits[count2][STR_TANK_FACTORY]; + structsBuildLimits[count2][STR_RESLAB] =_nAdd + structsLimits[count2][STR_RESLAB]; + structsBuildLimits[count2][STR_CYB_FACTORY] =_nAdd + structsLimits[count2][STR_CYB_FACTORY]; + structsBuildLimits[count2][STR_VTOL_FACTORY] =_nAddVTOL + structsLimits[count2][STR_VTOL_FACTORY]; + count2++; + } + //set to 5 if too high. + count2=0; + while ( count2 < 4 ){ + if (structsBuildLimits[count2][STR_TANK_FACTORY] > 5) {structsBuildLimits[count2][STR_TANK_FACTORY] = 5;} + if (structsBuildLimits[count2][STR_RESLAB] > 5) {structsBuildLimits[count2][STR_RESLAB] = 5;} + if (structsBuildLimits[count2][STR_CYB_FACTORY] > 5) {structsBuildLimits[count2][STR_CYB_FACTORY] = 5;} + if (structsBuildLimits[count2][STR_VTOL_FACTORY] > 5) {structsBuildLimits[count2][STR_VTOL_FACTORY] = 5;} + count2++; + } + //set to 1 if less then 1. + count2=0; + while ( count2 < 4 ){ + if (structsBuildLimits[count2][STR_TANK_FACTORY] < 1) {structsBuildLimits[count2][STR_TANK_FACTORY] = 1;} + if (structsBuildLimits[count2][STR_RESLAB] < 1) {structsBuildLimits[count2][STR_RESLAB] = 1;} + if (structsBuildLimits[count2][STR_CYB_FACTORY] < 1) {structsBuildLimits[count2][STR_CYB_FACTORY] = 1;} + if (structsBuildLimits[count2][STR_VTOL_FACTORY] < 1) {structsBuildLimits[count2][STR_VTOL_FACTORY] = 1;} + count2++; + } + + //print off stats + count2=0; + while ( count2 < 4 ){ + if ( nAI_Pers == count2 ){ + printDebug1(" Selected building: General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsBuildLimits[count2][STR_TANK_FACTORY] &"-"& structsBuildLimits[count2][STR_RESLAB] &"-"& structsBuildLimits[count2][STR_CYB_FACTORY] &"-"& structsBuildLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &") _nAdd("& _nAdd &")"); + } + count2++; + } + +} +//----------------------------------------------------------------------------- +function bool aiResponsibleForPlayer(int _player) +{ + if(_player == selectedPlayer or not myResponsibility(_player)) + { + return false; + } + + return true; +} +//----------------------------------------------------------------------------- +function int _random(int x) +{ + local int _c,_d; + _c=0; + while( _c < (player+1)*2 ){ + _d = random(x); + _c++; + } + return _d; +} +//----------------------------------------------------------------------------- +function void assignDroidToGrp(DROID droid) +{ + +/* +buildDefGroup.members +buildGroup.members +cyborgConstructGroup.members +cyborgAttGroup.members +cyborgDefGroup.members +harvesterGroup.members +helpGroup.members +repairGroup.members +tankDefGroup.members +tankGroup.members +toBeRepairedCyborgGroup.members +toBeRepairedTankGroup.members +vtolDefendGr.members +vtolAttGr.members +vtolHunterGr.members +*/ + // TANK + if ( droid == NULLOBJECT ){ return; } + if ( droid.player != player ){ return; } + + + if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) + { + groupAddDroid(tankDefGroup, droid); + } + +// TANK REPAIR + if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) + { + groupAddDroid(repairGroup, droid); + } + +// VTOL/CYBORG/TANK TRUCK + if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) + { + groupAddDroid(buildGroup, droid); + } + +// CYBORG +if(droid.propulsion == cyborgPropulsion) +{ + if(droid.droidType == DROID_CYBORG_CONSTRUCT) + { + //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); + groupAddDroid(cyborgConstructGroup, droid); + } else { + nTotCyborgBuilt++; + if ( AIPersonality == AI_CYBORG ){ + //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); + groupAddDroid(cyborgDefGroup, droid); + } else { + if (nTotCyborgBuilt > 2){ + //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); + groupAddDroid(tankDefGroup, droid); + nTotCyborgBuilt = 0; + } else { + //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); + groupAddDroid(cyborgDefGroup, droid); + } + } + } +} + +// VTOL + boolResult = false; + if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) + { + groupAddDroid(vtolDefendGr, droid); + } + + //debug check + if ( !hasGroup(droid) ){ + //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); + groupAddDroid(tankDefGroup, droid); + } + + setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); + if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ + setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); + setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); + setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); + } +} +//----------------------------------------------------------------------------- +/* what to stop, keep working +[ResLab - TkFact - cybFac - VTOLFact] +(Defences - Uprades - RepairFac) +tkProd stop @ 15 droids +cybProd stop @ 15 droids +VTOLProd stop @ 8 droids +0- [1-1-1-1] (1-1-1) +1- [0-2-2-1] (1-1-1) +2- [0-2-2-0] (1-1-1) +3- [3-1-1-1] (0-1-1) +4- [3-1-1-0] (0-1-1) +5- [3-1-1-1] (1-1-1) +6- [0-0-0-0] (0-0-0) +7- [0-0-0-0] (0-0-0) +*/ +function void manageVeryLowPower() +{ + if ( nProdSelect == 0 ){//standard + if ( nWorkingLab >= 2){lStopResearch = true; } + //lStopCheapResearch = true; + if ( nWorkingFact >= 2 ){lStopTankProduction = true; } + if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } + if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + if ( nProdSelect == 1){ //ok defences and upgrades + if ( nWorkingLab >= 1){lStopResearch = true; } + //lStopCheapResearch = true; + lStopTankProduction = true; + lStopCybProduction = true; + lStopVTOLProduction = true; + //lStopBuildDefGateway = true; + //lStopBuildDef = true; + //lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + } + if ( nProdSelect == 2){ //ok units production + lStopResearch = true; + lStopCheapResearch = true; + //lStopTankProduction = true; + //lStopCybProduction = true; + //lStopVTOLProduction = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + if ( nProdSelect == 3){ + if ( nWorkingLab >= 1){lStopResearch = true; } + lStopCheapResearch = true; + if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } + if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } + lStopVTOLProduction = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + //lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + if ( nProdSelect == 4){//stop all but cheap researches!! + lStopResearch = true; + //lStopCheapResearch = true; + if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } + if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } + lStopVTOLProduction = true; + lStopBuildDef = true; + lStopBuildDefGateway = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + } + if ( nProdSelect == 5){//stop all but researches, def and RepFac + //lStopResearch = true; + //lStopCheapResearch = true; + lStopTankProduction = true; + lStopCybProduction = true; + lStopVTOLProduction = true; + //lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildDefGateway = true; + //lStopBuildRepFacility = true; + } + if ( nProdSelect == 6){//stop upgrades only + if ( nWorkingFact >= 1){lStopTankProduction = true; } + if ( nWorkingCybFac >= 1){lStopCybProduction = true; } + if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } + if ( nWorkingLab >= 1){lStopResearch = true; } + //lStopCheapResearch = true; + //lStopBuildDef = true; + //lStopBuildDefGateway = true; + //lStopBuildDefDerricks = true; + //lStopBuildRepFacility = true; + } + if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod + lStopTankProduction = true; + lStopCybProduction = true; + lStopVTOLProduction = true; + if ( nWorkingLab >= 2){lStopResearch = true; } + lStopCheapResearch = true; + lStopBuildDef = true; + lStopBuildDefGateway = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + } + + //activate VTOL production if min droids has been reached + if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ + lStopVTOLProduction = false; + if ( (nTotCyborgs+nTotTanks) > 15 ){ + lStopTankProduction = true; + lStopCybProduction = true; + } + } + +} +//================================================== +function void manageVeryLowPower2() //Personality General 2 +{ + if ( nProdSelect < 3 ){ + if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ + lStopVTOLProduction = false; + lStopTankProduction = true; + lStopCybProduction = true; + lStopResearch = true; + lStopCheapResearch = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = false; + lStopBuildDefGateway = true; + } else { + if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } + if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } + if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } + if ( nWorkingLab >= 2 ) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + } + + if ( nProdSelect >= 3 and nProdSelect < 6){ + if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ + lStopVTOLProduction = false; + lStopTankProduction = true; + lStopCybProduction = true; + if ( nWorkingLab >= 1 ) {lStopResearch = true; } + lStopCheapResearch = true; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } else { + if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } + if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } + if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } + if ( nWorkingLab >= 2 ) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildRepFacility = false; + lStopBuildDefGateway = false; + } + } + + if ( nProdSelect >= 6 and nProdSelect < 8){ + if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ + lStopVTOLProduction = false; + lStopTankProduction = true; + lStopCybProduction = true; + lStopResearch = true; + lStopCheapResearch = true; + lStopBuildDef = false; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } else { + if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } + if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } + if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } + if ( nWorkingLab >= 0 ) {lStopResearch = true; } + lStopCheapResearch = true; + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + + } + + if ( gameTime > TIME_START_VTOLRESEARCH ){ + if ( !skVtolEnableCheck(player) ){ + if ( nWorkingLab < 2 ) {lStopResearch = false; } + else { lStopResearch = true; } + } + } + +} +//================================================== +function void manageVeryLowPower3() //Personality General 3 +{ + + if ( nProdSelect < 3 ){ + if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } + if ( nWorkingFact >= 1) {lStopTankProduction = true; } + if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } + if ( nWorkingLab >= 2) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = false; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = false; + } + if ( nProdSelect >= 3 and nProdSelect < 6 ){ + if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } + if ( nWorkingFact >= 1) {lStopTankProduction = true; } + if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } + if ( nWorkingLab >= 2) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildRepFacility = true; + lStopBuildDefGateway = false; + } + if ( nProdSelect >= 6 ){ + if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } + if ( nWorkingFact >= 0) {lStopTankProduction = true; } + if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } + if ( nWorkingLab >= 4) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + + //stop events + if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min + lStopTankProduction = true; + } + + //activate VTOL production if min droids has been reached + if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ + lStopVTOLProduction = false; + lStopTankProduction = true; + lStopCybProduction = true; + } +} + +//================================================== +function void manageVeryLowPower4() //Personality General 4 +{ + if ( nProdSelect < 3 ){ + if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } + lStopTankProduction = false; + if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } + if ( nWorkingLab >= 3) {lStopResearch = true; } + lStopCheapResearch = true; + lStopBuildDef = false; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + if ( nProdSelect >= 3 and nProdSelect < 6 ){ + if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } + lStopTankProduction = false; + if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } + if ( nWorkingLab >= 2) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = false; + lStopBuildDefDerricks = false; + lStopBuildRepFacility = false; + lStopBuildDefGateway = false; + } + if ( nProdSelect >= 6 ){ + if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } + lStopTankProduction = false; + lStopCybProduction = false; + if ( nWorkingLab >= 1) {lStopResearch = true; } + lStopCheapResearch = false; + lStopBuildDef = true; + lStopBuildDefDerricks = true; + lStopBuildRepFacility = true; + lStopBuildDefGateway = true; + } + + //activate VTOL production if min droids has been reached + if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ + lStopVTOLProduction = false; + lStopTankProduction = true; + lStopCybProduction = true; + } + +} + + +//----------------------------------------------------------------------------- +function STRUCTURE getVTOLstructTarget() +{ + local int _player, _aa, _bestAA, _ii; + local STRUCTURE _struct, _structTarget; + + _structTarget = NULLOBJECT; + + //search for enemy def structs not protected by AA + if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- + + if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- + + _aa=0; + _bestAA=999; + _ii = 0; + while ( _ii < numDefStructs){ + _struct = getStructure(defStructs[_ii],targetPlayerVTOL); + if ( _struct != NULLOBJECT ){ + _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); + if ( _aa < _bestAA ){ + //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); + _bestAA = _aa; _structTarget = _struct; + } + } + _ii++; + } + _aa=0; + _bestAA=999; + _ii = 0; + while ( _ii < numWallWeaps){ + _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); + if ( _struct != NULLOBJECT ){ + _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); + if ( _aa < _bestAA ){ + //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); + _bestAA = _aa; _structTarget = _struct; + } + } + _ii++; + } + + } else { // ------------ attack AA def structs ---------------- + + //displayMsg("_________ getVTOLstructTarget __________"); + _aa=0; + _bestAA=999; + _ii = 0; + while ( _ii < numGenAA){ + _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); + if ( _struct != NULLOBJECT ){ + _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); + if ( _aa < _bestAA ){ + _bestAA = _aa; _structTarget = _struct; + //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); + } + } + _ii++; + } + + } + + } else {// ------------- attack base ------------ + + //displayMsg("_________ getVTOLstructTarget search target in Base __________"); + _aa=0; + _bestAA=999; + _ii = 0; + while ( _ii < numStructs){ + _struct = getStructure(structs[_ii],targetPlayerVTOL); + if ( _struct != NULLOBJECT ){ + _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); + if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } + } + _ii++; + } + if ( _structTarget == NULLOBJECT or _bestAA*3 > vtolDefendGr.members){ + _aa=0; + _bestAA=999; + _ii = 0; + while ( _ii < numWallWeaps){ + _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); + if ( _struct != NULLOBJECT ){ + _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); + if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } + } + _ii++; + } + } + if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members){ + _aa=0; + _bestAA=999; + _ii = 0; + while ( _ii < numDefStructs){ + _struct = getStructure(defStructs[_ii],targetPlayerVTOL); + if ( _struct != NULLOBJECT ){ + _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); + if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } + } + _ii++; + } + } + } + return _structTarget; +} + +//----------------------------------------------------------------------------- +function int numEnemyAAInRange(int _x, int _y, int _range) +{ + local int _enemy,_numAA; + + _numAA = 0; + _enemy = 0; + while(_enemy < MAX_PLAYERS) + { + if(!friendlyPlayer(_enemy)) + { + _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); + } + _enemy++; + } + + return _numAA; +} +//----------------------------------------------------------------------------- +function void updatePlayersStats() +{ + local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; + local int _c2,_c3; + + _range = max(mapWidth,mapHeight)*TILE*2; + + nPlayersInGame = 0; + nEnemyPlayers = 0; + nHumanPlayers = 0; + nLastEnemyPlayer = -1; + _c2 = 0; + _c3 = 0; + while ( _c2 < MAX_PLAYERS ){ + if ( isPlayerStillLive(_c2)){ + if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } + + nPlayersInGame++; + if ( !friendlyPlayer(_c2) ){ + //printDebug1("updatePlayersStats: enemy player found _c2("& getPlayerName(_c2) &" #("& _c2 &") "); + nEnemyPlayers++; + nLastEnemyPlayer = _c2; + } + aPlayers[PLAYER_NUMBER][_c3] = _c2; + _c3++; + } + _c2++; + } + + //reset teams, just in case alliances changed. + count = 0; + while (count < MAX_PLAYERS){ + aPlayers[TEAM_NUMBER][count] = -1; + count++; + } + + count = 0; + _c2 = 0; + nTeam = 0; + while (count < MAX_PLAYERS){ + if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ + + //assign a team to the player + nTeam++; + aPlayers[TEAM_NUMBER][count] = nTeam; + + //loop + _c2 = 0; + while (_c2 < MAX_PLAYERS){ + if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ + if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ + aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; + } + } + _c2++; + } + } + count++; + } + + _player=0; + while( _player < MAX_PLAYERS ){ + if ( isPlayerStillLive(_player) ){ + aStat[OC_DERRICKS][_player] = getNumDerricks(_player); + aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); + aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); + aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); + aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); + aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); + aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); + aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); + aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); + aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); + aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); + } + _player++; + } + +} + +//----------------------------------------------------------------------------- +//not used +function int getTeamNumber(int _player) +{ + return aPlayers[TEAM_NUMBER][_player]; +} +//----------------------------------------------------------------------------- +function int getDroidsInfo(int _player, int _choice) +{ + local DROID _droid; + local GROUP _grp[8]; + local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; + + _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; + _hpCYB=0; _hpTK=0; _hpVTOL=0; + + + InitEnumDroids(_player,_player); + _droid = EnumDroid(); + while(_droid != NULLOBJECT) + { + if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ + _powTK = _powTK + calcDroidPower(_droid); + _hpTK = _hpTK + _droid.hitPoints; + _tk++; + } + if(_droid.droidType == DROID_CYBORG){ + _powCYB = _powCYB + calcDroidPower(_droid); + _hpCYB = _hpCYB + _droid.hitPoints; + _cyb++; + } + if( isVtol(_droid) ){ + _powVTOL = _powVTOL + calcDroidPower(_droid); + _hpVTOL = _hpVTOL + _droid.hitPoints; + _vtol++; + } + //power cost + _droid = EnumDroid(); + } + + if ( _choice == 0 ){ return _cyb; } + if ( _choice == 1 ){ return _tk; } + if ( _choice == 2 ){ return _vtol; } + if ( _choice == 3 ){ return _powCYB; } + if ( _choice == 4 ){ return _powTK; } + if ( _choice == 5 ){ return _powVTOL; } + if ( _choice == 6 ){ return _hpCYB; } + if ( _choice == 7 ){ return _hpTK; } + if ( _choice == 8 ){ return _hpVTOL; } + return -1; +} + +//----------------------------------------- +function void deactivateHelp() +{ + + //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} + //tBeacon[nAllyBeingHelped] = -1; + //beaconX[nAllyBeingHelped] = -1; + //beaconY[nAllyBeingHelped] = -1; + nAllyBeingHelped = -1; + tHelpAction = -1; + nHelpX = -1; + nHelpY = -1; + lastHelpPlayer = -1; + objTargetHelpTeam = NULLOBJECT; + if ( helpGroup.members > 0){ + if ( AIPersonality == AI_CYBORG ){ + groupAddGroup(cyborgDefGroup, helpGroup); + orderGroup(cyborgDefGroup, DORDER_RTB); + } else { + groupAddGroup(tankDefGroup, helpGroup); + orderGroup(tankDefGroup, DORDER_RTB); + } + } + setEventTrigger(manageHelpTeam,inactive); +} +//----------------------------------------------------------------------------- +function bool bHelpingAnyAlly() +{ + if ( nAllyBeingHelped == -1 ){ + return false; + } + return true; +} +//----------------------------------------------------------------------------- +function bool canHelpAlly(int _sender) +{ + local int _tank, _cyb; + + _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; + _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + + dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); + + if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ + return false; + } + if (alertLevel == RED_ALERT){ + return false; + } + if ( _tank +_cyb < MIN_HELPING_UNITS ){ + //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); + return false; + } + return true; +} + +//----------------------------------------------------------------------------- +function void helpAlly(int _ally){ + + local int _tank, _cyb; + + _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; + _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; + + printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); + if ( _tank > MAX_HELPING_UNITS ){ _tank = MAX_HELPING_UNITS; } + if ( _cyb > MAX_HELPING_UNITS ){ _cyb = MAX_HELPING_UNITS; } + + moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); + moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); + + tLastHelp = gameTime; + nHelpX = beaconX[_ally]; + nHelpY = beaconY[_ally]; + nAllyBeingHelped = _ally; + + //helping droids never repair themselves + initIterateGroup(helpGroup); + droid = iterateGroup(helpGroup); + while( droid != NULLOBJECT) + { + setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); + droid = iterateGroup(helpGroup); + } + + msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); + printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); + + orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); + setEventTrigger(manageHelpTeam,manageHelpTeamTr); + +} + +//====================================================================== +// +// DyDo Communcation Functions & Events +// +//====================================================================== +event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); +{ + //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); + + if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) + { + //boolResult=true; + if(allianceExistsBetween(_sender,player)){ + msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); + } else { + msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); + } + } + + if ( message == "/debug0 on" and player == 0 ) { + msg("Debug turned on", player, sender); + dbgMsgOn(player, true); + } + + if ( message == "/debug1 on" and player == 1 ) { + msg("Debug turned on", player, sender); + dbgMsgOn(player, true); + } + + if ( message == "/debug2 on" and player == 2 ) { + msg("Debug turned on", player, sender); + dbgMsgOn(player, true); + } + + if ( message == "/debug3 on" and player == 3 ) { + msg("Debug turned on", player, sender); + dbgMsgOn(player, true); + } + + if ( message == "/debug on") { + msg("Debug turned on", player, sender); + dbgMsgOn(player, true); + } + + if (message == "/debug off" ) { + msg("Debug turned off", player, sender); + dbgMsgOn(player, false); + } + + if (message == "/stats" ) { + count = getTargetEnemy(false); + } + + if (message == "/stats1" ) { + displayStats(1); + } + + if (message == "/stats2" ) { + displayStats(2); + } + + if (message == "/stats3" ) { + displayStats(3); + } + + if ( gameTime < 2*TIME_MINUTE ){ + if(message == "/set dydo gen1" ) { + SetDyDoPersonality(AI_STANDARD,player); + console(getPlayerName(player) & " is now DyDo Standard AI"); + } + if(message == "/set dydo gen2" ) { + SetDyDoPersonality(AI_VTOL,player); + console(getPlayerName(player) & " is now DyDo VTOL AI"); + } + if(message == "/set dydo gen3" ) { + SetDyDoPersonality(AI_TURTLE,player); + console(getPlayerName(player) & " is now DyDo Turtle AI"); + } + if(message == "/set dydo gen4" ) { + SetDyDoPersonality(AI_CYBORG,player); + console(getPlayerName(player) & " is now DyDo Cyborg AI"); + } + if(message == "/set dydo random" ) { + SetDyDoPersonality(0,player); + console(getPlayerName(player) & " is now DyDo random AI"); + } + + if(message == "/set player0 gen1" ) { + SetDyDoPersonality(AI_STANDARD,0); + if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } + } + if(message == "/set player1 gen1" ) { + SetDyDoPersonality(AI_STANDARD,1); + if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } + } + if(message == "/set player2 gen1" ) { + SetDyDoPersonality(AI_STANDARD,2); + if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } + } + if(message == "/set player3 gen1" ) { + SetDyDoPersonality(AI_STANDARD,3); + if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } + } + + if(message == "/set player0 gen2" ) { + SetDyDoPersonality(AI_VTOL,0); + if ( player==0 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } + } + if(message == "/set player1 gen2" ) { + SetDyDoPersonality(AI_VTOL,1); + if ( player==1 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } + } + if(message == "/set player2 gen2" ) { + SetDyDoPersonality(AI_VTOL,2); + if ( player==2 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } + } + if(message == "/set player3 gen2" ) { + SetDyDoPersonality(AI_VTOL,3); + if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } + } + + if(message == "/set player0 gen3" ) { + SetDyDoPersonality(AI_TURTLE,0); + if ( player==0 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } + } + if(message == "/set player1 gen3" ) { + SetDyDoPersonality(AI_TURTLE,1); + if ( player==1 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } + } + if(message == "/set player2 gen3" ) { + SetDyDoPersonality(AI_TURTLE,2); + if ( player==2 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } + } + if(message == "/set player3 gen3" ) { + SetDyDoPersonality(AI_TURTLE,3); + if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } + } + + if(message == "/set player0 gen4" ) { + SetDyDoPersonality(AI_CYBORG,0); + if ( player==0 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } + } + if(message == "/set player1 gen4" ) { + SetDyDoPersonality(AI_CYBORG,1); + if ( player==1 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } + } + if(message == "/set player2 gen4" ) { + SetDyDoPersonality(AI_CYBORG,2); + if ( player==2 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } + } + if(message == "/set player3 gen4" ) { + SetDyDoPersonality(AI_CYBORG,3); + if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } + } + } + + if(message == "/autogame on" && (sender == player)) + { + if(myResponsibility(player)) + { + if(!bRunning) //make sure current machine is responsible for this AI and it's not already active + { + console(getPlayerName(player) & " is now active"); + bRunning = true; + activateAI(); + } + } + } + + if(message == "/autogame off" && (sender == player)) + { + if(myResponsibility(player)) + { + if(bRunning) + { + console(getPlayerName(player) & " AI has been deactivated"); + bRunning = false; + shutDownThisAI(); + } + } + } + +} +//======================================================================== +/* Deal with beacons */ +//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); +event beaconEv(beaconTr) +{ + local int _players; + local string _processedString; + + /* + if( !aiResponsibleForPlayer(player) ) + { + setEventTrigger(beaconEv, inactive); + } + else + { + */ + ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); + + updateBeacons(); + + beaconX[sender] = x; + beaconY[sender] = y; + tBeacon[sender] = gameTime / 10; + + processCommand(message, sender, TRUE); + //} +} + +//----------------------------------------------------------------------------- +function bool haveAnyBeacon() +{ + local int _c; + _c = 0; + while ( _c < MAX_PLAYERS ){ + if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) + { + return true; //have beacon for this player + } + _c++; + } + + return false; +} +//----------------------------------------------------------------------------- +function bool haveBeacon(int _player) +{ + if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) + { + return true; //have beacon for this player + } + + return false; +} +//----------------------------------------------------------------------------- +function bool beaconTimeout(int _player) +{ + if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago + { + return true; //this beacon is still 'fresh' + } + + return false; +} +//----------------------------------------------------------------------------- +function void updateBeacons() +{ + local int _c; + _c = 0; + while(_c < MAX_PLAYERS) + { + if(beaconTimeout(_c)) //last beacon timed out + { + tBeacon[_c] = -1; + beaconX[_c] = -1; + beaconY[_c] = -1; + } + _c = _c + 1; + } +} +//----------------------------------------------------------------------------- +/* Deal with a chat message */ +//(CALL_AI_MSG, player, ref sender, ref message); +event multiMsgEv(multiMsgTr) +{ + /* + if( !aiResponsibleForPlayer(player) ) + { + setEventTrigger(multiMsgEv, inactive); + } else { + */ + if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } + processCommand(message, sender, false); + //} +} +//----------------------------------------------------------------------------- +function void processCommand(string _message, int _sender, bool _bBlipMessage) +{ + + //go,/stop,/status + local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; + local string _msg, _processedString; + local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; + local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; + local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; + + /* Extract semantic information */ + _curMsg = 0; + _numMsgs = processChatMsg(_message); + + //boolResult=false; + //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); + + + //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) + + if(!allianceExistsBetween(_sender,player) ){ return; } + + while(_curMsg < _numMsgs ) + { + if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func + { + + if ( _message == "stop" or _message == "Stop" ){ + _msg = "xxx"; + } else { + _msg = getChatCmdDescription(_curMsg); + } + + //dbg("Player ("& player &") addressed with : ("& _msg &")", player); + if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go + { + boolResult=true; + if(not haveBeacon(_sender)) + { + msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); + return; + } else { + //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); + if ( nAllyBeingHelped == -1 ){ + if ( canHelpAlly(_sender) ){//nAllyBeingHelped + lastHelpPlayer = _sender; + //dbg("dbg: Ally can help", _sender); + helpAlly(_sender); + } else{ + msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); + } + } else{ + if ( nAllyBeingHelped == _sender ){ + msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); + } else { + msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); + } + } + } + + } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { + boolResult=true; + //dbg("Got a status request :" & _msg, _sender ); + notifyStatus(1, _sender); + + } else if ( _msg == "xxx" ) { + boolResult=true; + if ( !bHelpingAnyAlly() ){ + msg("There is nothing to stop!", player, _sender); + } else { + //dbg("dbg: i'm addressed with stop", player); + if ( nAllyBeingHelped == _sender ){ + deactivateHelp(); + msg("Action deactivated!", player, _sender); + } + } + + } else if (_msg == "power?" or _msg == "power") { + boolResult=true; + msg("I have ("& playerPower(player) &") power available", player, _sender); + + } else if (_msg == "/status" ) { + count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; + msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); + _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); + _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); + _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); + _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); + _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); + msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); + _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); + _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); + _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); + _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); + _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); + msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); + _bg = buildGroup.members; + _hg = harvesterGroup.members; + _rg = repairGroup.members; + _tg = tankGroup.members; + _bdg = buildDefGroup.members; + _ccG = cyborgConstructGroup.members; + _cG = cyborgDefGroup.members; + _tDG = tankDefGroup.members; + _cAt = cyborgAttGroup.members; + _HelpG = helpGroup.members; + msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); + + count = 0; + while ( count < numWallWeaps ){ + _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; + count++; + } + count = 0; + while ( count < numDefStructs ){ + _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; + count++; + } + count = 0; + while ( count < 20){ + _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; + count++; + } + while ( count < 40){ + _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; + count++; + } + //displayMsg("________ (3) _________"); + while ( count < 60){ + _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; + count++; + } + + count = 0; + while ( count < numCheapRes[0] ){ + _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; + count++; + } + + count = 0; + while ( count < numRes[9] ){ + _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; + count++; + } + count = 0; + while (count < MAX_PLAYERS){ + if (isPlayerStillLive(count)){ + _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; + } + count++; + } + msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); + msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); + msg("A: " & _str0, player, _sender); + msg("B: " & _str1, player, _sender); + msg("C: " & _str2, player, _sender); + msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); + msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); + } + + } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ + _curMsg++; + } + +} +//----------------------------------------------------------------------------- +function void notifyAll(STRING _cstr) +{ + local int _player; + + _player = 0; + while(_player < MAX_PLAYERS ) + { + if ( player != _player ){ + msg(_cstr, player, _player); + } + _player++; + } + +} +//----------------------------------------------------------------------------- +function void notifyStatus(int _choice, int _player) +{ + + //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; + //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; + local int _f,_c,_r,_v,_h,_l,_cc; + + _f = nFactories; + _r = nResLabs; + _c = nCybFact; + _v = nVTOLFactories; + _h = numStructsByType(playerHQ, player); + _l = numStructsByType(lassat, player); + _cc = numStructsByType(derrick, player); + + msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); + msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt &" alert is on("& alertIsOn &") alert level("& alertLevel &")", player, _player); + msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); + msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); + msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); + msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); + +} +//----------------------------------------------------------------------------- +function void displayStats(int _choice) +{ + + local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; + local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; + local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; + local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; + local int _count,_count2; + + ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); + + _count=0; + while ( _count < 11 ) + { + if ( oilResTargetId[_count] > -1 ){ + _totHarv++; + } + _count++; + } + + _bg = buildGroup.members; + _hg = harvesterGroup.members; + _rg = repairGroup.members; + _tg = tankGroup.members; + _bdg = buildDefGroup.members; + _ccG = cyborgConstructGroup.members; + _cG = cyborgDefGroup.members; + _tDG = tankDefGroup.members; + _HelpG = helpGroup.members; + _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; + + _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); + _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); + _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); + + structure = getStructure(playerHQ, player); + if(structure != NULLOBJECT) + { + _HQx = structure.x; + _HQy = structure.y; + } else { + _HQx = 0; + _HQy = 0; + } + + _count = 0; + while ( _count < numWallWeaps ){ + _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; + _count++; + } + _count = 0; + while ( _count < numDefStructs ){ + _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; + _count++; + } + + _count = 0; + while ( _count < numFortressDef ){ + _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; + _count++; + } + + _count = 0; + while ( _count < 20){ + _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; + _count++; + } + while ( _count < 40){ + _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; + _count++; + } + while ( _count < numRes[0]){ + _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; + _count++; + } + + _count = 0; + while ( _count < 23){ + _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; + _count++; + } + while ( _count < numRes[1]){ + _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; + _count++; + } + + + _count = 0; + while ( _count < numCheapRes[0] ){ + _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; + _count++; + } + + _count = 0; + while ( _count < numRes[9] ){ + _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; + _count++; + } + + _count = 0; + while (_count < MAX_PLAYERS){ + if (isPlayerStillLive(_count)){ + _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; + } + _count++; + } + + _count=0; + while( _count < MAX_PLAYERS and _count < 3){ + if (isPlayerStillLive(_count)){ + _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + while( _count < MAX_PLAYERS and _count < 6 ){ + if (isPlayerStillLive(_count)){ + _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + while( _count < MAX_PLAYERS and _count < 8 ){ + if (isPlayerStillLive(_count)){ + _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; + } + _count++; + } + + _count2=0; + while( _count2 < MAX_PLAYERS ){ + if (isPlayerStillLive(_count2)){ + _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; + } + _count2++; + } + + _count = player; + if ( _choice == 1 ){ + dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); + dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); + dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); + dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); + dbg("dbg-> Cyborgs Built: (AR-AT-AP-KK)(Error) ("& nTotCybAR &" - "& nTotCybAT &" - "& nTotCybAP &" - "& nTotCybKK &")("& nTotCybErr &")",player); + dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); + + } + if ( _choice == 2 ){ + dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); + dbg("dbg-> Info : " & _sPlInf1,_count); + dbg("dbg-> Info : " & _sPlInf2,_count); + dbg("dbg-> Info : " & _sPlInf3,_count); + dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); + } + if ( _choice == 3 ){ + dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); + dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); + dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); + dbg("dbg-> Res: " & _str0, _count); + dbg("dbg-> Res: " & _str1, _count); + dbg("dbg-> Res: " & _str2, _count); + dbg("dbg-> Res: " & _str3, _count); + dbg("dbg-> Res: " & _str4, _count); + dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); + dbg("dbg-> VTOL Res: "& _str5,_count); + dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); + } + +} +//----------------------------------------------------------------------------- +function bool isPlayerStillLive(int _player) +{ + if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ + return true; + } + return false; +} +//----------------------------------------------------------------------------- +function void checkIfDroidIsStuck(GROUP _group) +{ + + //displayMsg("checkIfDroidIsStuck: time("& gameTime &")"); + local int _x,_y,_dist,_rnd; + //Search for stucked droids + initIterateGroup(_group); + droid = iterateGroup(_group); + while(droid != NULLOBJECT) + { + if(!droidOrderIdle(droid)){ + + if ( !hasCoordStored(droid) ){ + //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); + storeDroidCoord(droid); + } else { + + if ( coordChanged(droid) ){ + _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); + //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); + updateDroidCoord(droid); + + } else { + _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); + if ( _dist < 3*TILE ){ + //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); + cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck + } else { + if ( incrementDroidCounter(droid.id) ){ + //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); + orderDroid(droid, DORDER_RUN); + /* + _rnd = random(4); + if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } + if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } + if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } + if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } + if ( _x < 0 ) { _x = 2*TILE; } + if ( _y < 0 ) { _y = 2*TILE; } + if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } + if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } + if( !droidCanReach(droid, _x ,_y) ){ + if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ + //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); + orderDroidLoc(droid, DORDER_MOVE, _x, _y); + } + } else { + //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); + orderDroidLoc(droid, DORDER_MOVE, _x, _y); + } + */ + } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } + + } + + } + } + + } else { + //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); + cleanDroidPos(droid.id);//put all to -1 + } + droid = iterateGroup(_group); + } + return; +} +//----------------------------------------------------------------------------- +function bool incrementDroidCounter(int droid_id) +{ + local int _c; + _c = 0; + while ( _c < num_aDroid ) + { + if (aDroid_Id[_c] == droid_id ){ + aDroid_counter[_c] = aDroid_counter[_c] + 1; + if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} + } + _c++; + } + + //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); + return false; +} +//----------------------------------------------------------------------------- +function void cleanDroidCoordArray() +{ + local int _c; + _c = 0; + while ( _c < num_aDroid ) + { + + boolResult = false; + initIterateGroup(buildGroup); + droid = iterateGroup(buildGroup); + while(droid != NULLOBJECT) + { + if ( aDroid_Id[_c] == droid.id ){ + boolResult = true; + } + droid = iterateGroup(buildGroup); + } + + initIterateGroup(buildDefGroup); + droid = iterateGroup(buildDefGroup); + while(droid != NULLOBJECT) + { + if ( aDroid_Id[_c] == droid.id ){ + boolResult = true; + } + droid = iterateGroup(buildDefGroup); + } + + initIterateGroup(harvesterGroup); + droid = iterateGroup(harvesterGroup); + while(droid != NULLOBJECT) + { + if ( aDroid_Id[_c] == droid.id ){ + boolResult = true; + } + droid = iterateGroup(harvesterGroup); + } + + if ( !boolResult ){ + cleanDroidPos(aDroid_Id[_c]); + } + + _c++; + } + + + return; +} +//----------------------------------------------------------------------------- +function void cleanDroidPos(int _droidId) +{ + local int _c; + _c = 0; + while ( _c < num_aDroid ) + { + if ( aDroid_Id[_c] == _droidId ){ + aDroid_Id[_c] = -1; + aDroid_X[_c] = -1; + aDroid_Y[_c] = -1; + aDroid_counter[_c] = 0; + } + _c++; + } +} + +//----------------------------------------------------------------------------- +function void storeDroidCoord(DROID _droid) +{ + local int _c; + _c = getFreePosDroid(); + if ( _c == -1 ){ _c = 49-random(10); } //hack + aDroid_Id[_c] = droid.id; + aDroid_X[_c] = droid.x; + aDroid_Y[_c] = droid.y; +} +//----------------------------------------------------------------------------- +function void updateDroidCoord(DROID _droid) +{ + local int _c; + _c = 0; + while ( count < num_aDroid ) + { + if ( aDroid_Id[_c] == _droid.id ){ + aDroid_Id[_c] = droid.id; + aDroid_X[_c] = droid.x; + aDroid_Y[_c] = droid.y; + return; + } + _c++; + } + //it is ok if the droid has not been found because positions are resetted + //for droid not idle + storeDroidCoord(_droid); + return; +} + +//----------------------------------------------------------------------------- +function bool coordChanged(DROID _droid) +{ + local int _c,_c2; + _c = 0; + while ( _c < num_aDroid ) + { + if ( aDroid_Id[_c] == _droid.id ){ + _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); + if ( _c2 > 2*TILE ){ + //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); + return true; + } else { + //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); + return false; + } + } + _c++; + } + //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); + return true; +} +//----------------------------------------------------------------------------- +function bool hasCoordStored(DROID _droid) +{ + local int _c; + _c = 0; + while ( _c < num_aDroid ) + { + if ( aDroid_Id[_c] == _droid.id ){ + return true; + } + _c++; + } + return false; +} +//----------------------------------------------------------------------------- +function int getFreePosDroid() +{ + local int _c; + _c = 0; + while ( _c < num_aDroid ) + { + if ( aDroid_Id[_c] == -1 ){ return _c; } + _c++; + } + //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); + return -1; +} +//-------------------------------------------------------------------- +function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) +{ + local int _nTot; + local STRUCTURE _structure; + + _nTot = 0; + + initEnumStruct(FALSE,_struct,_player,_player); + _structure = enumStruct(); + while(_structure != NULLOBJECT) + { + if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } + _structure = enumStruct(); + } + + return _nTot; + +} +//-------------------------------------------------------------------- +function void printDebug( STRING _message ) +{ + if ( _DEBUG ){ + debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); + } +} +//-------------------------------------------------------------------- +function void printDebug1( STRING _message ) +{ + if ( _DEBUG1 ){ + debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); + } +} +//-------------------------------------------------------------------- +// form alliances between AIs +function bool createAIalliance(int _player1, int _player2) +{ + + if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ + //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); + return false; + } + + if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { + //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); + return false; + } + + if( allianceExistsBetween(_player1, _player2) ){ + //dbg("dbg->createAIalliance: players are already allied",player); + return false; + } + + createAlliance(_player1,_player2); + notifyAll("-----------------------------------------------"); + notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); + notifyAll("-----------------------------------------------"); + + printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); + + return true; +} +//-------------------------------------------------------------------- +function STRUCTURESTAT getDefStruct() +{ + + local STRUCTURESTAT _defstruct; + local int _nDef,_n,_rnd; + + _n = min(pickDefQueueDepth,3); + _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences + _defstruct = pickDefQueue[_nDef]; + + //=========== STANDARD DEFENCES ================================== + if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ + + if ( pickDefQueueDepth < 7 ){ + _rnd = _random(100); + //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower + if ( _rnd < 40 ){ + if (isStructureAvailable(HMGhardPoint,player)){ + _defstruct = HMGhardPoint; + } else { + if (isStructureAvailable(MGbunker,player)){ + _defstruct = MGbunker; + } + } + } + if ( _rnd >= 40 and _rnd < 70 ) { + if (isStructureAvailable(LancerTower,player)){ + _defstruct = LancerTower; + } else { + if (isStructureAvailable(miniRocketTower,player)){ + _defstruct = miniRocketTower; + } else { + if (isStructureAvailable(MGbunker,player)){ + _defstruct = MGbunker; + } + } + } + } + } + + + } else { //=========== WALL DEFENCES ================================== + + if(pickWallDefQueueDepth > 0)//best 4 def + { + _n = min(pickWallDefQueueDepth,4); + _nDef = pickWallDefQueueDepth - 1 - _random(_n); + _defstruct = pickWallDefQueue[_nDef]; + } + + } + + return _defstruct; +} +//----------------------------------------------------------------------------- +//only droids with order != build are taken into account +function DROID closestDroidCanBuild(GROUP _group, int _x, int _y) +{ + local DROID _closestTruck,_tempTruck; + local int _closestDist,_tempDist; + + _closestTruck = NULLOBJECT; + _closestDist = 999*TILE; + + if (_group.members == 0){ return _closestTruck; } + + initIterateGroup(_group); + _tempTruck = iterateGroup(_group); + while(_tempTruck != NULLOBJECT) + { + if( _tempTruck.order != DORDER_BUILD ) + { + _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); + if(_tempDist < _closestDist) + { + _closestDist = _tempDist; + _closestTruck = _tempTruck; + } + } + _tempTruck = iterateGroup(_group); + } + return _closestTruck; +} +//----------------------------------------------------------------------------- +function DROID closestIdleDroid(GROUP _group, int _x, int _y) +{ + local DROID _closestTruck,_tempTruck; + local int _closestDist,_tempDist; + + _closestTruck = NULLOBJECT; + _closestDist = 999*TILE; + + if (_group.members == 0){ return _closestTruck; } + + initIterateGroup(_group); + _tempTruck = iterateGroup(_group); + while(_tempTruck != NULLOBJECT) + { + if( droidOrderIdle(_tempTruck) ) + { + _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); + if(_tempDist < _closestDist) + { + _closestDist = _tempDist; + _closestTruck = _tempTruck; + } + } + _tempTruck = iterateGroup(_group); + } + return _closestTruck; +} +//------------------------------------------------------------------------ +function bool buildHeavyTank( int _nWeapon, STRUCTURE _struct ) +{ + + local int _n, _pos, _nChoice; + local int _tmpl[15]; + + _n = 0; + while ( _n < 15 ){ + _tmpl[_n] = -1; + _n++ ; + } + + _n = 0; + _pos = -1; + + if ( _nWeapon == WEAPON_AP ){ + if( skCanBuildTemplate(player,_struct, tmpl0[46]) ){ _tmpl[_n] = 46; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[44]) ){ _tmpl[_n] = 44; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[21]) ){ _tmpl[_n] = 21; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[20]) ){ _tmpl[_n] = 20; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[9]) ){ _tmpl[_n] = 9; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[8]) ){ _tmpl[_n] = 8; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[3]) ){ _tmpl[_n] = 3; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[2]) ){ _tmpl[_n] = 2; _n++; } + } + if ( _nWeapon == WEAPON_AT ){ + if( skCanBuildTemplate(player,_struct, tmpl0[48]) ){ _tmpl[_n] = 48; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[47]) ){ _tmpl[_n] = 47; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[23]) ){ _tmpl[_n] = 23; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[22]) ){ _tmpl[_n] = 22; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[11]) ){ _tmpl[_n] = 11; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[10]) ){ _tmpl[_n] = 10; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[5]) ) { _tmpl[_n] = 5; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[4]) ) { _tmpl[_n] = 4; _n++; } + } + if ( _nWeapon == WEAPON_AR ){ + if( skCanBuildTemplate(player,_struct, tmpl0[43]) ){ _tmpl[_n] = 43; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[42]) ){ _tmpl[_n] = 42; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[41]) ){ _tmpl[_n] = 41; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[40]) ){ _tmpl[_n] = 40; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[36]) ){ _tmpl[_n] = 36; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[35]) ){ _tmpl[_n] = 35; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[34]) ){ _tmpl[_n] = 34; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[19]) ){ _tmpl[_n] = 19; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[18]) ){ _tmpl[_n] = 18; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[7]) ) { _tmpl[_n] = 7; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[6]) ) { _tmpl[_n] = 6; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[1]) ) { _tmpl[_n] = 1; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[0]) ) { _tmpl[_n] = 0; _n++; } + } + + //dbg("buildHeavyTank: _tmpl[0]("& _tmpl[0] &") _tmpl[1]("& _tmpl[1] &") _tmpl[2]("& _tmpl[2] &") _n("& _n &") < 0 !!! ",player); + printDebug1("buildHeavyTank: _tmpl[0]("& _tmpl[0] &") _tmpl[1]("& _tmpl[1] &") _tmpl[2]("& _tmpl[2] &") _n("& _n &") < 0 !!! "); + if ( _n == 0 ){ + printDebug1("#### buildHeavyTank: error ! _nWeapon("& _nWeapon &") _n("& _n &") < 0 !!! "); + return false; + } + + if ( _n > 2 ) { _pos = (_n - 1) - random(3); } + if ( _n == 2 ){ _pos = random(2); } + if ( _n == 1 ){ _pos = 0; } + + _nChoice = _tmpl[_pos]; + + if( skCanBuildTemplate( player , _struct , tmpl0[_nChoice]) ){ + //dbg("buildHeavyTank: build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")",player); + printDebug1("buildHeavyTank: build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")"); + buildDroid( tmpl0[_nChoice] , _struct, player, 1); + return true; + } else { + //dbg("#### buildHeavyTank: could not build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")",player); + printDebug1("#### buildHeavyTank: could not build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")"); + return false; + } + return false; +} +//------------------------------------------------------------------------ +function bool buildMediumTank( int _nWeapon, STRUCTURE _struct ) +{ + + local int _n, _pos, _nChoice; + local int _tmpl[15]; + + _n = 0; + while ( _n < 15 ){ + _tmpl[_n] = -1; + _n++; + } + + _n = 0; + _pos = -1; + + if ( _nWeapon == WEAPON_AP ){ + if( skCanBuildTemplate(player,_struct, tmpl0[53]) ){ _tmpl[_n] = 53; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[50]) ){ _tmpl[_n] = 50; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[49]) ){ _tmpl[_n] = 49; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[38]) ){ _tmpl[_n] = 38; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[27]) ){ _tmpl[_n] = 27; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[26]) ){ _tmpl[_n] = 26; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[15]) ){ _tmpl[_n] = 15; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[14]) ){ _tmpl[_n] = 14; _n++; } + } + if ( _nWeapon == WEAPON_AT ){ + if( skCanBuildTemplate(player,_struct, tmpl0[56]) ){ _tmpl[_n] = 56; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[55]) ){ _tmpl[_n] = 55; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[54]) ){ _tmpl[_n] = 54; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[39]) ){ _tmpl[_n] = 39; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[29]) ){ _tmpl[_n] = 29; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[28]) ){ _tmpl[_n] = 28; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[17]) ){ _tmpl[_n] = 17; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[16]) ){ _tmpl[_n] = 16; _n++; } + } + if ( _nWeapon == WEAPON_AR ){ + if( skCanBuildTemplate(player,_struct, tmpl0[52]) ){ _tmpl[_n] = 52; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[51]) ){ _tmpl[_n] = 51; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[37]) ){ _tmpl[_n] = 37; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[25]) ){ _tmpl[_n] = 25; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[24]) ){ _tmpl[_n] = 24; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[13]) ){ _tmpl[_n] = 13; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[12]) ){ _tmpl[_n] = 12; _n++; } + } + + //dbg("buildMediumTank: _tmpl[0]("& _tmpl[0] &") _tmpl[1]("& _tmpl[1] &") _tmpl[2]("& _tmpl[2] &") _n("& _n &") < 0 !!! ",player); + printDebug1("buildMediumTank: _tmpl[0]("& _tmpl[0] &") _tmpl[1]("& _tmpl[1] &") _tmpl[2]("& _tmpl[2] &") _n("& _n &") < 0 !!! "); + if ( _n == 0 ){ + printDebug1("#### buildMediumTank: error ! _nWeapon("& _nWeapon &") _n("& _n &") < 0 !!! "); + return false; + } + + if ( _n > 2 ) { _pos = (_n - 1) - random(3); } + if ( _n == 2 ){ _pos = random(2); } + if ( _n == 1 ){ _pos = 0; } + + _nChoice = _tmpl[_pos]; + + if( skCanBuildTemplate( player , _struct , tmpl0[_nChoice]) ){ + //dbg("buildMediumTank: build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")",player); + printDebug1("buildMediumTank: build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")"); + buildDroid( tmpl0[_nChoice] , _struct, player, 1); + return true; + } else { + printDebug1("#### buildMediumTank: could not build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")"); + return false; + } + return false; + +} +//------------------------------------------------------------------------ +function bool buildLightTank( int _nWeapon, STRUCTURE _struct ) +{ + + local int _n, _pos, _nChoice; + local int _tmpl[15]; + + _n = 0; + while ( _n < 15 ){ + _tmpl[_n] = -1; + _n++ ; + } + + _n = 0; + _pos = -1; + + if ( _nWeapon == WEAPON_AP ){ + if( skCanBuildTemplate(player,_struct, tmpl0[62]) ){ _tmpl[_n] = 62; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[61]) ){ _tmpl[_n] = 61; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[60]) ){ _tmpl[_n] = 60; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[33]) ){ _tmpl[_n] = 33; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[32]) ){ _tmpl[_n] = 32; _n++; } + } + if ( _nWeapon == WEAPON_AT ){ + if( skCanBuildTemplate(player,_struct, tmpl0[58]) ){ _tmpl[_n] = 58; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[57]) ){ _tmpl[_n] = 57; _n++; } + } + if ( _nWeapon == WEAPON_AR ){ + if( skCanBuildTemplate(player,_struct, tmpl0[59]) ){ _tmpl[_n] = 59; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[31]) ){ _tmpl[_n] = 31; _n++; } + if( skCanBuildTemplate(player,_struct, tmpl0[30]) ){ _tmpl[_n] = 30; _n++; } + } + + //dbg("buildLightTank: _tmpl[0]("& _tmpl[0] &") _tmpl[1]("& _tmpl[1] &") _tmpl[2]("& _tmpl[2] &") _n("& _n &") < 0 !!! ",player); + printDebug1("buildLightTank: _tmpl[0]("& _tmpl[0] &") _tmpl[1]("& _tmpl[1] &") _tmpl[2]("& _tmpl[2] &") _n("& _n &") !!! "); + if ( _n == 0 ){ + printDebug1("#### buildLightTank: error ! _nWeapon("& _nWeapon &") _n("& _n &") < 0 !!! "); + return false; + } + + if ( _n > 2 ) { _pos = (_n - 1) - random(3); } + if ( _n == 2 ){ _pos = random(2); } + if ( _n == 1 ){ _pos = 0; } + + _nChoice = _tmpl[_pos]; + + if( skCanBuildTemplate( player , _struct , tmpl0[_nChoice]) ){ + //dbg("buildLightTank: build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")",player); + printDebug1("buildLightTank: build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")"); + buildDroid( tmpl0[_nChoice] , _struct, player, 1); + return true; + } else { + printDebug1("#### buildLightTank: could not build template _nWeapon("& _nWeapon &") _nChoice("& _nChoice &") _pos("& _pos &") _n("& _n &")"); + return false; + } + return false; + +} +//--------------------------------------------------------------------------- +function int checkBestBody(int _nBody, int _nWeapon, STRUCTURE _struct ) +{ + local int _i; + + _i = 0; + if ( _nBody == BODY_HEAVY ){ + if ( _nWeapon == WEAPON_AP ){ + if( skCanBuildTemplate(player,_struct, tmpl0[46]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[45]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[44]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[21]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[20]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[9]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[8]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[3]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[2]) ){ _i++; } + } + if ( _nWeapon == WEAPON_AR ){ + if( skCanBuildTemplate(player,_struct, tmpl0[43]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[42]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[41]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[40]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[36]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[35]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[34]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[19]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[18]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[7]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[6]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[1]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[0]) ){ _i++; } + } + if ( _nWeapon == WEAPON_AT ){ + if( skCanBuildTemplate(player,_struct, tmpl0[48]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[47]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[23]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[22]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[11]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[10]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[5]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[4]) ){ _i++; } + } + } + if ( _nBody == BODY_MEDIUM ){ + if ( _nWeapon == WEAPON_AP ){ + if( skCanBuildTemplate(player,_struct, tmpl0[53]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[50]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[49]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[38]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[27]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[26]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[15]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[14]) ){ _i++; } + } + if ( _nWeapon == WEAPON_AR ){ + if( skCanBuildTemplate(player,_struct, tmpl0[52]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[51]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[37]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[25]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[24]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[13]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[12]) ){ _i++; } + } + if ( _nWeapon == WEAPON_AT ){ + if( skCanBuildTemplate(player,_struct, tmpl0[56]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[55]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[54]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[39]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[29]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[28]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[17]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[16]) ){ _i++; } + } + } + if ( _nBody == BODY_LIGHT ){ + if ( _nWeapon == WEAPON_AP ){ + if( skCanBuildTemplate(player,_struct, tmpl0[62]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[61]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[60]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[33]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[32]) ){ _i++; } + } + if ( _nWeapon == WEAPON_AR ){ + if( skCanBuildTemplate(player,_struct, tmpl0[59]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[31]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[30]) ){ _i++; } + } + if ( _nWeapon == WEAPON_AT ){ + if( skCanBuildTemplate(player,_struct, tmpl0[58]) ){ _i++; } + if( skCanBuildTemplate(player,_struct, tmpl0[57]) ){ _i++; } + } + } + printDebug1("checkBestBody: _i("& _i &") _nBody("& _nBody &") _nWeapon("& _nWeapon &")"); + return _i; +} + diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player0.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/ai.vlo similarity index 96% rename from data/mods/multiplay/dydo-ai/multiplay/skirmish/player0.vlo rename to data/mods/multiplay/dydo-ai/multiplay/skirmish/ai.vlo index 8dc5497a6..b1a1a8f43 100644 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player0.vlo +++ b/data/mods/multiplay/dydo-ai/multiplay/skirmish/ai.vlo @@ -3,12 +3,12 @@ // Generic vlo for each computer player - skirmish games ///////////////////////////////////////////////////////////////////// -script "player0.slo" +script "ai.slo" run { player INT 0 -// Version 2.0.01 +// Version 2.1 // the version of the .vlo files is not related to the one of the .slo files // // @@ -121,7 +121,10 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players RippleRockets WEAPON "Rocket-IDF" ScourgeMissle WEAPON "Missile-A-T" SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" + ArchangelMissile WEAPON "Missile-HvyArt" + FlashLight WEAPON "Laser3BEAMMk1" + PulseLaser WEAPON "Laser2PULSEMk1" + HeavyLaser WEAPON "HeavyLaser" HoverProp PROPULSION "hover01" @@ -179,7 +182,7 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" + HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" //Hurricane AA Site CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" @@ -270,16 +273,16 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players structs[3] STRUCTURESTAT "A0VTolFactory1" // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 + structsLimits[0][0] INT 3 //FACT + structsLimits[0][1] INT 4 //RES + structsLimits[0][2] INT 3 //CYB + structsLimits[0][3] INT 2 //VTOL // General 2 VTOL structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 + structsLimits[1][1] INT 2 structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 + structsLimits[1][3] INT 4 // General 3 Turtle structsLimits[2][0] INT 2 @@ -293,7 +296,7 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players structsLimits[3][2] INT 5 structsLimits[3][3] INT 1 - numDefStructs INT 13 + numDefStructs INT 11 defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker @@ -301,12 +304,10 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" + defStructs[7] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] + defStructs[8] STRUCTURESTAT "Emplacement-HvyATrocket" + defStructs[9] STRUCTURESTAT "Emplacement-PulseLaser" + defStructs[10] STRUCTURESTAT "Emplacement-Rail2" // wall structs - NOT BUILT YET @@ -363,24 +364,33 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players // cyborg templates numSuperCyb INT 17 - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) + //Anti tank + superCyb[0] TEMPLATE "Cyb-Hvy-A-T" //[1][36]Super Scourge Cyborg + superCyb[3] TEMPLATE "Cyb-Hvy-TK" //[1][0]Super Tank-Killer Cyborg + superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//[1][21]Scourge + superCyb[9] TEMPLATE "CyborgRkt01Ground"//[0][24]Lancer + + //All Rounder + superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner" //[1][2] Super Rail-Gunner + superCyb[4] TEMPLATE "Cyb-Hvy-HPV" //[0][51] Super HPV Cyborg + superCyb[5] TEMPLATE "Cyb-Hvy-Acannon" //[0][50] Super Auto-Cannon Cyborg + superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon" //[0][49] Super Heavy-Gunner + + //Anti Personnel + //Flamers-Lasers + superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr" //[1][1]Super Pulse Laser Cyborg + superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD" //[0][59] Flashlight Gunner + superCyb[12] TEMPLATE "Cyb-Thermite" //Thermite Flamer + superCyb[15] TEMPLATE "CyborgFlamer01Grd" //flamer + //Guns + superCyb[11] TEMPLATE "CyborgRotMgGround" //[0][25] Assault Gunner + superCyb[14] TEMPLATE "CyborgCannon01Grd" //heavy Gunner + superCyb[16] TEMPLATE "CyborgChain01Ground" //Machinegunner + + //Kinetic + superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //[0][58]Needle Gunner + superCyb[13] TEMPLATE "Cyb-Gren" //Grenadier + ///////////////////////////////////////////////////////////////////// // VTOL TEMPLATES @@ -552,22 +562,22 @@ AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site + researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} + researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower + researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //Hardened MG Bullets + researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //Reinforced Base Structure Materials + researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //Cyborg Composite Alloys + researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //Automated Manufacturing {factMod-powMod} + researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //HEAT Cannon Shells + researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //Fuel Injection Engine + researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//Improved Hardcrete + researchCheap[0][12] RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA site + researchCheap[0][13] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} + researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint + researchCheap[0][15] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} + researchCheap[0][16] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} + researchCheap[0][17] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} + researchCheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player0.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player0.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player0.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player1.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player1.vlo deleted file mode 100644 index 2bea81d88..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player1.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player1.slo" -run -{ - player INT 1 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player2.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player2.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player2.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player2.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player2.vlo deleted file mode 100644 index b65f6f3bc..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player2.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player2.slo" -run -{ - player INT 2 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player3.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player3.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player3.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player3.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player3.vlo deleted file mode 100644 index 5dd268df4..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player3.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player3.slo" -run -{ - player INT 3 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player4.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player4.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player4.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player4.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player4.vlo deleted file mode 100644 index 8e5f60f9e..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player4.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player4.slo" -run -{ - player INT 4 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player5.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player5.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player5.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player5.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player5.vlo deleted file mode 100644 index 89399d503..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player5.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player5.slo" -run -{ - player INT 5 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player6.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player6.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player6.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player6.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player6.vlo deleted file mode 100644 index 50fc97fb0..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player6.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player6.slo" -run -{ - player INT 6 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player7.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player7.slo deleted file mode 100644 index 6ac970039..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player7.slo +++ /dev/null @@ -1,11548 +0,0 @@ -/* -DyDo-AI Rel 2.0.5 -Mod Developer: "DylanDog" on http://forums.wz2100.net/ -AI webpage: http://www.obooma.net/dydo/ - -DyDo-AI is for skirmish & multiplayer games only. -DyDo-AI 2.x can be played on WZ 2.3.x only - -################################################################# -For changelog, bug reporting and downloads see DyDoAI homepage: -http://www.obooma.net/dydo/ -################################################################# - - -________________ CHANGELOG ___________________________________ - -{fix} - 5 fixed an hack to build cyborg templates if none is found. - -Use of numTemplatesInProduction(TEMPLATE, PLAYER) - -*/ -#define DYDOBP_RELEASE "DyDo-AI ver 2.0.5" - -#define GAME_TIME_IN_SECS (gameTime / 10) -#define GAME_TIME_IN_MIN (gameTime / 10 / 60) -#define TIME_MINUTE 600 -#define MAX_WHILE_LOOPS 99 -#define BIG_MAP 120 -#define PLAYER_NUMBER 0 -#define TEAM_NUMBER 1 - -//gametype -#define GT_2PLAYERS_1HP 0 -#define GT_4PLAYERS_1HP_2T 1 -#define GT_4PLAYERS_1HP_34T 2 -#define GT_8PLAYERS_1HP_23T 3 -#define GT_8PLAYERS_1HP_4567T 4 -#define GT_4PLAYERS_2HP_2T 5 -#define GT_4PLAYERS_2HP_34T 6 -#define GT_8PLAYERS_2HP_23T 7 -#define GT_8PLAYERS_2HP_4567T 8 -#define GT_8PLAYERS_3HP_23T 9 -#define GT_STANDARD 10 - -//stats -#define OC_WEAPON_COST 0 -#define OC_RESLABS 1 -#define OC_PHYTON 2 -#define OC_MANTIS 3 -#define OC_TIGER 4 -#define OC_CYBORGS 5 -#define OC_TANKS 6 -#define OC_VTOLS 7 -#define OC_DERRICKS 8 -#define OC_DEF_STRUCT 9 -#define OC_CYB_POWER 10 -#define OC_TK_POWER 11 -#define OC_VTOL_POWER 12 -#define OC_CYB_HP 13 -#define OC_TK_HP 14 -#define OC_VTOL_HP 15 - -#define WUI_TOTUNITS 0 -#define WUI_POWER 1 -#define WUI_HP 2 - -//used with AIPersonality -#define AI_STANDARD 1 -#define AI_VTOL 2 -#define AI_TURTLE 3 -#define AI_CYBORG 4 - - -//used with minDefDroids[][x] -#define MINDEF_TANKS 0 -#define MINDEF_CYBORGS 1 -#define MINDEF_VTOLS 2 - -#define EVENT_CHECK_NUMBER 23 - -#define NUM_AI_PERSONALITIES 4 -#define MAX_PLAYERS 8 -#define TILE 128 -#define MAX_DROIDS 150 - -#define STR_TANK_FACTORY 0 -#define STR_RESLAB 1 -#define STR_CYB_FACTORY 2 -#define STR_VTOL_FACTORY 3 - -#define MAX_DEFSTR_DERRICKS 3 -#define MAX_DEFSTR_SPOT 3 -#define MAX_REPAIRFAC 5 - -#define LOW_POWER_MAP 1 -#define NORMAL_POWER_MAP 2 -#define HIGH_POWER_MAP 3 - -//harvTrucks+buildTrucks+defTrucks -#define MIN_BUILDING_TANKS 6 -#define MIN_BUILDING_TANKS_VTOL 4 -#define MIN_BUILDING_TANKS_INGAME 3 - -#define TIME_MOVE_TOGATEWAYS 70 -#define THREAT_RANGE_TILES 8 -//used for repairing and building derricks -#define THREAT_RANGE_TILES_SHORT 8 -#define THREAT_RANGE_TILES_LONG 12 - -#define MIN_CYB_CONSTENG 2 -#define MIN_CYB_CONSTENG_CYB 4 -#define MIN_CYB_CONSTENG_VTOL 4 -#define BUILDDEF_GRP 0 -#define CYBENG_GRP 1 -#define BUILD_GRP 2 -#define HARVEST_GRP 3 - -#define STRUCT_REPAIR_DAMAGE 25 - -#define RED_ALERT 3 -#define YELLOW_ALERT 2 -#define GREEN_ALERT 1 -#define ALERT_INACTIVE 0 - -//used to compare combat strenghts -#define COMBAT_RANGE (TILE * 12) - -//repairing untis -#define MAX_REPAIR_UNITS 2 -#define MIN_HEALT_REPAIR_BASE 80 -#define MIN_HEALT_SWITCH_TO_TANK 95 -#define MIN_HEALT_SWITCH_TO_CYBORG 95 -#define DAMAGE_REPAIR_LEVEL 50 -#define DAMAGE_REPAIR_LEVEL_LOW 20 -#define VTOL_DAMAGE_REPAIR_LEVEL 75 -#define STRUCT_REPAIR_DAMAGE 25 - -//tanks -#define MIN_ATTACKING_TANKS 7 -#define MAX_ATTACK_TANKS_ADD 10 -#define MIN_DEFUNIT_DEFEND 2 -#define MIN_SURVIVOR_TANKS 3 -#define MAX_WEAK_TANK 15 -#define MIN_POD_TANK 10 - -#define MIN_HELPING_UNITS 5 -//attack enemy and defend with defGrp only if we have at least these number of units -#define MIN_DEFUNIT_ATTACK 5 - -//cyborgs -#define MIN_DEFCYB_DEFEND 2 -#define MIN_ATT_CYBORGS 7 -#define MAX_ATTACK_CYBORG_ADD 10 -#define MIN_SURVIVOR_CYBORGS 3 - -//VTOLs - code cleaning stopped here -#define MAX_VTOLS 15 -#define MAX_VTOLS_PERS2 25 -//attack only if this number of VTOLs has been reached -#define MIN_VTOLS_ATTACK_DERRICK 2 -#define MIN_VTOLS_ATTACK_BASE 7 -//Personality 2 aims for a quick buoild of these VTOLs -#define MIN_VTOLS 3 -#define MIN_VTOLS_PERS2 5 -#define AA_THREAT_RANGE (TILE * 18) - -//defend -#define MAX_DEFEND_RANGETILES 45 -#define MIN_BASE_DEF_STRUCTS 12 -#define MAX_BASE_DEF_STRUCTS 20 - -//AA -#define RANGE_BUILD_AADEF 7*TILE -#define MAX_AADEF_INRANGE 3 -#define MIN_AA_INBASERANGE 7 -//add to nRangeBase -#define RANGETILES_DEFSTR_AROUNDBASE 10 - -#define MAX_TYPE_OF_TANKS 4 -//if after TIME_HARVESTING_PHASE units are lower then this we cannot perfom building new structs, researches, upgrades -#define MIN_TOT_UNITS 8 -//build derrick defences only after this time -#define VALID_TIME_DERRICK_DEF 3600 -//change the units to add to build up the attacking group every this interval time -#define TIME_CHANGE_TANKSTOADD 3000 - -//build more then 2 repair centres aonly after this time -#define VALID_TIME_REPAIRFAC 4200 -//build 4-5 Research and Cyborg Factory after this time -#define VALID_TIME_EXTRABUILD 4800 -//build oilDef only after this time -#define VALID_TIME_CYBATTACK 6000 -//after 4 min all oil should be got -#define TIME_HARVESTING_PHASE 3000 -//after this time alert is set to DEACTIVATED anyway -#define TIME_TO_RESET_ALERT 100 -//build gateway def only after this time -#define VALID_TIME_GATEWAYDEF 3600 -//start researching VTOL stuff only after this time -#define TIME_START_VTOLRESEARCH 3000 -//force the building of a defence every x min -#define TIME_TOFORCE_BUILDDEF 1200 -//power -#define VERY_LOW_POWER 0 -#define LOW_POWER 1 -#define HIGH_POWER 2 -#define TIME_SWITCH_WORKSTRUCT 600 - -#define BEST_VTOL_TEMPLATES 3 - -public INT player; // player for this instance. -//public BOOL LIFE; // feature switch -public INT numMaxDerricks; // rate of exploration - -// structures -public INT baseX,baseY,minx,miny,maxx,maxy,defSpotX,defSpotY; -public INT numStructs,numAA,numIncendrys, numFortressDef,numWallWeaps,numTmpls, numSuperCyb, numSense, numGenAA; -public STRUCTURESTAT wall,incendrys[8],structs[51],defStructs[20],structChoice[30],fortressDef[4],wallWeaps[20],vtolDefStruct[10],sense[3],vtolGenStruct[10]; -public STRUCTURESTAT sensorTower,resLab,powGen,playerHQ,demAnomallyFix,lassat,factory,derrick,cybFactory,vtolPad,vtolFactory,repairFacility, uplinkCenter,CBSense; -public STRUCTURESTAT HMGhardPoint,MGbunker,miniRocketTower,LancerTower, powModule,facModule,resModule; -public STRUCTURESTAT defMortar,defBombard, defPepperpot,defRippleRockets; -public RESEARCHSTAT WhirlwindAASite,CycloneAASite,HurricaneAASite; -public RESEARCHSTAT AASite,VTOLPadRes,lancerATweap; -public int nStat,aStat[20][8],structsLimits[4][4],numDefStructs,minDefDroids[4][3]; - -//keep even if not used -public RESEARCHSTAT nexusDefence, powerAddOn; - -public STRUCTURESTAT pickStrQueue[15]; -public INT pickStrQueueDepth; -public STRUCTURESTAT pickDefQueue[50]; -public INT pickDefQueueDepth; -public STRUCTURESTAT pickWallDefQueue[60]; -public INT pickWallDefQueueDepth; -public STRUCTURESTAT pickFortQueue[4]; -public INT pickFortQueueDepth; - -private STRUCTURESTAT pickStructureQueue[80]; -private INT pickStructureQueueDepth; - -public BOOL showAIPersonality; -public int AIPersonality,AIstrength; -private int nAI_Pers; - -// unit templates -public TEMPLATE tmpl0[63]; -public TEMPLATE tmpl1[5]; -public TEMPLATE superCyb[20]; -public TEMPLATE constructor,constructor2,VTOLconstr,cybMech,cybcondroid,repairTank; - -// special - template recognizer -public PROPULSION cyborgPropulsion; - -//build -private INT buildX,buildY; -public FEATURESTAT oilRes; - - -// GROUPS -public GROUP vtolHunterGr, vtolDefendGr ,vtolAttGr, tankGroup, buildGroup, harvesterGroup, toBeRepairedTankGroup, repairGroup, toBeRepairedCyborgGroup, cyborgDefGroup, cyborgAttGroup; -private GROUP xGroup; - -// generic -private STRUCTURE structure,structure2,structure3; -private DROID droid,droid2; -private FEATURE feature,feature2; -private BASEOBJ baseobj; -private INT count,count1,count2,count3,count4; -private BOOL boolResult,boolResult2,boolResult3; - -private INT aPlayers[8][8]; - -public BASEOBJ lassatTarget,myBaseObject,enemyBaseObject; - -//Shielding systems (2:45 hours after game begins) (KICK) -public RESEARCHSTAT SHIELDS; - -// +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -///////////////////////////////////////////// - -//// DEBUG-MODE -public BOOL EnableSliders;// DylanDog - -//// T1 cyborgs problem -public RESEARCHSTAT CyborgLegs; - -private INT oilX,oilY; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - VARIABLES DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -public WEAPON MGun, TwinMGun , HMGun, TwinAGun, AGun, Flamer ,PlasmFlamer ,Inferno; -public WEAPON NeedleGun , RailGun, GaussCannon ,PlasmaCannon ,EMPCannon ,LCannon; -public WEAPON MCannon ,ACannon ,HCannon ,TACannon ,HVCannon ,RocketBB, RocketPod; -public WEAPON RocketMRL , Lancer, RcketBB ,TankKiller ,RippleRockets ,ScourgeMissle; -public WEAPON SeraphMissile ,ArchangelMissile; -public WEAPON cybGren, cybLancer, cybScourge, cybSuperHPV, cybSuperScourge, cybTankKiller; -public WEAPON NEXUS_WEAPON1,NEXUS_WEAPON2; -public RESEARCHSTAT research[10][62],general2[10][62],general3[10][62],general4[10][62],researchCheap[1][21],general2Cheap[1][21],general3Cheap[1][21],general4Cheap[1][21]; -public RESEARCHSTAT mediumCannon,heavyCannon,trackPropulsion,hoverPropulsion; -public RESEARCHSTAT powUpgrades0,powUpgrades1,powUpgrades2,powUpgrades3,powUpgrades4,powUpgrades5,powUpgrades6; -public RESEARCHSTAT cobraBody, phytonBody, scorpionBody, mantisBody, leopardBody, pantherBody, tigerBody, retaliationBody, retributionBody, vengeanceBody, wyvernBody, dragonBody; -public RESEARCHSTAT resCBSense,mortarPit, bombardPit, pepperpotPit, rippleRockets; - -public STRUCTURESTAT baseStructs[10]; - -public int numRes[10],numResGen2[10],numResGen3[10],numResGen4[10],numCheapRes[1],numCheapResGen2[1],numCheapResGen3[1],numCheapResGen4[1]; - -// ========================= PRIVATE ===================================== -private GROUP buildDefGroup,cyborgConstructGroup,tankDefGroup,helpGroup; -private BASEOBJ attackCybObj,attackTankObj; -private BASEOBJ objTargetHelpTeam,objTargetCybDefGRP,objTargetTankDefGRP; -private FEATURE _oilRes; -private DROID _droid, _droid1, _droid2,_idleTruck,_notIdleTruck,mydroid; -private STRUCTURE _derrick,_struct; - -private bool bPowerNormalized,bAttackedHumanDerrick,debugCenterView, bAttackedByMortars; -private bool bAttackedByLongRangeWeap,sentToGateway,gatewayFound,isBackinBase; -private bool alertIsOn; -private bool bCybAttIsOn,lCybSentToGatheringPoint,bCybAlreadyGathered; -private bool bOilResLeft,lStopVTOLProduction,lStopVTOLFactBuilding,lStopResLabUpgrade; -private bool lMinBaseStructBuilt,lStopBuildingStructures,lStopBuildRepFacility,lStopCybEngProd; -private bool lStopBuildTankProd,lStopTankProduction, lStopCybProduction, lStopResearch; -private bool lStopCheapResearch, lStopFactUpgrade, lStopBuildDefDerricks,lStopBuildDefGateway; -private bool lStopBuildDef,lStopFactUpgrade2,bVTOLTargetIsDerrick,_bVTOLTarget; -private bool _mustBeHuman,lTankSentToGatheringPoint, bTankAttIsOn, bTankAlreadyGathered; -private bool bForceResPowUp,bFinalAttack_1vs1,bAttackTeamAttacked; -private bool _bNoTrucks,bNeedDerrick,bDroidSelected,bAttackedByVTOL; - - -private int oilResTargetId[11], oilResTargetX[11], oilResTargetY[11]; -private int aGatewayPosX[4],aGatewayPosY[4],nTotGateways,lastTimeRepairBuilt; -private int _pos,numDefStrAtGateway,numGatewaysFound,defTruckSentTime,lastBuildDefX; -private int lastBuildDefY,nRealGatewaysFound,nMidX,nMidY,nTotOilInAtStart; -private int nLastTimeBuiltRepFac,lastTruckBuilt,lastCybEngBuilt,lastDisplayAI; -private int lastDisplayAIcheck,nDefendRange,gatewaysRangeTiles,numBaseStructs; -private int nBaseRange,aaRange,gatherDefCybX,gatherDefCybY,gatherDefTankX,gatherDefTankY; -private int lastResIndex, nAttackingUnitsToAdd, nCybAttUnitsToAdd; -private int nTime,nAttackTime,nFrWeapStructs,nFrWeapDroids,nFrWeapDrStr; -private int nTanksDefGrp,nMapPower,nEnWeapStructs,nEnWeapDroids,nEnWeapDrStr; -private int tFinishOilHack,alertX,alertY,alertTime,alertLevel,nX,nY; -private int tLastPowerGen,tChangeTimeTankToAdd,nHelpX,nHelpY,tLastHelp,tTotalAttack,tLastTankAttack,tLastCyborgAttack; -private int tTanksSentToGathering,nTankGatheringX,nTankGatheringY,tankAttackX,tankAttackY,targetPlayerTank,targetPlayerVTOL; - -private int tCybSentToGathering,tCybAttackAction,tHelpAction,tTankAttackAction,nCybGatheringX,nCybGatheringY,cybAlertX,cybAlertY,cybAttackX,cybAttackY,targetPlayerCyb; -private int tEveryMin, tEvery3Min; -private int playerLeft,nVTOLFactories,nWorkingVTOLFac,nTotTanks,nTotCyborgs,nMyDerricks,nPower,nFactories,nResLabs,nCybFact,nWorkingFact,nWorkingCybFac; -private int nKineticX,nKineticY,nWorkingLab,nTotDefences,nFreeOilRes,nTotBaseDefences; -private int _targetPlayer,nLastDefSpotUpdate,_nOilRes, _t; - -private int nTotEnemyDroids,nCybMechanic,nStructToBeBuilt,nAllyBeingHelped,nPODMRLTank, nWeakTank,nTotCyborgBuilt,nTotTankBuilt; -private int tLastCybMech,tLastFinalAttack,nFinalAttacks,nDamageLevelRepair, nProdSelect, tLastPowerSwitch,tLastbuildBaseDef,nEnemyPlayers,nLastEnemyPlayer,nTeam,nHumanPlayers,nPlayersInGame,nDerricksAtStart; -private int tDefVtolAction,tDefTankAction,tDefCybAction,tLastResearch; - -private int num_aDroid,aDroid_Id[50],aDroid_X[50],aDroid_Y[50],aDroid_counter[50]; -private int nAttHumanPlayer,nAttAIPlayer; -//VTOL - -public TEMPLATE vtols[18]; -public int tLastAAbuilt,tLastVTOLFactBuild,numVtolTemplates; -private BASEOBJ defTargetVTOL,attTargetVTOL; - -private int aPower[3],nAAPos,nAIcheck,tAIbrain,eventCheckReport[EVENT_CHECK_NUMBER],eventCheckTime[EVENT_CHECK_NUMBER],eventCheckTrigger[EVENT_CHECK_NUMBER],eventCheckCounter[EVENT_CHECK_NUMBER]; - -public PROPULSION Half_Track,TrackedProp,HoverProp; -public BODY Viper; - -//communication -private int _sender,sender, x, y, tBeaconTimeout, beaconX[8], beaconY[8], tBeacon[8]; -private int lastHelpPlayer, _fromPlayer, _choice; -private string message,_message,_cstr; -private bool _bBlipMessage,_bToHuman; - -private int tBeaconSent; - -private bool _DEBUG,_DEBUG1,_dbg, bRunning; - -//=================================================================== -// USED FOR PRODUCTION ONLY - -private int nProd1, nProd2, nProd3, nProd4, nProd5; -private float fProd1, fProd2, fProd3, fProd4, fProd5; -private int tProd1, tProd2, tProd3, tProd4, tProd5; -private bool bProd1, bProd2, bProd3, bProd4, bProd5; -private string sProd1, sProd2, sProd3, sProd4, sProd5; - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ TRIGGERS *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//trigger finishStructsTr (every,300); -#region triggers - -trigger droidBuiltTr (CALL_NEWDROID,player, ref droid,ref structure); -trigger AIattackedTr (CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject); -trigger vtolDefendTr (CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject); -trigger multiMsgTr (CALL_AI_MSG, player, ref sender, ref message); -trigger beaconTr (CALL_BEACON, player, ref sender, ref x, ref y, ref message); -trigger consoleTr (CALL_CONSOLE, ref sender, ref message); -trigger reassignPlayersTr (CALL_PLAYERLEFT,ref playerLeft); - -trigger defFromLongRangeWeapTr(wait,1); -trigger difficultyModifierTr (wait,3); -trigger shutDownAITr (every,4); - -trigger AIcheckTr (every,10); -trigger buildPowerGeneratorsTr(every,10); -trigger buildRepFirstTr (every,10); -trigger harvesterOperateTr (every,10); -trigger AIbrainTr (every,10); - -trigger unitRepairSwitchTr (every,20); -trigger upgradeStructuresTr (every,20); -trigger manageIdleTrucksTr (every,20); - -trigger reSortUnitsTr (every,30); -trigger TankAttackTr (every,30); -trigger CyborgAttackTr (every,30); -trigger defendDerrickTr (every,30); -trigger SelectCyborgTemplateTr(every,30); -trigger SelectTankTemplateTr (every,30); -trigger manageDefCyborgsTr (every,30); -trigger manageDefTankTr (every,30); -trigger manageHelpTeamTr (every,30); -trigger sendBackDamagedUnitsTr(every,30); -trigger manageRepairTeamTr (every,30); -trigger defendGatewaysPointTr (every,30); -trigger doResearchTr (every,30); -trigger buildBaseTr (every,30); -trigger defendBaseTr (every,30); -trigger buildRepFacSuppAttackTr (every,30); -trigger vtolStructsTr (every,30); -trigger buildVtolsTr (every,30); -trigger VTOLmicroManagerTr (every,30); -trigger threatCheckTr (every,30); - -trigger manageDefVTOLTr (every,40); - -trigger unitAssignationCheckTr(every,50); -trigger truckGroupSliderTr (every,50); -trigger buildAAdefTr (every,50); -trigger evDebugTr (every,100); -trigger activateAttackTr (every,100); -trigger evPrintDebugTr (every,100); -trigger vtolEnablerTr (every,200); -trigger updateBaseDetailsTr (every,200); -trigger showPlayerInfoTr (every,200); -trigger useLassatTr (every,3000); -trigger showAImessageTr (every,6000); - -trigger VTOLhunterTr (every,15); - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - EVENTS DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -//event 0 -event evDebug; - -//main event 1-2 -event AIbrain; -event AIcheck; - -//harvesting - events 3-4 -event truckGroupSlider; -event harvesterOperate; - - -//building ebvents 5-9 -event upgradeStructures; -event buildBase; -event buildPowerGenerators; -event buildRepFirst; -event buildRepFacSuppAttack; - - -//Research event 10 -event doResearch; - -//defense events 11-13 -event defendBase; -event defendDerrick; -event defendGatewaysPoint; - -//event 14-16 -event manageDefTank; -event manageDefCyborgs; -event manageDefVTOL; - -//ebent 17 -event AIattacked; - -//attack event 18-20 -event activateAttack; -event CyborgAttack; -event TankAttack; - -//VTOL event 21-23-24 -event vtolEnabler; -event vtolStructs; -event vtolDefend; -event buildAAdef; - -//repair event 25-27 -event manageRepairTeam; -event unitRepairSwitch; -event sendBackDamagedUnits; - -//idleTrucks event 28 -event manageIdleTrucks; - -//Units production 29-31 -event SelectCyborgTemplate; -event SelectTankTemplate; -event buildVtols; - - -//Group Management 32-34 -event droidBuilt; -event unitAssignationCheck; -event reSortUnits; - -//uncategorized 35-40 -event initialisedEvent; -event useLassat; -event difficultyModifier; -event updateBaseDetails; -event showPlayerInfo; -event showAImessage; - -//chat 41-45 -event multiMsgEv; -event beaconEv; -event manageHelpTeam; -event shutDownAI; -event defFromLongRangeWeap; - -//debug 46-48 -event evPrintDebug; -event VTOLmicroManager; -event reassignPlayers; - -//event 49 -event threatCheck; -event VTOLhunter; - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ DylanDog - FUNCTION DECLARATION *+*+*+*+*+*+*++*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - -function DROID getADroid(GROUP _theGRP); -function bool droidOrderIdle(DROID _droid); -function DROID pickDefTruck(bool _idleOne);//true=idle truck false=any truck -function void displayMsg(STRING _message); -function FEATURE closestOilRes(DROID _droid, int _x, int _y); -function STRUCTURE closestDerrickToDefend(); -function int getNumDerricks(int _player); -//reset oilResTargetId, oilResTargetX, oilResTargetY -function void checkDerrickIsBuilt(int _player); -//return a free position on the array of oilResTargetId & Co. -function int getOilResTargetFree(); -function void debugCentreView(DROID _droid); -//gateways and defences -function void buildGatewayDef(DROID _defTruck,int _pos); -function bool isDefStrComplete(); -function bool helpBuild(int _group); -function bool repairDefStructs(int _group); -function bool repairStructs(int _group); -function bool CE_helpBuildGateways(); -function DROID pickCybEng(bool _idleOne);//true=idle truck false=any truck -function int updateGateways(); -function void initAssignUnitToGrp(); - -//base stats -function void updateBaseRange(); -function void updateBaseCoord(); - -//structure -function int numStructsByType(STRUCTURESTAT _structure, int _player); - -//research -function int do_Research(STRUCTURE _resFac, int _lastResIndex); -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex); -function int find_Research(int _searchStart, int _techTree, int whichArray); - -//repair -function DROID unitToBeRepaired(GROUP _group); -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y); -function DROID idleRepairDroid(int _x, int _y); -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks); -function void attackedByDroid(DROID _droid); -//used when struct attacks my base -function void attackedByStruct(STRUCTURE _struct); -function void sendIdleBackToTheBase(int _group); - -//brain -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck); -function int getTotDerricksMap(); -function bool bAnyOilResLeft(); -function int numRemainingOilRes(); - -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman,int _targetPlayer); -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2,int _nWhichCooord, int _nDist); -function BASEOBJ findEnemyOBJ(bool _mustBeHuman,int _targetPlayer); -function int getRandomEnemyPlayer(bool _mustBeHuman); -function int getNearestEnemyPlayer(bool _humanPlayer); -function int getEnemy_baseCoord( int _player, STRING sCoord ); -function bool friendlyPlayer(int _playerToCheck); - -//VTOLS -function void buildRearmPads(); -function void vtolFactoryBuildVtol(STRUCTURE _factory); - -//others -function void deactivateTankAttack(); -function void deactivateCybAttack(); -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range); -function BASEOBJ objDroidTargetInRange(int _xCoord,int _yCoord,int _Range, bool bIsVTOL); -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y); -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y); -function void harvestNearOilRes(); -function void displayErrMsg(STRING _message); - -//AI personality -function void SetDyDoPersonality(int nPersonality, int _player); - -function bool aiResponsibleForPlayer(int _player); -function int _random(int x); -function void assignDroidToGrp(DROID droid); -function void manageVeryLowPower(); -function void manageVeryLowPower2(); -function void manageVeryLowPower3(); -function void manageVeryLowPower4(); -function STRUCTURE getVTOLstructTarget(); -function int numEnemyAAInRange(int _x, int _y, int _range); -function bool canHelpAlly(int _sender); -function bool bHelpingAnyAlly(); -function void helpAlly(int _ally); -function void deactivateHelp(); -//Communication -function void processCommand(STRING _message, int _sender, bool _bBlipMessage); -function void notifyAll(STRING _cstr); -function void sendMsgToAllAllies(STRING _message); -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman); -function void notifyStatus(int _choice, int _player); -function bool haveBeacon(int _player); -function bool haveAnyBeacon(); -function bool beaconTimeout(int _player); -function void updateBeacons(); -function void updatePlayersStats(); -function int getDroidsInfo(int _player, int _choice); -function int getTeamNumber(int _player); -function BASEOBJ getTargetObj(); -function float getPowerIndex(int _player); -function int gameType(); -function int getWeaponUnitsInfo( int _player, int _choice); -function int getTargetEnemy(bool _dbg); -function bool bHasHumanEnemies(int _player); -function void displayStats(int _choice); - -function bool coordChanged(DROID _droid); -function bool hasCoordStored(DROID _droid); -function int getFreePosDroid(); -function void updateDroidCoord(DROID _droid); -function void storeDroidCoord(DROID _droid); -function void checkIfDroidIsStuck(GROUP _group); -function void cleanDroidPos(int _droidId); -function void cleanDroidCoordArray(); -function void stopDroidHarvesting(); -function bool incrementDroidCounter(int droid_id); -function bool isPlayerStillLive(int _player); -function bool buildDefStruct(DROID _droid, int _x, int _y ); -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice); -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles); -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range); -function void printDebug(STRING _message); -function void printDebug1( STRING _message); -function bool createAIalliance(int _player1, int _player2); -function STRUCTURESTAT getDefStruct(); -function DROID closestIdleDroid(GROUP _group, int _x, int _y); -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget); -function void updateDefendRange(); -function void shutDownThisAI(); -function void activateAI(); - - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+ MAIN SCRIPT *+*+*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - -// HouseKeeping - -event initialisedEvent(CALL_GAMEINIT) -{ - - - lassatTarget = NULLOBJECT; defSpotY = 0 ; defSpotX = 0 ; maxy = 0 ; maxx = 0; - miny = 0 ; minx = 0 ; baseY = 0 ; baseX = 0 ; - - //DEBUGMESSAGE - dbgMsgOn(player, false); - debugCenterView = false; - _DEBUG = true;//print off debug messages every 5 min - _DEBUG1 = true;//print off debug messages - bRunning = false; //true if AI controls this player - - count =0; - while (count < 4){ - aGatewayPosX[count] = -1; - aGatewayPosY[count] = -1; - count++; - } - nAI_Pers = 0; - nTotCyborgBuilt = 0; - nTotTankBuilt = 0; - tFinishOilHack = gameTime; - nAIcheck = 0; - tAIbrain = 0; - defTruckSentTime= -1; - sentToGateway = false; - gatewayFound = false; - isBackinBase = false; - bNeedDerrick = false; - bAttackTeamAttacked = false; - bFinalAttack_1vs1 = false; - nAllyBeingHelped = -1; - nStructToBeBuilt = 0; - tDefVtolAction = 0; - tDefTankAction = 0; - tDefCybAction = 0; - tLastResearch = 0; - tLastHelp = 0; - nHelpX = -1; - nHelpY = -1; - tLastbuildBaseDef = 0; - nRealGatewaysFound = 0; - lastBuildDefX = -1; - lastBuildDefY = -1; - lastResIndex = -1; - nMidX = -1; - nMidY = -1; - gatherDefTankX = -1; - gatherDefTankY = -1; - gatherDefCybX = -1; - gatherDefCybY = -1; - nTotGateways = 3; - nTotOilInAtStart = 0; - lastDisplayAI = 0; - lastDisplayAIcheck = 0; - lastTruckBuilt = 0; - lastCybEngBuilt = 0; - nPlayersInGame = -1; - nAAPos = 0; - nHumanPlayers = 0; - nTeam = -1; - nEnemyPlayers = -1; - nLastEnemyPlayer = -1; - nLastTimeBuiltRepFac = 0; - numDefStrAtGateway = -1; - lastTimeRepairBuilt = 0; - nLastDefSpotUpdate = -1; - tLastPowerSwitch = 0; - nProdSelect = 0; - nDamageLevelRepair = 0; - nFinalAttacks = 0; - tLastFinalAttack = 0; - alertIsOn = false; - alertX = baseX; - alertY = baseY; - alertTime = gameTime; - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - bAttackedByVTOL = false; - cybAlertX = -1; - cybAlertY = -1; - cybAttackX = 0; - cybAttackY = 0; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - tTankAttackAction = 0; - tHelpAction = 0; - tChangeTimeTankToAdd = 0; - tLastPowerGen = 0; - tLastTankAttack = 0; - tTotalAttack = random(3000); - tLastCyborgAttack = 0; - tLastVTOLFactBuild = 0; - tLastAAbuilt = 0; - //tank attack - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - targetPlayerVTOL = -1; - tTanksSentToGathering = 0; - pickWallDefQueueDepth = 0; - lastHelpPlayer = -1; - nKineticX = -1; - nKineticY = -1; - nAttHumanPlayer = 0; - nAttAIPlayer = 0; - tEveryMin = gameTime; - tEvery3Min = gameTime; - tBeaconSent = 0; - nTanksDefGrp=0; - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lMinBaseStructBuilt = false; - lStopResLabUpgrade = false; - lStopVTOLFactBuilding = false; - lStopVTOLProduction = false; - attackCybObj = NULLOBJECT; - bDroidSelected = false; - tBeaconTimeout = 45; //in secs - bAttackedHumanDerrick = false;//alternate attacks - bAttackedByMortars = false; - bAttackedByLongRangeWeap = false; - bPowerNormalized = false; - nProd1 = 1; - tLastCybMech = gameTime; - nCybMechanic = 0; - - num_aDroid = 50; - count = 0; - while ( count < num_aDroid ){ - aDroid_Id[count] = -1; - aDroid_X[count] = -1; - aDroid_Y[count] = -1; - aDroid_counter[count] = 0; - count++; - } - - count=0; - while ( count < MAX_PLAYERS){ - beaconX[count] = -1; - beaconY[count] = -1; - tBeacon[count] = -1; - count++; - } - - aPower[VERY_LOW_POWER] = 300; - aPower[LOW_POWER] = 600; - aPower[HIGH_POWER] = 1000; - - count = 0; - while ( count < 11 ) - { - oilResTargetId[count] = -1; oilResTargetX[count] = -1; oilResTargetY[count] = -1; - count++; - } - - count = 0; - nStat = 20; - while ( count < nStat ) - { - //reset array players stats - count2 = 0; - while ( count2 < MAX_PLAYERS ) - { - aStat[count][count2] = -1; - count2++; - } - count++; - } - - numMaxDerricks = 40; //max number of derricks per player - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - baseX = structure.x; - baseY = structure.y; - } - else - { - groupAddArea(buildGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - if(buildGroup.members > 0) - { - baseX = buildGroup.x; - baseY = buildGroup.y; - } - else - { - baseX = (128*mapWidth)/2; - baseY = (128*mapHeight)/2; - } - } - - initAssignUnitToGrp(); - //initialises all the no go areas to 0. - //Should be called when a new map is loaded - initAllNoGoAreas(); - - //for all players, avoid attacking themselves - createAlliance(player,player); - - //makes a research available to a player regardless of its pre-requisites - enableResearch(CyborgLegs, player); - completeResearch(CyborgLegs, player); - - //LIFE = true; - nBaseRange=TILE*5; - - //nDefend range - updateDefendRange(); - - //estimate the range for the gateways and the defend range - if ( nDefendRange > 0 ){ - gatewaysRangeTiles = nDefendRange; - } else { - if ( max(mapWidth,mapHeight) <= 92 ){ - gatewaysRangeTiles = 22; - } else if ( max(mapWidth,mapHeight) > 92 and max(mapWidth,mapHeight) <= 105 ){ - gatewaysRangeTiles = 28; - } else if ( max(mapWidth,mapHeight) > 105 and max(mapWidth,mapHeight) <= 128 ){ - gatewaysRangeTiles = 36; - } else { - gatewaysRangeTiles = 40; - } - } - - //time to force droids production. This is the time gone from last attack, if reached - //droids production is forced - nAttackTime = 7000 + random(4000); - - //store the numb of derricks at the beginning - nDerricksAtStart = getNumDerricks(player); - - //oilRes available in the map - nFreeOilRes = numRemainingOilRes(); - - //player stats, updates nPlayersInGame - updatePlayersStats(); - - //_______ AI PERSONALITY SETTINGS ________________ - SetDyDoPersonality(AIPersonality, player); - - //search if gateways have been added in the map - nRealGatewaysFound = updateGateways(); - - //AIstrength - if ( AIstrength <= 0 or AIstrength > 5){ - AIstrength = 1+random(5); - } - - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") "); - } - count2++; - } - - //initialize eventCheckTime[] - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTime[count] = gameTime; - eventCheckCounter[count] = 0; - count++; - } - - //set trigger time - count=0; - while (count < EVENT_CHECK_NUMBER){ - eventCheckTrigger[count] = 250; - eventCheckReport[count] = 0; - count++; - } - eventCheckTrigger[0] = 3050;//lassat - - if( aiResponsibleForPlayer(player) ) - { - bRunning = true; - activateAI(); - } else { - shutDownThisAI(); - } - - printDebug( DYDOBP_RELEASE & ", starting power: (" & playerPower(player) & ") "); - displayMsg( DYDOBP_RELEASE & ", www.obooma.net/dydo/"); - -} -//============================================= -event VTOLhunter (inactive){ - - //dbg("dbg->VTOLhunter: start ("& vtolHunterGr.members &")",player); - - if ( vtolHunterGr.members < 0 ){ - setEventTrigger(VTOLhunter, inactive); - exit; - } - - /* - if ( oVTOLhunterTarget == NULLOBJECT ){ - //oilRes - if (bOilResLeft){ - droid = getADroid(VTOLhunter); - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - if ( _oilRes == NULLOBJECT ){ - } - - } - //move - } else { - } - */ - -} -//==============================print stats and debug messages =============== -event evPrintDebug (inactive) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _sPlInf4,_strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _HQx,_HQy,_count; - - if ( gameTime - tEveryMin >= 600 ) { - printDebug1("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")"); - tEveryMin = gameTime; - } - - if ( gameTime - tEvery3Min >= 1800 ) { - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < 2){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 4 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS ){ - if (isPlayerStillLive(_count)){ - _sPlInf4 = _sPlInf4 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - printDebug("nAIcheck("& nAIcheck &") gameType("& gameType() &") map("& mapWidth &"-"& mapHeight &") BaseRange("& nBaseRange/TILE &") gtwRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") lMinBaseStructBuilt("& lMinBaseStructBuilt &") nTotTankBuilt("& nTotTankBuilt &") nTotCyborgBuilt("& nTotCyborgBuilt &")"); - printDebug("Stats1:" & _strTeams &" Teams("& nTeam &" )"); - printDebug("Stats2: nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") Att Human Player("& nAttHumanPlayer &") Att AI("& nAttAIPlayer &") anyOilResLeft("& bOilResLeft &") nTotEnemyDroids("& nTotEnemyDroids &")"); - printDebug("Stats3:" & _sPlInf1 ); - printDebug("Stats4:" & _sPlInf2 ); - printDebug("Stats5:" & _sPlInf3 ); - printDebug("Stats1:" & _sPlInf4 ); - printDebug("Std Def: Depth("& pickDefQueueDepth &") - " & _sDef ); - printDebug("Wall Def: Depth("& pickWallDefQueueDepth &") - "& _sWallDef); - printDebug("Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort); - printDebug("Res 1: " & _str0 ); - printDebug("Res 2: " & _str1 ); - printDebug("Res 3: " & _str2 ); - printDebug("Res 4: " & _str3 ); - printDebug("Res 5: " & _str4 ); - printDebug("Cheap Res: "& numCheapRes[0] & " " & _sRes2); - printDebug("VTOL Res: "& _str5); - count = getTargetEnemy(true); - printDebug("------------------------------------------------------------------"); - tEvery3Min = gameTime; - } -} -//==============================event used to fix errors=============== -event evDebug (inactive) -{ - - if ( nAllyBeingHelped < 0 and helpGroup.members > 0 and gameTime - tLastHelp > 30){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has ("& helpGroup.members &") helping units and attack is deactivated, gameTime("& gameTime &") tLastHelp ("& tLastHelp &")",player); - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - - //if ( nAllyBeingHelped < 0 and helpGroup.members == 0){ - //dbg("dbg->evDebug: ("& getPlayerName(player) &") has now no more helping units, FIXED!",player); - //} else { dbg("dbg->evDebug: ("& getPlayerName(player) &"): is not able to switch helping units back to tankGroup!",player); } - } - - //Search for stucked droids - - cleanDroidCoordArray(); - checkIfDroidIsStuck(buildGroup); - checkIfDroidIsStuck(buildDefGroup); - checkIfDroidIsStuck(harvesterGroup); - -} -//----------------------------------------------------------------- -event shutDownAI(inactive) -{ - - //check if all enemies are dead - count = 0; - boolResult = true; - boolResult2 = false; - - while ( count < MAX_PLAYERS and boolResult ){ - if ( !friendlyPlayer(count) ){ - if ( isPlayerStillLive(count) ){ - boolResult = false; - } - } - count++; - } - //then check if this AI is dead - if ( !isPlayerStillLive(player) ){ - boolResult2 = true; - printDebug(" ________shutting down this AI: game lost______"); - } - if ( boolResult ){ - printDebug(" _________shutting down this AI: game won_______"); - } - - //check if this player is dead... - if ( boolResult or boolResult2 ){ - - //dbg("__________SHUT DOWN AI #("& player &") '"& getPlayerName(player) &")' ("& boolResult &")("& boolResult2 &")_________",player); - - shutDownThisAI(); - - } //else { displayMsg("__________("& anyDroidsLeft(player) &")("& _nFact &")("& _nCybFact &")_________"); } - - -} - -//---------------------------------------------------- -function void activateAI() -{ - local string strMessage; - //activate all events!! - setEventTrigger(droidBuilt, droidBuiltTr); - setEventTrigger(AIattacked, AIattackedTr); - setEventTrigger(vtolDefend, vtolDefendTr); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(reassignPlayers, reassignPlayersTr); - - - setEventTrigger(evDebug, evDebugTr); - setEventTrigger(AIbrain, AIbrainTr); - setEventTrigger(buildBase, buildBaseTr); - setEventTrigger(buildPowerGenerators, buildPowerGeneratorsTr); - setEventTrigger(buildRepFacSuppAttack, buildRepFacSuppAttackTr); - setEventTrigger(buildRepFirst, buildRepFirstTr); - setEventTrigger(defendBase, defendBaseTr); - setEventTrigger(defendDerrick, defendDerrickTr); - setEventTrigger(defendGatewaysPoint, defendGatewaysPointTr); - setEventTrigger(difficultyModifier, difficultyModifierTr); - setEventTrigger(doResearch, doResearchTr); - setEventTrigger(manageDefCyborgs, manageDefCyborgsTr); - setEventTrigger(manageDefTank, manageDefTankTr); - setEventTrigger(activateAttack, activateAttackTr); - setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - setEventTrigger(manageRepairTeam, manageRepairTeamTr); - setEventTrigger(SelectCyborgTemplate, SelectCyborgTemplateTr); - setEventTrigger(SelectTankTemplate, SelectTankTemplateTr); - setEventTrigger(sendBackDamagedUnits, sendBackDamagedUnitsTr); - setEventTrigger(showPlayerInfo, showPlayerInfoTr); - setEventTrigger(truckGroupSlider, truckGroupSliderTr); - setEventTrigger(unitAssignationCheck, unitAssignationCheckTr); - setEventTrigger(unitRepairSwitch, unitRepairSwitchTr); - setEventTrigger(updateBaseDetails, updateBaseDetailsTr); - setEventTrigger(upgradeStructures, upgradeStructuresTr); - setEventTrigger(useLassat, useLassatTr); - setEventTrigger(vtolEnabler, vtolEnablerTr); - setEventTrigger(multiMsgEv, multiMsgTr); - setEventTrigger(beaconEv, beaconTr); - setEventTrigger(shutDownAI, shutDownAITr); - setEventTrigger(evPrintDebug, evPrintDebugTr); - setEventTrigger(harvesterOperate,harvesterOperateTr); - setEventTrigger(AIcheck,AIcheckTr); - setEventTrigger(threatCheck,threatCheckTr); - setEventTrigger(VTOLhunter,VTOLhunterTr); - tFinishOilHack = gameTime; - - - -} -//================================================================ -//this event checks that most important events are not stucked -event AIcheck (inactive) //event 3 -{ - local string errorMSG, errorMSG2, errorMSG3, errorMSG4; - local int tTimeGone; - - if ( gameTime-tFinishOilHack < 100 ) {exit;}//harvestoperate would generate an error - - - errorMSG = "An error occurred on the Dydo-AI script player ("& player &"), this error message will appear only 4 times"; - errorMSG2 = "Please report the below DEBUG REPORT to http://forums.wz2100.net/ or on the AI webpage http://www.obooma.net/dydo/"; - errorMSG3 = "DEBUG REPORT: "; - - //TEST - - count=0; - while (count < EVENT_CHECK_NUMBER){ - tTimeGone = (gameTime - eventCheckTime[count]); - if ( tTimeGone > eventCheckTrigger[count] ){ - if (eventCheckCounter[count] < 4){ - nAIcheck++; - eventCheckCounter[count] = eventCheckCounter[count] + 1; - eventCheckReport[count] = eventCheckReport[count] + 1; - errorMSG3 = errorMSG3 & " event:"& count &"["& eventCheckTime[count] &"] time gone:("& tTimeGone &") should be("& eventCheckTrigger[count] &") "; - } - } else { - if (eventCheckReport[count] > 0){ - eventCheckReport[count] = 0; - eventCheckCounter[count] = 0; - } - } - count++; - } - - - count=0; - while (count < EVENT_CHECK_NUMBER){ - if ( eventCheckReport[count] > 0 and eventCheckCounter[count] < 4 and (gameTime - lastDisplayAIcheck) > 50 ){ - //dbg(errorMSG,player); - //dbg(errorMSG2,player); - //dbg(errorMSG3,player); - printDebug1( "######## AIcheck: " & errorMSG3 ); - lastDisplayAIcheck = gameTime; - //reactivateEvent - //if( count == 7 ){ - //setEventTrigger(manageIdleTrucks, manageIdleTrucksTr); - //displayErrMsg("DyDo will try try to reactivate event # 7 ---- DEBUG: (" & count & ")["& eventCheckReport[count] &"] " ); - //} - } - count++; - } - - //DEBUG MESSAGE - if ( gameTime - lastDisplayAIcheck >= 600 ){ - //dbg("dbg->AIcheck: player ("& getPlayerName(player) &") gameTime ("& gameTime &") nAIcheck ("& nAIcheck &") ",player); - lastDisplayAIcheck = gameTime; - } - -} -//----------------------------------------------------------------- -event showAImessage(wait,60) { - //let human player know he is playing with DyDo-AI mod - local string strMessage; - local bool bWebSite; - - count = 0; - while(count < MAX_PLAYERS) - { - - if ( isHumanPlayer(count) and count != player ){ - if (showAIPersonality){ - if(allianceExistsBetween(count,player)){ - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Ally)"; - } else { - strMessage = "player " & player & " " & DYDOBP_RELEASE & " General " & AIPersonality &" Level ["& AIstrength &"] (Enemy)" ; - } - } else { - strMessage = DYDOBP_RELEASE & " is active"; - } - msg( strMessage, player, count ); - } - count++; - } - setEventTrigger(showAImessage, showAImessageTr); -} -//----------------------------------------------------------------- - // find my lassat - // fire it at my attack objective. -event useLassat(inactive) -{ - - local BASEOBJ _targetStruct; - local int _n,_loop,_pos,_xCoord,_yCoord,_targetPl,_rnd,_nTargets; - local bool _mustBeHuman; - local STRUCTURESTAT _aTargets[7]; - - eventCheckTime[0] = gameTime; - - _nTargets = 7; - _aTargets[0] = powGen; - _aTargets[1] = factory; - _aTargets[2] = cybFactory; - _aTargets[3] = vtolFactory; - _aTargets[4] = lassat; - _aTargets[5] = playerHQ; - _aTargets[6] = uplinkCenter; - - - - _targetPl = -1; - _targetStruct = NULLOBJECT; - - if ( !isStructureAvailable(lassat,player) ){ - exit; - } - - if ( AIstrength > 3 and bHasHumanEnemies(player) ){ - _mustBeHuman = true; - } else { - _mustBeHuman = false; - } - - - //find the nearest enemy player - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - if (_targetPl < 0 ){ - _targetPl = getRandomEnemyPlayer(_mustBeHuman);//be sure we have a target player - } - - if ( _targetPl < 0 ){ - //dbg("dbg->useLassat: _targetPl < 0 ("& _mustBeHuman &")",player); - printDebug1("#### useLassat: _targetPl < 0 ("& _mustBeHuman &")"); - exit; - } - //get a target struct - _pos = random(_nTargets); - _loop = 0; - while( _loop < _nTargets and _targetStruct == NULLOBJECT) - { - initEnumStruct(false, _aTargets[_pos], _targetPl, player);//get only visible enemy structs - _targetStruct = enumStruct(); - _loop++; - _pos++; - if ( _pos == _nTargets ){ _pos = 0; } - } - - //target found!! - boolResult=false; - if(_targetStruct != NULLOBJECT) - { - initEnumStruct(FALSE,lassat,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if( structureComplete(structure) ) - { - //dbg("dbg->useLassat: Lassat ("& structure.id &") fires to ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") ",player); - printDebug1("Lassat ("& structure.id &") fires to struct.id ("& _targetStruct.id &") player ("& getPlayerName(_targetStruct.player) &") "); - skFireLassat(player,_targetStruct); - boolResult = true; - } - structure= enumStruct(); - } - _n = 1000;//exit the loop -> "while ( n < 10 ){" - } else { - //dbg("dbg->useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")",player); - printDebug1("useLassat: No target found, _targetPl("& getPlayerName(_targetPl) &")"); - } - - if ( !boolResult ){ - //dbg("dbg->useLassat: Lassat hasn`t fire",player); - printDebug1("useLassat: Lassat hasn`t fire "); - } - -} -//================================================================ -/* -add lStopBuildOilDef and check whenoilRes == 0 -> lStopBuildOilDef = false -defendGatewaysPoint: buildDefGroup - defend gateways -defendBase: buildGroup/harvestGrpoup - defend base -defendDerrick buildGroup/dbuildDefGroup/harvestGrpoup def derrick -*/ -event AIbrain (inactive) -{ - - local string _sWallDef, _sDef; - local BASEOBJ _attackObj; - local int _nMaxCybEngineers, _nMaxTrucks, enemy, nMyUnits ,nEnemyUnits, _player; - - setStructTarIgnore(ST_WALL);//16 - - //tAIbrain = gameTime; - eventCheckTime[1] = gameTime; - - //hack to put all at same power when debugging - if ( isHumanPlayer(player) and !bPowerNormalized ){ - bPowerNormalized = true; - count = playerPower(player); - if ( player == 0 ){ count1 = playerPower(1); } else { count1 = playerPower(0); } - count2 = count1 - count; - if ( count2 > 300 ){ - addPower(500,player); - printDebug1(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - //displayMsg(" added 500 power to player #"& player &"-"& getPlayerName(player) &", starting was power("& count &") instead of power("& count1 &")"); - } - } - - ASSERT(player >= 0 and player < 8, "player out of bounds: AIbrain " & player, player); - - //reset alert - if (gameTime - alertTime > TIME_TO_RESET_ALERT){ - alertIsOn = false; - alertX = -1; - alertY = -1; - alertTime = -1; - alertLevel= ALERT_INACTIVE; - } - - - nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - nMyDerricks = getNumDerricks(player); - nPower = playerPower(player); - nFactories = numStructsByType(factory, player); - nVTOLFactories = numStructsByType(vtolFactory, player); - nResLabs = numStructsByType(resLab, player); - nCybFact = numStructsByType(cybFactory, player); - nWorkingVTOLFac = getNumStructNotIdle(vtolFactory); - nWorkingFact = getNumStructNotIdle(factory); - nWorkingLab = getNumStructNotIdle(resLab); - nWorkingCybFac = getNumStructNotIdle(cybFactory); - //nTotBaseDefences = numFriendlyWeapStructsInRange(player, baseX, baseY, nBaseRange+RANGETILES_DEFSTR_AROUNDBASE*TILE , false); - nFreeOilRes = numRemainingOilRes(); - bOilResLeft = bAnyOilResLeft(); - //nTotDerricks = getTotDerricksMap();//nTotOilInAtStart - //update power levels - - //check how many tanks are in tankDefGroup - nTanksDefGrp=0; - if( gameTime - lastDisplayAI >= 90 and tankDefGroup.members > 0 ){ - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTanksDefGrp++; - } - droid = iterateGroup(tankDefGroup); - } - } - - if ( aPower[VERY_LOW_POWER] < 400 and researchFinished(cobraBody, player) and researchFinished(mediumCannon,player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 2 ___________"); - aPower[VERY_LOW_POWER] = 400; - aPower[LOW_POWER] = 700; - aPower[HIGH_POWER] = 1100; - } - if ( aPower[VERY_LOW_POWER] < 500 and researchFinished(trackPropulsion, player) ){ - //displayMsg("AIbrain: ______________ SWITCH POWER to level 3 ___________"); - aPower[VERY_LOW_POWER] = 500; - aPower[LOW_POWER] = 800; - aPower[HIGH_POWER] = 1200; - } - - //reactivate all (but the fact upgrades!!!) - lStopTankProduction = false; - lStopBuildTankProd = false; - lStopCybEngProd = false; - lStopCybProduction = false; - lStopFactUpgrade = true; - lStopFactUpgrade2 = true; - lStopResearch = false; - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildDefGateway = false; - lStopBuildRepFacility = false; - lStopBuildingStructures = false; - lStopResLabUpgrade = false; - lStopVTOLProduction = false; - lStopVTOLFactBuilding = false; - - - if (nFactories >= structsLimits[nAI_Pers][STR_TANK_FACTORY] and nResLabs >= structsLimits[nAI_Pers][STR_RESLAB] and nCybFact >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - lMinBaseStructBuilt = true; - } else { - lMinBaseStructBuilt = false; - } - - - - if ( gameTime - tLastPowerSwitch > TIME_SWITCH_WORKSTRUCT ){ - tLastPowerSwitch = gameTime; - nProdSelect++; - if (nProdSelect == 8){ nProdSelect = 0; } - } - - if ( nPower < 100 )//=========== VERY LOW POWER ============================= - { - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - - } - else if ( nPower >= 100 and nPower < aPower[VERY_LOW_POWER] ) - { - - if ( AIPersonality == AI_STANDARD ){ - manageVeryLowPower(); - } - if ( AIPersonality == AI_VTOL ){ - manageVeryLowPower2(); - } - if ( AIPersonality == AI_TURTLE ){ - manageVeryLowPower3(); - } - if ( AIPersonality == AI_CYBORG ){ - manageVeryLowPower4(); - } - - //always block with this power level - //lStopBuildDefGateway = true; - //lStopVTOLFactBuilding = true; - //lStopBuildingStructures = true;//activated if not min struct reached - - } //================== POWER END ============================== - - //do not build too many VTOLs - if ( vtolDefendGr.members > 6 ){ - if ( (float)(vtolDefendGr.members) > (float)(nTotTanks + nTotCyborgs) * 0.33 ){ - lStopVTOLProduction = true; - } - } - - count = 0; - count2 = 0; - while ( count < numCheapRes[0] ){ - if ( researchFinished(researchCheap[0][count], player) ){ - count2++; - } - count++; - } - if ( count2 == numCheapRes[0] ){ lStopCheapResearch = true; } - //try to minimize the spending of money for researches - //if ( nWorkingLab >= 2 ){ lStopCheapResearch = true; } - - //resLab upgrade - if (!lMinBaseStructBuilt and gameTime < 8*TIME_MINUTE){ - lStopResLabUpgrade = true; - } - - //repair Facility - if( gameTime < VALID_TIME_REPAIRFAC or numStructsByType(repairFacility, player) >= MAX_REPAIRFAC) - { lStopBuildRepFacility = true; } - - if( gameTime < 20*TIME_MINUTE and numStructsByType(repairFacility, player) > 2 ) - { lStopBuildRepFacility = true; } - - if( gameTime < 30*TIME_MINUTE and numStructsByType(repairFacility, player) > 3 ) - { lStopBuildRepFacility = true; } - - if ( gameTime - nLastTimeBuiltRepFac < 2*TIME_MINUTE ) - { lStopBuildRepFacility = true; } - - //build def only when enough structs have been built!! - if ( !lMinBaseStructBuilt and gameTime < TIME_HARVESTING_PHASE){ - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopVTOLFactBuilding = true; - lStopVTOLProduction = true; - } - - - //start building gateway def a bit later - if ( gameTime < VALID_TIME_GATEWAYDEF) - {lStopBuildDefGateway = true;} - - //defend only on alert points!! - if ( defSpotX <= 0 ) - {lStopBuildDef = true;} - - //have been attacked and have no troups remaining - if ( gameTime > 12*TIME_MINUTE and (nTotCyborgs+nTotTanks) < MIN_TOT_UNITS )//============================== - { - - if ( nPower > 100 ){ - if (AIPersonality == AI_CYBORG ){ - lStopCybProduction = false; - if ( nWorkingFact >= 1){lStopTankProduction = true; } - } else { - lStopTankProduction = false; - lStopCybProduction = false; - } - } - - if ( cyborgConstructGroup.members + buildGroup.members + harvesterGroup.members + buildDefGroup.members >= 2 ) { - //I am in trouble need tanks not trucks!!! - lStopBuildTankProd = true; - lStopCybEngProd = true; - } - - if ( nPower < aPower[LOW_POWER] ){ - lStopResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopCheapResearch = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - - } else { // ======================= ACTIVATE EVENTS ========================= - - //activate more tanks and cyb engineers if AA def are required - if ( skVtolEnableCheck(player) ){ - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } else { - if ( numAAinRange(player, player, baseX, baseY, nBaseRange ) < 6 ){ - _nMaxTrucks = MIN_BUILDING_TANKS_VTOL; - _nMaxCybEngineers = MIN_CYB_CONSTENG_VTOL; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - } - } - } else { - if ( !lMinBaseStructBuilt ){ - _nMaxTrucks = MIN_BUILDING_TANKS; - } else { - _nMaxTrucks = MIN_BUILDING_TANKS_INGAME; - } - if ( AIPersonality == AI_CYBORG ){ - _nMaxCybEngineers = MIN_CYB_CONSTENG_CYB; - } else { - _nMaxCybEngineers = MIN_CYB_CONSTENG; - } - - } - - - //Trucks & cybEng - if ( buildGroup.members + harvesterGroup.members + buildDefGroup.members < _nMaxTrucks){ - if ( nPower > 100 ){ lStopBuildTankProd = false;} - } else { - lStopBuildTankProd = true; - } - if ( cyborgConstructGroup.members < _nMaxCybEngineers){ - if ( nPower > 100 ){ lStopCybEngProd = false; } - } else { - lStopCybEngProd = true; - } - - //At least one research every 4 min - if( gameTime - tLastResearch > 4*TIME_MINUTE ) - { lStopResearch = false; } - - //upgrades - if ( lMinBaseStructBuilt ) { - if ( researchFinished(cobraBody, player) or researchFinished(hoverPropulsion, player) ) - { lStopFactUpgrade = false; } - if ( researchFinished(trackPropulsion, player) or researchFinished(phytonBody, player) ) - { lStopFactUpgrade2 = false; } - } - - //activate building of structs - if ( !lMinBaseStructBuilt ) - { lStopBuildingStructures = false; } - - //defences - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF ) - { - lStopBuildDef = false; - lStopBuildDefDerricks = false; - } - - - } - - //stop all for 2 minutes long but droids production - if ( bFinalAttack_1vs1 and gameTime-tLastFinalAttack < 2*TIME_MINUTE ){ - lStopTankProduction = false; - lStopCybProduction = false; - if (nPower < aPower[VERY_LOW_POWER]){ - lStopBuildTankProd = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL_LOW; - } else { - nDamageLevelRepair = DAMAGE_REPAIR_LEVEL; - } - - - //power superiority check in 1vs1 games - bForceResPowUp = false; - if ( nEnemyPlayers == 1 and gameTime > 15*TIME_MINUTE ){ - if ( getPowerIndex( nLastEnemyPlayer ) >= getPowerIndex( player ) ){ //human player has more or higher power index - if ( nMyDerricks >= getNumDerricks(nLastEnemyPlayer) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - - //checking power in all type of games - _player=0; - while( _player < MAX_PLAYERS and gameTime > 15*TIME_MINUTE ){ - if (isPlayerStillLive(_player)){ - if ( getPowerIndex( _player ) > getPowerIndex( player ) ){ //human player has higher power index - if ( nMyDerricks >= getNumDerricks(_player) ){ //derricks are fine - bForceResPowUp = true;//force research of power - lStopResearch = false; - } - } - } - _player++; - } - - //droid production guarantee - if (!bTankAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTanksDefGrp < 12 ){ - if ( nTanksDefGrp < 8 ){ - if ( nWorkingFact < 2 ){lStopTankProduction = false; } - } else { - if ( nWorkingFact < 1 ){lStopTankProduction = false; } - } - } - } - - if (!bCybAttIsOn and AIPersonality == AI_CYBORG ){ - if ( nTotCyborgs < 20 ){ - if ( nTotCyborgs < 12 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - if (AIPersonality == AI_VTOL){ - if ( vtolDefendGr.members + vtolAttGr.members < 10 ){ - if ( vtolDefendGr.members + vtolAttGr.members < 5 ){ - if ( nWorkingVTOLFac < 2 ){lStopVTOLProduction = false; } - } else { - if ( nWorkingVTOLFac < 1 ){lStopVTOLProduction = false; } - } - } - } else { - if ( vtolDefendGr.members + vtolAttGr.members < 3 ){ - if ( nWorkingVTOLFac == 0 ){lStopVTOLProduction = false; } - if ( nWorkingVTOLFac > 1 ){lStopVTOLProduction = true; } - } - } - if (!bCybAttIsOn and AIPersonality == AI_STANDARD or AIPersonality == AI_TURTLE ){ - if ( nTotCyborgs < 12 ){ - if ( nTotCyborgs < 8 ){ - if ( nWorkingCybFac < 2 ){lStopCybProduction = false; } - } else { - if ( nWorkingCybFac < 1 ){lStopCybProduction = false; } - } - } - } - - //Research guarantee - if ( nTotTanks+nTotCyborgs > 16 ){ - if ( nWorkingLab < 2 ){lStopResearch = false; } - } - - //attack guarantee - if ( tLastCyborgAttack > tLastTankAttack ){ - nTime = tLastCyborgAttack; - } else { - nTime = tLastTankAttack; - } - if ( gameTime - nTime > nAttackTime and nTotTanks+nTotCyborgs < 25 ){ - lStopCybProduction = false; - lStopTankProduction = false; - lStopBuildTankProd = false; - if (nPower < aPower[VERY_LOW_POWER]){ - if (AIPersonality != AI_CYBORG ){ - lStopResearch = true; - } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - lStopBuildRepFacility = true; - lStopBuildingStructures = true; - lStopResLabUpgrade = true; - lStopVTOLProduction = true; - lStopVTOLFactBuilding = true; - } - } - - if ( gameTime - lastDisplayAI >= 110 ){ - displayMsg("Structs not idle: nProdSelect("& nProdSelect &") (Fac-Cyb-Res-VTOLfac) ("& nWorkingFact &"-"& nWorkingCybFac &"-"& nWorkingLab &"-"& nWorkingVTOLFac &") power["& playerPower(player) &"] Low Power("& aPower[VERY_LOW_POWER] &") tot Tank+Cyb("& nTotTanks+nTotCyborgs &") nTanksDefGrp("& nTanksDefGrp &") "); - displayMsg("Stops: (Fac-Cyb-VTOLfac-Res-CheapRes__DefBase-DefDerr-Gateways) ("& lStopTankProduction &"-"& lStopCybProduction &"-"& lStopVTOLProduction &"-"& lStopResearch &"-"& lStopCheapResearch &"__"& lStopBuildDef &"-"& lStopBuildDefDerricks &"-"& lStopBuildDefGateway &") nAttackTime("& gameTime-nTime &"/"& nAttackTime &")" ); - lastDisplayAI = gameTime; - } - - tAIbrain = gameTime; -} -/*====================================================================== - VTOL STUFF -========================================================================*/ -event vtolEnabler(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolEnabler " & player, player); - if( skVtolEnableCheck(player) ) // check to see if we have vtol technologies. - { - //displayMsg("vtolEnabler 1: enabling all VTOL EVENTS "); - setEventTrigger(vtolStructs,vtolStructsTr); // activate other vtol functions.. - setEventTrigger(buildVtols, buildVtolsTr); - setEventTrigger(manageDefVTOL, manageDefVTOLTr); - setEventTrigger(buildAAdef, buildAAdefTr); - //setEventTrigger(vtolAttack, vtolAttackTr); - setEventTrigger(vtolEnabler,inactive); // turn off this event. - //dbg("----I CAN USE VTOLS----", me); - } - -} -//-------------------------------------------------------------------- -event defFromLongRangeWeap(inactive) -{ - - local int _nCBSense,_nMortar,_nBombard,_nPepperpot,_nRippleRocket; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(defFromLongRangeWeap, inactive); - } - else - { - */ - - - if ( nKineticX < 0 or nKineticY < 0 ) { - setEventTrigger(defFromLongRangeWeap, inactive); - exit; - } - - //dbg("dbg->defFromLongRangeWeap: Activated attacked in coord ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - //check if CB tower has been build in range of myattacked object - //alertX&Y are based on enemyBaseObj - _nCBSense = numStructinRange(CBSense, player, nKineticX, nKineticY, 6*TILE); - _nMortar = numStructinRange(defMortar, player, nKineticX, nKineticY, 6*TILE); - _nBombard = numStructinRange(defBombard, player, nKineticX, nKineticY, 6*TILE); - _nPepperpot = numStructinRange(defPepperpot, player, nKineticX, nKineticY, 6*TILE); - _nRippleRocket = numStructinRange(defRippleRockets, player, nKineticX, nKineticY, 6*TILE); - - droid = pickDefTruck(false); - if ( droid == NULLOBJECT ){ - droid = closestIdleDroid(buildGroup,buildX,buildY); - } - if( droid == NULLOBJECT ){ exit; } - - //dbg("dbg->defFromLongRangeWeap, build("& buildX/TILE &"-"& buildY/TILE &") alert("& alertX/TILE &"-"& alertY/TILE &") attacked in ("& nKineticX/TILE &"-"& nKineticY/TILE &")",player); - buildX = nKineticX; - buildY = nKineticY; - - if (bAttackedByMortars){ - //CB Sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - - //Defences - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defPepperpot,player) ) { - if( _nPepperpot < 2 ){ - if( pickStructLocation(defPepperpot, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Pepperpot Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defPepperpot,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defBombard,player) ) { - if( _nBombard < 3 ){ - if( pickStructLocation(defBombard, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Bombard Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defBombard,buildX,buildY); - } - } - } - } else if ( isStructureAvailable(defMortar,player) ) { - if( _nMortar < 3 ){ - if( pickStructLocation(defMortar, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Mortar Pit in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defMortar,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - if (bAttackedByLongRangeWeap){ - - //CB sense - if ( isStructureAvailable(CBSense,player) ){ - if ( _nCBSense == 0 ){ - if( pickStructLocation(CBSense, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building CB Sense in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,CBSense,buildX,buildY); - } - } - } - } - //defense - if ( isStructureAvailable(defRippleRockets,player) ){ - if( _nRippleRocket < 1 ){ - if( pickStructLocation(defRippleRockets, ref buildX, ref buildY, player ) ){ - if ( droidCanReach(droid, buildX, buildY) ){ - //dbg("dbg->defFromLongRangeWeap, building Ripple Rockets in ("& buildX/TILE &"-"& buildY/TILE &") ",player); - orderDroidStatsLoc(droid, DORDER_BUILD,defRippleRockets,buildX,buildY); - } - } - } - } - - //dbg("dbg->defFromLongRangeWeap, attacked by mortars CBSense("& _nCBSense &") mortar("& _nMortar &") Bombard("& _nBombard &") Pepp("& _nPepperpot &")",player); - } - - setEventTrigger(defFromLongRangeWeap, inactive); - //} -} - -//-------------------------------------------------------------------- -event buildAAdef(inactive) -{ - local int _numAAdefInRange, _numAAinBase, _rnd; - - _numAAinBase = numAAinRange(player, player, baseX, baseY, nBaseRange ); - - - - if ( _numAAinBase >= MIN_AA_INBASERANGE or (!lMinBaseStructBuilt and gameTime < 10*TIME_MINUTE) ) { exit; }//do not set to inactive because AA def can be destroyed!! - if ( gameTime - tLastAAbuilt < 1 * TIME_MINUTE ){ exit; } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup,baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - //displayMsg("buildAAdef: __________ ("& lMinBaseStructBuilt &")("& _numAAinBase &")__________"); - - // build AA defenses. - if ( droid != NULLOBJECT ){ - - //pick up the position - nAAPos++; - if ( nAAPos > 3 ){ nAAPos = 0; } - if ( nAAPos == 0 ){ buildX = baseX+(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 1 ){ buildX = baseX+(5*TILE); buildY = baseY-(5*TILE); } - if ( nAAPos == 2 ){ buildX = baseX-(5*TILE); buildY = baseY+(5*TILE); } - if ( nAAPos == 3 ){ buildX = baseX-(5*TILE); buildY = baseY-(5*TILE); } - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)) - { count2 = count; } - count = count + 1; - } - if(count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY,player); - if(boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - //displayMsg("buildAAdef: droid ("& droid.id &")build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } //else { displayMsg("buildAAdef: No AA def struc found"); } - } //else { displayMsg("buildAAdef: No idle droid found"); } -} - -//---------------------------------------------- -event vtolDefend(vtolDefendTr)//(CALL_STRUCT_ATTACKED, player, ref structure, ref enemyBaseObject) -{ - local int _numAAdefInRange,_dist; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(vtolDefend, inactive); - } - else - { - */ - - - if(enemyBaseObject != NULLOBJECT) - { - if(enemyBaseObject.type == OBJ_DROID) - { - if( isVtol( objToDroid(enemyBaseObject) ) ) - { - -displayMsg("vtolDefend: __________ 1 __________"); - - bAttackedByVTOL = true;//force research of AA defences - if ( structure != NULLOBJECT ){ - _dist = distBetweenTwoPoints( structure.x, structure.y, baseX, baseY); - } else { - _dist = distBetweenTwoPoints( enemyBaseObject.x, enemyBaseObject.y, baseX, baseY); - } - - if ( _dist/TILE > (nDefendRange/TILE) * 3){ - dbg("dbg->vtolDefend: cannot build AA def as the palce is too far away _dist > 3*nDefendRange ("& _dist/TILE &" > "& (nDefendRange/TILE)*3 &") ",player); - exit; - } - - droid = pickDefTruck(false); - if (droid == NULLOBJECT){ - droid = closestIdleDroid(buildGroup, baseX, baseY); - } - if (droid == NULLOBJECT){ - droid = pickCybEng(true); - } - - // build AA defenses. - if ( droid != NULLOBJECT ){ -displayMsg("vtolDefend: __________ 2 __________"); - if( structure != NULLOBJECT ) { -displayMsg("vtolDefend: __________ 3 __________"); - //if no AA at all in AAdefRange or enough power - _numAAdefInRange = numAAinRange(player, player, structure.x, structure.y, RANGE_BUILD_AADEF ); - if ( playerPower(player) > 100 or random(10) > 4 ){ - if ( _numAAdefInRange < MAX_AADEF_INRANGE ){ - buildX = structure.x; - buildY = structure.y; - - //find best defense we can build. - count = 0; - count2 = -1; - while( count < numGenAA) - { - if(isStructureAvailable(vtolGenStruct[count],player)){ - count2 = count; - } - count = count + 1; - } - if( count2 >= 0 ){ - boolResult = pickStructLocation(vtolGenStruct[count2], ref buildX, ref buildY, player); - if( boolResult and droidCanReach(droid, buildX ,buildY) ) // build a vtol defense near the attacked struct... - { - dbg("dbg->vtolDefend: build AA def ["& count2 &"] at ("& buildX/TILE &"-"& buildY/TILE &"), tot AA in struct range ("& _numAAdefInRange &") _dist("& _dist/TILE &")",player); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolGenStruct[count2],buildX,buildY); - tLastAAbuilt = gameTime; - } - } else { dbg("dbg->vtolDefend: no AA defense found",player); } - } else { dbg("dbg->vtolDefend: cannt build AA def _numAAdefInRange/max("& _numAAdefInRange &"/"& MAX_AADEF_INRANGE &") power("& playerPower(player) &")",player); } - } else { dbg("dbg->vtolDefend: not enough power ("& playerPower(player) &") to build AA def _dist ("& _dist/TILE &")",player); } - } else { dbg("dbg->vtolDefend: structure attacked is NULLOBJECT",player); } - } else { dbg("dbg->vtolDefend: idle droid not found",player); } - } - } - } - //} -} - -// ------------------ build VTOL structs ----------------------- -event vtolStructs(inactive) -{ - local int _totalVTOLS; - local int _numVtolFacs,_numRearmPads; - - ASSERT(player >= 0 and player < 8, "player out of bounds: vtolStructs " & player, player); - //displayMsg("vtolStructs: vtolStructs event called"); - - if( !isStructureAvailable(vtolFactory,player) ){ - exit; - } - - // see how many vtol factories we already have - _numVtolFacs = nVTOLFactories; - _numRearmPads = numStructsByType(vtolPad, player); - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - - //see if we have enough rearm pads - if( (float)(_numRearmPads * (4 / 3)) <= (float)(_totalVTOLS) and _totalVTOLS > 0) - { - //displayMsg("vtolStructs: need rearming Pads"); - buildRearmPads(); - } - - if( lStopVTOLFactBuilding ){ - exit; - } - - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("vtolStructs: vtolStructs ("& _numVtolFacs &"/"& structsLimits[STR_VTOL_FACTORY] &")"); - //} - if( _numVtolFacs < structsLimits[nAI_Pers][STR_VTOL_FACTORY] and gameTime - tLastVTOLFactBuild > 900 ) - { - // build factory - buildX = baseX; // pick a location - buildY = baseY; - boolResult = pickStructLocation(vtolFactory, ref buildX, ref buildY, player); - if(boolResult == TRUE) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if( droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX ,buildY) ){ - //displayMsg("*** vtolStructs: droid to build vtolFactory"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolFactory, buildX,buildY); - tLastVTOLFactBuild = gameTime; - } - } //else { displayMsg("vtolStructs: cannot find an idle buildTruck"); } - } //else { displayMsg("#### vtolStructs: CANNOT PICK UP VTOL FACTORY LOCATION "); } - } //else { displayMsg("vtolStructs: MAX VTOL FACT REACHED "); } - -} - -// ------------- build VTOL droids -------------------- -event buildVtols(inactive) -{ - - local int _totalVTOLS; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildVtols " & player, player); - - //displayMsg("buildVtols: buildVtols event called - 1 nProdSelect("& nProdSelect &") lStopVTOLProduction("& lStopVTOLProduction &") lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - - if( lStopVTOLProduction ){ - exit; - } - - _totalVTOLS = vtolDefendGr.members + vtolAttGr.members; - // got enough vtols? - if( getDroidCount(player) >= MAX_DROIDS ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY DROIDS UNITS"); - exit; - } - if( (_totalVTOLS >= MAX_VTOLS and AIPersonality != AI_VTOL) or (_totalVTOLS >= MAX_VTOLS_PERS2 and AIPersonality == AI_VTOL) ){ - //displayMsg("buildVtols: CAN'T BUILD VTOLS - TOO MANY VTOLS tot:("& _totalVTOLS &") max VTOLs Gen1-3-4("& MAX_VTOLS &") Gen2("& MAX_VTOLS_PERS2 &")"); - exit; - } - - - // build vtols - boolResult = true; - initEnumStruct(FALSE,vtolFactory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureIdle(structure)) // if factory idle - { - vtolFactoryBuildVtol(structure); - boolResult = false; - } - structure = enumStruct(); - } -} - -//====================================================== -event manageDefVTOL(inactive)//event 19 -{ - local int _dist,_nVTOLSRequired; - local string _dbgString; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefVTOL " & player, player); - //displayMsg("manageDefVTOL: ________ VTOLs ("& vtolDefendGr.members &") idle("& idleGroup(vtolDefendGr) &") alertIsOn("& alertIsOn &") alertTime("& alertTime &") ("& (gameTime-alertTime) &")__________"); - - if (vtolDefendGr.members == 0){ exit; } - - if ( targetPlayerVTOL >= 0 and targetPlayerVTOL < 8 ){ - if ( friendlyPlayer(targetPlayerVTOL) ){ - //displayMsg("dbg->manageDefVTOL: player ("& getPlayerName(player) &") a bug caused targetPlayerVTOL to be a friendly player ("& targetPlayerVTOL &"), now resetting all vtols targets"); - targetPlayerVTOL = -1; - attTargetVTOL = NULLOBJECT; - defTargetVTOL = NULLOBJECT; - } - } - - - //VTOL are attacking something, check target is still valid and have enough VTOLs - if (bVTOLTargetIsDerrick){ - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - } else { - _nVTOLSRequired = MIN_VTOLS_ATTACK_BASE; - } - if ( attTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if (_dist > nDefendRange and ( vtolDefendGr.members < _nVTOLSRequired or attTargetVTOL.type == OBJ_DROID) ){ - attTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop attacking attTargetVTOL enemy Droid out of def range dist("& _dist/TILE &"/"& nDefendRange/TILE &") or not enough members ("& vtolDefendGr.members &"/"& vtolDefendGr.members &") "); - } - } - - //VTOL are defending something, check target is still valid - if ( defTargetVTOL != NULLOBJECT ){ - _dist = distBetweenTwoPoints( defTargetVTOL.x, defTargetVTOL.y, baseX, baseY); - count = distBetweenTwoPoints( alertX, alertY, baseX, baseY); - //STOP attack : VTOLs are attacking enemy droid out of def range or not have enough members to attack - if ( (float)(_dist) > (float)(nDefendRange)*1.25 and defTargetVTOL.type == OBJ_DROID ){ - defTargetVTOL = NULLOBJECT; - orderGroup( vtolDefendGr, DORDER_RTR ); - //displayMsg("manageDefVTOL: stop to attack defTargetVTOL, droid target is too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &") idle members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") alert dist ("& count/TILE &")"); - } - } - - if (alertIsOn){ //------------------------------------ - - _nVTOLSRequired = 1; - - //reset attack target - if ( attTargetVTOL != NULLOBJECT ){ - attTargetVTOL = NULLOBJECT; - //displayMsg("manageDefVTOL: stop attacking enemy as alert is on! idle/members ("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") "); - } - - if (defTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(defTargetVTOL.player) and (float)idleGroup(vtolDefendGr) > (float)vtolDefendGr.members*0.8 ){//due to NEXUS!!! - //displayMsg("manageDefVTOL: re-attacking defTargetVTOL, idle:("& idleGroup(vtolDefendGr) &") tot:("& vtolDefendGr.members &") to attack at alert coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - } - } else { - //displayMsg("manageDefVTOL: defTargetVTOL == NULLOBJECT, searching new target in alert point range X("& alertX &") Y("& alertY &")"); - if ( alertX > 0 and alertY > 0){ - defTargetVTOL = objDroidTargetInRange(alertX,alertY,TILE*12,true); - } - if ( defTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attacking defTargetVTOL, idle("& idleGroup(vtolDefendGr) &") tot("& vtolDefendGr.members &") to attack droid at coord ("& defTargetVTOL.x/TILE &"-"& defTargetVTOL.y/TILE &") droid hitPoints("& defTargetVTOL.hitPoints &")"); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, defTargetVTOL ); - tDefVtolAction = gameTime; - bVTOLTargetIsDerrick = false; - } //else { displayMsg("manageDefVTOL: target not found "); } - } - - } else {// ============ alert not on ================== - - - //================== DefendRange ========================= - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objStrTargetInRange(baseX,baseY,nDefendRange); - bVTOLTargetIsDerrick = false; - } - if ( attTargetVTOL == NULLOBJECT ){ - attTargetVTOL = objDroidTargetInRange(baseX,baseY,nDefendRange,true); - bVTOLTargetIsDerrick = false; - } - - //================== Attack Derricks ========================= - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get human derrick as target"); - attTargetVTOL = objHumanDerrick(true, 1, 0); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: human derrick found"); - bVTOLTargetIsDerrick = true; - } - } - if ( attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: try to get undefendedEnemyDerrick as target"); - attTargetVTOL = undefendedEnemyDerrick(true); - _nVTOLSRequired = MIN_VTOLS_ATTACK_DERRICK; - if ( attTargetVTOL != NULLOBJECT ){ - bVTOLTargetIsDerrick = true; - //displayMsg("manageDefVTOL: undefendedEnemyDerrick found"); - } - } - - if ( attTargetVTOL != NULLOBJECT ){ - - _dist = distBetweenTwoPoints( attTargetVTOL.x, attTargetVTOL.y, baseX, baseY); - if (_dist > nDefendRange){ - - //if a droid, reset target - if ( attTargetVTOL.type == OBJ_DROID ){ - //displayMsg("manageDefVTOL: reset enemy target, target is a droid and too far away dist("& _dist/TILE &"/"& nDefendRange/TILE &")"); - attTargetVTOL = NULLOBJECT; - exit; //bug fixed with DyDo 1.2.3a, this exit was missing - } - - //check if enemy has build AA def around this object and reset target - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( vtolDefendGr.members < count2*3 ){ - //displayMsg("manageDefVTOL: reset VTOL target ("& attTargetVTOL.id &") , too many AA ("& count2 &") VTOL("& vtolDefendGr.members &")"); - attTargetVTOL = NULLOBJECT; - exit;//bug fixed with DyDo 1.2.3a, this exit was missing - } //else { displayMsg("manageDefVTOL: VTOL target ("& attTargetVTOL.id &") still ok, AA ("& count2 &")/("& count3 &") VTOL("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &")"); } - - //re-attacking the enemy base, check that if target is droid it has not returned back to his base - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 and vtolDefendGr.members >= _nVTOLSRequired ){ - //displayMsg("manageDefVTOL: ________________ VTOLS ATTACK TARGET OUTSIDE DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: attacking target with idle("& idleGroup(vtolDefendGr) &") members("& vtolDefendGr.members &")"); - _dbgString = "struct"; - if ( attTargetVTOL.type == OBJ_DROID ){ - _dbgString = "droid"; - } - //displayMsg("manageDefVTOL: re-attack enemy ("& _dbgString &") idle/tot:("& idleGroup(vtolDefendGr) &"/"& vtolDefendGr.members &") coord ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - - } else { //_dist < nDefendRange - - //defending the base in defend range - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( (float)idleGroup(vtolDefendGr) >= (float)(vtolDefendGr.members)*0.8 ){ - //displayMsg("manageDefVTOL: ________________ ("& idleGroup(vtolDefendGr) &") VTOLS ATTACK TARGET IN DEFEND RANGE ___________________"); - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking ("& attTargetVTOL.x/128 &"-"& attTargetVTOL.y/128 &") dist("& distBetweenTwoPoints(attTargetVTOL.x,attTargetVTOL.y,baseX,baseY)/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - tDefVtolAction = gameTime; - } - } - - } - - - } else { //alert not on and attTargetVTOL == NULLOBJECT - - //displayMsg("manageDefVTOL: alert not on ("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getTargetEnemy(false); - if ( targetPlayerVTOL <= 0){ - targetPlayerVTOL = getRandomEnemyPlayer(false); - } - } - - //displayMsg("manageDefVTOL: targetPlayerVTOL=("& targetPlayerVTOL &") bVTOLTargetIsDerrick("& bVTOLTargetIsDerrick &")"); - if ( targetPlayerVTOL >= 0){//let`s attack - - count = _random(10); - - if ( attTargetVTOL != NULLOBJECT ){ - //displayMsg("manageDefVTOL: attTargetVTOL has not changed attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Re-attack target ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &"), attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - } - } - - //priority #2 - if ( attTargetVTOL == NULLOBJECT and (count < 5 or bNeedDerrick) and idleGroup(vtolDefendGr) >= MIN_VTOLS_ATTACK_DERRICK) { - //================== ATTACK enemy DERRICK ========================= - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY DERRICK player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = closestEnemyDerrick(false,targetPlayerVTOL); - if ( attTargetVTOL != NULLOBJECT ){ - count2 = numEnemyAAInRange(attTargetVTOL.x, attTargetVTOL.y, AA_THREAT_RANGE ); - if ( idleGroup(vtolDefendGr) > count2*3 ){ - //displayMsg("manageDefVTOL: Attack derrick priority 2 ("& attTargetVTOL.id &") with ("& idleGroup(vtolDefendGr)&"/"& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = true; - } else { - attTargetVTOL = NULLOBJECT; //reset to allow to attack base - } - } - } - - //================== ATTACK enemy BASE ========================= - if (attTargetVTOL == NULLOBJECT ){ - //displayMsg("manageDefVTOL: ________________ VTOLS TRY ATTACK ENEMY BASE player ("& targetPlayerVTOL &")___________________"); - attTargetVTOL = getVTOLstructTarget(); - //Attack!!!! - if ( attTargetVTOL != NULLOBJECT ){ - if (!friendlyPlayer(attTargetVTOL.player)){//due to NEXUS!!! - if ( idleGroup(vtolDefendGr) > MIN_VTOLS_ATTACK_BASE ){ - //displayMsg("manageDefVTOL: move all ("& vtolDefendGr.members &") attacking player ("& attTargetVTOL.player &") object ("& attTargetVTOL.x/TILE &"-"& attTargetVTOL.y/TILE &") target "); - orderGroupObj( vtolDefendGr, DORDER_ATTACK, attTargetVTOL ); - bVTOLTargetIsDerrick = false; - targetPlayerVTOL = attTargetVTOL.player; - } - } - } //else {displayMsg("manageDefVTOL: target VTOL NOT FOUND!!!!"); } - - } // if ( attTargetVTOL == NULLOBJECT ){ - } - } //else if ( attTargetVTOL != NULLOBJECT ){ - }//end alert is on - -} - -//=========================== END VTOL STUFF ======================================== -event buildBase(inactive) //event 8 -{ - local int _f,_r,_c,_v,_h,_l; - - ASSERT(player >= 0 and player < 8, "player out of bounds: buildBase " & player, player); - eventCheckTime[2] = gameTime; - - if ( lStopBuildingStructures ){ - //displayMsg("buildBase: stopped lMinBaseStructBuilt("& lMinBaseStructBuilt &")"); - exit; - } - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - - - boolResult = true; - droid = closestIdleDroid(buildGroup,baseX,baseY); - - if(droid == NULLOBJECT){ - exit; - } - - - - //check PlayerHQ first - if(_h == 0 and isStructureAvailable(playerHQ , player) ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(playerHQ, ref buildX, ref buildY, player); - if(boolResult){ - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST HQ _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, playerHQ, buildX, buildY ); - boolResult = false; - } - } - } - - //check factory as second - if(_f == 0 and isStructureAvailable(factory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(factory, ref buildX, ref buildY, player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, factory, buildX, buildY ); - boolResult = false; - } - } - } - } - - //check resLab - if(_r == 0 and isStructureAvailable(resLab , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(resLab, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST RESEARCH LAB _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, resLab, buildX, buildY ); - boolResult = false; - } - } - } - - //check cybfactory - if(_c == 0 and isStructureAvailable(cybFactory , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(cybFactory, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST CYBORG FACTORY _f("& _f &") _r("& _r &") _c("& _c &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, cybFactory, buildX, buildY ); - boolResult = false; - } - } - } - - //check lassat - if(_l == 0 and isStructureAvailable(lassat , player) and boolResult) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(lassat, ref buildX, ref buildY, player); - if(boolResult) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: BUILD FIRST LASSAT _f("& _f &") _r("& _r &") _c("& _c &") "); - //displayMsg("buildBase: nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - orderDroidStatsLoc(droid, DORDER_BUILD, lassat, buildX, buildY ); - boolResult = false; - } - } - } - - //displayMsg("buildBase: _f("& _f &") _r("& _r &") _c("& _c &") _v("& _v &") "); - //displayMsg("buildBase: lMinBaseStructBuilt("& lMinBaseStructBuilt &") nStructToBeBuilt("& nStructToBeBuilt &") nAI_Pers("& nAI_Pers &") ("& structsLimits[nAI_Pers][STR_TANK_FACTORY] &")("& structsLimits[nAI_Pers][STR_RESLAB] &")("& structsLimits[nAI_Pers][STR_CYB_FACTORY] &")("& structsLimits[nAI_Pers][STR_VTOL_FACTORY] &") "); - - //just validate the below rows - //droid = getADroid(buildGroup); - - - if( boolResult ) - { - - if ( nStructToBeBuilt >= 4){ nStructToBeBuilt = 0; } - - if ( nStructToBeBuilt == STR_TANK_FACTORY and _f >= structsLimits[nAI_Pers][STR_TANK_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_RESLAB and _r >= structsLimits[nAI_Pers][STR_RESLAB] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_CYB_FACTORY and _c >= structsLimits[nAI_Pers][STR_CYB_FACTORY] ){ - nStructToBeBuilt++; - } - - if ( nStructToBeBuilt == STR_VTOL_FACTORY and _v >= structsLimits[nAI_Pers][STR_VTOL_FACTORY] and isStructureAvailable(vtolFactory,player) ){ - nStructToBeBuilt++; - } - - //all base structs have been built! - if ( nStructToBeBuilt == 4 or (nStructToBeBuilt == 3 and !isStructureAvailable(vtolFactory,player)) ){ - nStructToBeBuilt = 0; - exit; - } - - //displayMsg("buildBase: nStructToBeBuilt("& nStructToBeBuilt &") "); - if( isStructureAvailable(structs[nStructToBeBuilt],player) ) - { - buildX = baseX; // pick a location - buildY = baseY; - if( pickStructLocation(structs[nStructToBeBuilt], ref buildX, ref buildY,player) ) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid == NULLOBJECT){ droid = pickCybEng(true); } - if( droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX ,buildY)){ - //displayMsg("buildBase: nStructToBeBuilt["& nStructToBeBuilt &"] _fact("& _f &") _resLab("& _r &") _cyb("& _c &") "); - //displayMsg("buildBase: buildGroup("& buildGroup.members &") harvester("& harvesterGroup.members &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,structs[nStructToBeBuilt],buildX,buildY); - nStructToBeBuilt++; - } - } - } - } - - }// if( droid != NULLOBJECT and boolResult) -} -//----------------------------------------- -event sendBackDamagedUnits(inactive) -{ - - //Check for untis to be repaired - eventCheckTime[3] = gameTime; - if(getStructure(repairFacility, player) != NULLOBJECT and toBeRepairedTankGroup.members>0) - { - - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if ( droid.order != DORDER_RTR ){ - orderDroid(droid,DORDER_RTR); - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") RTR with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedCyborgGroup.members &")"); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } else { - - //send in the base to be repaired by repair tank!! - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedTankGroup); - } - - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - - if ( droid.order != DORDER_RTB and droid.order != DORDER_RTR ) - { - if( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange ) - { - //displayMsg("*** sendBackDamagedUnits: Order droid ("& droid.id &") MOVE to baseX and baseY with health ("& droid.health &") in group toBeRepairedCyborgGroup ("& toBeRepairedCyborgGroup.members &")"); - orderDroid(droid, DORDER_RTB); - } - } //else{ displayMsg("*** sendBackDamagedUnits: damaged droid ("& droid.id &") already sent back to repair "); } - - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - } -} -//=============================================0 -event unitRepairSwitch(inactive) -{ - - eventCheckTime[4] = gameTime; - //displayMsg("unitRepairSwitch: unitRepairSwitch START "); - - //Check for untis to be repaired - if(getStructure(repairFacility, player) != NULLOBJECT or repairGroup.members > 0) - { - //defense tanks - initIterateGroup(tankDefGroup); - droid = iterateGroup(tankDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankDefGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankDefGroup); - } - - //attack tanks - initIterateGroup(tankGroup); - droid = iterateGroup(tankGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged tankGroup to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(tankGroup); - } - - //help group - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair and droid.propulsion != TrackedProp ) - { - groupAddDroid(toBeRepairedTankGroup, droid); - orderDroid(droid,DORDER_RTR); - //displayMsg("*** unitRepairSwitch1: move damaged units to toBeRepairedTankGroup ("& droid.id &") with health ("& droid.health &") added in group toBeRepairedTankGroup ("& toBeRepairedTankGroup.members &")"); - } - droid = iterateGroup(helpGroup); - } - - //cyborgs - defend - initIterateGroup(cyborgDefGroup); - droid = iterateGroup(cyborgDefGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair ) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgDefGroup); - } - - //cyborgs - attack - initIterateGroup(cyborgAttGroup); - droid = iterateGroup(cyborgAttGroup); - while(droid != NULLOBJECT) - { - if( droid.health < nDamageLevelRepair) - { - groupAddDroid(toBeRepairedCyborgGroup, droid); - //displayMsg("*** unitRepairSwitch1: Send back to repair cyborgDefGroup ("& droid.id &") with health ("& droid.health &")"); - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(cyborgAttGroup); - } - - //NO REPAIR FAC, NO REPAIR TRUCK switch back to tankDefGroup - } else { - if ( toBeRepairedTankGroup.members > 0 ){ - groupAddGroup(tankDefGroup,toBeRepairedTankGroup); - } - if ( toBeRepairedCyborgGroup.members > 0 ){ - groupAddGroup(cyborgDefGroup,toBeRepairedCyborgGroup); - } - } - - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedTankGroup); - droid = iterateGroup(toBeRepairedTankGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_TANK ) - { - //displayMsg("*** unitRepairSwitch: found healty tank ("& droid.id &")("& droid.health &")"); - if (droid.droidType == DROID_REPAIR) - { - //displayMsg("*** unitRepairSwitch: repairUnit ("& droid.id &") repaired and back to repairGroup -> health ("& droid.health &")"); - groupAddDroid(repairGroup,droid); - } - if (droid.droidType == DROID_WEAPON) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup,droid); - } - //mixed group checks!!! - if (droid.droidType == DROID_CYBORG and droid.droidType != DROID_CYBORG_CONSTRUCT) - { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("*** unitRepairSwitch: cyborg ("& droid.id &") repaired and back to cyborgDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedTankGroup); - } - - //check if units have been repaired and assign back to tank group - initIterateGroup(toBeRepairedCyborgGroup); - droid = iterateGroup(toBeRepairedCyborgGroup); - while(droid != NULLOBJECT) - { - if( droid.health > MIN_HEALT_SWITCH_TO_CYBORG ) - { - //displayMsg("*** unitRepairSwitch: tank ("& droid.id &") repaired and back to tankDefGroup -> health ("& droid.health &")"); - groupAddDroid(cyborgDefGroup,droid); - } else { - orderDroid(droid,DORDER_RTR); - } - droid = iterateGroup(toBeRepairedCyborgGroup); - } - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("unitRepairSwitch: unitRepairSwitch END ("& toBeRepairedCyborgGroup.members &")("& count &")"); - //} -} -//-------------------------------------------------------------- -event activateAttack( inactive ) -{ - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack,_rndTime; - local int _nCybUnitsToBeMoved,_nTotCybUnits,_nCybUnitsRequiredToAttack; - local bool _bUseCybUnitsToo; - - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _cybRequired,_tankRequired,_player; - local float _nMyPowerIndex,_nEnPowerIndex; - - eventCheckTime[22] = gameTime; - //if ( tankDefGroup.members < minDefDroids[nAI_Pers][MINDEF_TANKS] and cyborgDefGroup.members < minDefDroids[nAI_Pers][MINDEF_CYBORGS]){ - //exit; - //} - - // ---------------------------------------------------------------------- - //Check for Final Attack in 1vs1 game or if just one enemy player exists - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - if ( nEnemyPlayers == 1 and gameTime - tLastFinalAttack > 5*TIME_MINUTE and tankGroup.members == 0 and gameTime > 15*TIME_MINUTE) - { - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - _nEnUnitsTot = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( nLastEnemyPlayer, WUI_HP); - _nEnPowerIndex = getPowerIndex( nLastEnemyPlayer ); - - bFinalAttack_1vs1 = false; - //droid superiority - if ( _nMyUnitsTot > 15 and _nMyUnitsTot > _nEnUnitsTot*2 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*3 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsPower > _nEnUnitsPower*2 ){ bFinalAttack_1vs1 = true; } - if ( _nMyUnitsHP > _nEnUnitsHP*2 ){ bFinalAttack_1vs1 = true; } - } - //enemy with lower power - if ( _nMyPowerIndex > _nEnPowerIndex*2.0 ){ - if ( _nMyUnitsTot > 15 ){ - if ( _nMyUnitsTot > _nEnUnitsTot*2 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsPower > (float)_nEnUnitsPower*1.5 ){ bFinalAttack_1vs1 = true; } - if ( (float)_nMyUnitsHP > (float)_nEnUnitsHP*1.5 ){ bFinalAttack_1vs1 = true; } - } - } - printDebug1("activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") My_pow("& _nMyPowerIndex &")En_pow("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") tLastFinalAttack("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")"); - //dbg("dbg->activateAttack: Final Attack - tkdef("& tankDefGroup.members &") cybdef("& cyborgDefGroup.members &") tkatt("& tankGroup.members &") cybatt("& cyborgAttGroup.members &") pow("& _nMyPowerIndex &")("& _nEnPowerIndex &") my("& _nMyUnitsTot &"-"& _nMyUnitsPower &"-"& _nMyUnitsHP &") en("& _nEnUnitsTot &"-"& _nEnUnitsPower &"-"& _nEnUnitsHP &") ("& tLastFinalAttack &")("& nEnemyPlayers &") ["& bFinalAttack_1vs1 &"] bForceResPowUp("& bForceResPowUp &")",player); - } //else { dbg("dbg->activateAttack: gameTime("& gameTime &") ",player); } - - if (bFinalAttack_1vs1){ - if (helpGroup.members>0) {groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) {groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0) {groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0) {groupAddGroup(tankGroup, cyborgAttGroup);} - tLastFinalAttack = gameTime; - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nFinalAttacks++; - //dbg("dbg->activateAttack: ____________________ FINAL ATTACK ___________________" , player); - //dbg("dbg->activateAttack: FINAL ATTACK, ("& getPlayerName(player) &") attacks with ("& tankGroup.members &") units against ("& getPlayerName(nLastEnemyPlayer) &")" , player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - // ---------------------- virtual victory check - _player=0; - nTotEnemyDroids = 0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) and !friendlyPlayer(_player) ){ - nTotEnemyDroids = nTotEnemyDroids + (aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]); - } - _player++; - } - //send reinforcements by grouping them (min 8 droids) - if ( nTotEnemyDroids*4 < _nMyUnitsTot and _nMyUnitsTot > 8 ){ - if (helpGroup.members>0) { groupAddGroup(tankGroup, helpGroup);} - if (tankDefGroup.members>0) { groupAddGroup(tankGroup, tankDefGroup);} - if (cyborgDefGroup.members>0){ groupAddGroup(tankGroup, cyborgDefGroup);} - if (cyborgAttGroup.members>0){ groupAddGroup(tankGroup, cyborgAttGroup);} - if (!bTankAttIsOn){ - tLastTankAttack = gameTime; - bTankAttIsOn = true; - setEventTrigger(TankAttack,TankAttackTr); - printDebug1("activateAttack: Virtual Victory check is positive: TotEnemyDroids*4("& nTotEnemyDroids*4 &") < MyTotUnits("& _nMyUnitsTot &") and available droids > 8 "); - exit; - } - } - - // ================== TANK ATTACK ============================= - _nTotUnits = tankDefGroup.members; - _nUnitsToBeMoved = _nTotUnits - minDefDroids[nAI_Pers][MINDEF_TANKS];//MIN_DEFENDING_TANKS; - _nUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_TANKS]+MIN_ATTACKING_TANKS+nAttackingUnitsToAdd; - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _bUseCybUnitsToo = false; - - //force attack after some time by using both cyborgs and tanks droids. - if ( AIPersonality == AI_TURTLE ){ - _rndTime = (10*TIME_MINUTE + _random(900)); - } else { - _rndTime = (6*TIME_MINUTE + _random(900)); - } - if ( (gameTime > 15*TIME_MINUTE + tTotalAttack) and ( (gameTime - tLastTankAttack > _rndTime) or (gameTime - tLastCyborgAttack > _rndTime) ) ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - if ( nMapPower == LOW_POWER_MAP ){ - _bUseCybUnitsToo = true; - _nTotUnits = _nTotUnits + _nCybUnitsToBeMoved; - } - - if ( !bFinalAttack_1vs1 and tankGroup.members == 0 and alertLevel < RED_ALERT and _nTotUnits >= _nUnitsRequiredToAttack ) - { - //check time to avoid all tanks are re-assigned back to tankgroup after a withdraw - //do not attack if we have not enough units - if ( _bUseCybUnitsToo ){ - _nCybUnitsToBeMoved = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false); - } - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, _nUnitsToBeMoved, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with tanks ("& tankGroup.members &") _bUseCybUnitsToo ("& _bUseCybUnitsToo &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } - - //==================== CYBORG ATTACK ===================================== - //cyborgs - _nTotCybUnits = cyborgDefGroup.members; - _nCybUnitsRequiredToAttack = minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd; - _nCybUnitsToBeMoved = _nTotCybUnits - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( !bFinalAttack_1vs1 and alertLevel < RED_ALERT and _nTotCybUnits >= _nCybUnitsRequiredToAttack and gameTime > VALID_TIME_CYBATTACK and cyborgAttGroup.members == 0) - { - moveUnitsBetweenGRPs( cyborgAttGroup, cyborgDefGroup, _nCybUnitsToBeMoved, false ); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - //dbg("dbg->activateAttack: ("& getPlayerName(player) &") attacks with cyborg team units: ("& cyborgAttGroup.members &") ",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } - - //==================== HUMAN DERRICKS ===================================== - //attack human derrick with few defences if no targets in defend range - if ( AIPersonality == AI_CYBORG ){ - _cybRequired = 5 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - if ( attackCybObj == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &") - ("& cyborgDefGroup.members &")",player); - if (cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackCybObj = objHumanDerrick(false, 1, 8);//(bool bVTOLTarget, int _numDef, int _distInTiles - if ( attackCybObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(cyborgAttGroup, cyborgDefGroup, 5, false); - bCybAttIsOn = true; - tLastCyborgAttack = gameTime; - bAttackedHumanDerrick = true;//alternate attacks - nAttHumanPlayer++; - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with cyborgs ("& cyborgAttGroup.members &")",player); - setEventTrigger(CyborgAttack,CyborgAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } else { - _cybRequired = 3 + minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - _tankRequired = 2 + minDefDroids[nAI_Pers][MINDEF_TANKS]; - if ( objTargetTankDefGRP == NULLOBJECT and !bAttackedHumanDerrick){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 1 ("& _cybRequired &")("& _tankRequired &") - ("& cyborgDefGroup.members &")("& tankDefGroup.members &")",player); - if ( tankDefGroup.members >= _tankRequired and cyborgDefGroup.members >= _cybRequired){ - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick STEP 2",player); - attackTankObj = objHumanDerrick(false, 1, 8); - if ( attackTankObj != NULLOBJECT ){ - moveUnitsBetweenGRPs(tankGroup, cyborgDefGroup, 3, false); - moveUnitsBetweenGRPs(tankGroup, tankDefGroup, 2, true); - tLastTankAttack = gameTime; - bTankAttIsOn = true; - nAttHumanPlayer++; - bAttackedHumanDerrick = true;//alternate attacks - //dbg("dbg->activateAttack: '"& getPlayerName(player) &"' attacks human derrick with tanks ("& tankGroup.members &")",player); - setEventTrigger(TankAttack,TankAttackTr); - exit; - } //else { dbg("dbg->activateAttack: '"& getPlayerName(player) &"' no undefended human derricks to attack found",player); } - } - } - } - -} -//=========================================================================== -event TankAttack(inactive) -{ - - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: TankAttack " & player, player); - //if ( gameTime - lastDisplayAI >= 10 ){ - //dbg("dbg->TankAttack : tank ("& tankGroup.members &") bTankAlreadyGathered("& bTankAlreadyGathered &") targ("& targetPlayerTank &") x-Y("& tankAttackX &")("& tankAttackY &") ",player); - //} - - //do a preliminary check - if ( tankGroup.members < MIN_SURVIVOR_TANKS and !bAttackedHumanDerrick){ - if (tankGroup.members>0){ - groupAddGroup(tankDefGroup , tankGroup); - } - deactivateTankAttack(); - exit;//this is necessary otherwise the event proceeeds! - } - - //get target for the first attack, further targets are chosen below - if ( attackTankObj == NULLOBJECT and !bTankAlreadyGathered ){ - attackTankObj = getTargetObj(); - if ( attackTankObj != NULLOBJECT ){ - //dbg("dbg->TankAttack: Player '"& getPlayerName(player) & "' attacking with "& tankGroup.members &" units enemy player '"& getPlayerName(attackTankObj.player) &"'' at coord "& attackTankObj.x/TILE &"-"& attackTankObj.y/TILE , player); - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackTankObj.player) &" with "& tankGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackTankObj.player) ){ - nAttHumanPlayer++; - printDebug1("TankAttack: attacking human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("TankAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - } - - if ( attackTankObj == NULLOBJECT ){ - if ( bTankAlreadyGathered ){ - //get a new target in area - attackTankObj = objDroidTargetInRange(tankAttackX,tankAttackY,TILE*25,false); - if (attackTankObj == NULLOBJECT){ - attackTankObj = objStrTargetInRange(tankAttackX,tankAttackY,TILE*25); - } - - if (attackTankObj != NULLOBJECT){ - //collect info - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - orderGroupScoutCMD(tankGroup, tankAttackX, tankAttackY); - //dbg("dbg->TankAttack: attacking tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - //orderGroupObj( tankGroup, DORDER_ATTACK, attackTankObj ); - } else { - //dbg("dbg->TankAttack: deactivate attack",player); - groupAddGroup(tankDefGroup , tankGroup); - deactivateTankAttack(); - } - } //else { displayMsg("TankAttack: ________________ FIRST TARGET NOT FOUND ___________________"); } - exit; - - } else { // ____ attackTankObj != NULLOBJECT ______ - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerTank = attackTankObj.player; - targetPlayerVTOL = targetPlayerTank; - tankAttackX = attackTankObj.x; - tankAttackY = attackTankObj.y; - - //determine gathering positions, 12 tiles away from it - //send tanks to gathering positions - if ( !lTankSentToGatheringPoint ){ - if (nTankGatheringX <= 0 and nTankGatheringY <= 0){ - - count = random(3); - if ( count == 0 ){ //between bases - if ( attackTankObj.x > baseX ){ - count2 = baseX + (attackTankObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackTankObj.x)/2; - } - if ( attackTankObj.y > baseY ){ - count3 = baseY + (attackTankObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackTankObj.y)/2; - } - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nTankGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nTankGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - } - if ( count == 2 ){ //standard - nTankGatheringX = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 1, _distFromObj); - nTankGatheringY = getCoordRelated(attackTankObj.x, attackTankObj.y, baseX, baseY, 2, _distFromObj); - } - - } - //centre of the map. - if (nTankGatheringX <= 0 or nTankGatheringY <= 0) { - nTankGatheringX = (mapWidth*TILE)/2; - nTankGatheringY = (mapHeight*TILE)/2; - } - - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - lTankSentToGatheringPoint = true; - tTanksSentToGathering = gameTime; - } - - //check if tank group has arrived at gathring point, need to check the distance too!!! - if ( !bTankAlreadyGathered ){ - if ( (float)idleGroup(tankGroup) > (float)tankGroup.members*0.8 or distBetweenTwoPoints(tankGroup.x, tankGroup.y, nTankGatheringX, nTankGatheringY) < 4 * TILE or gameTime - tTanksSentToGathering > 2400 ) - { - bTankAlreadyGathered = true; - nTankGatheringX = -1; - nTankGatheringY = -1; - tTanksSentToGathering = 0; - orderGroupScoutCMD(tankGroup,tankAttackX,tankAttackY); - - } else { - - //just "rememeber" tanks where to go... - if ( gameTime - tTanksSentToGathering > 70 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(tankGroup,nTankGatheringX,nTankGatheringY); - }else{ - orderGroupLoc(tankGroup,DORDER_MOVE,nTankGatheringX,nTankGatheringY); - } - tTanksSentToGathering = gameTime; - } - } - - } else {//bTankAlreadyGathered == TRUE - - //check if target has been destroyed - if ( structInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) or droidInRange(targetPlayerTank, tankAttackX, tankAttackY, 2*TILE ) ){ - if ( gameTime - tTankAttackAction > 100 ){ - //dbg("dbg->TankAttack: attacking again tankAttackX("& tankAttackX/TILE &")-("& tankAttackY/TILE &")",player); - orderGroupScoutCMD(tankGroup,tankAttackX, tankAttackY);//DORDER_SCOUT - tTankAttackAction = gameTime; - } - } - - } - } -} -//=========================================================================== -event CyborgAttack(inactive)//Original event ID: xx (of 106) -{ - local int _distFromObj; - - ASSERT(player >= 0 and player < 8, "player out of bounds: CyborgAttack " & player, player); - //dbg("dbg->CyborgAttack: '"& getPlayerName(player) &"' cyborgs ("& cyborgAttGroup.members &") CALLED bCybAlreadyGathered("& bCybAlreadyGathered &") targ("& targetPlayerCyb &") x-Y("& cybAttackX &")("& cybAttackY &")",player); - - //do a preliminary check - if ( cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS and !bAttackedHumanDerrick){ - //displayMsg("CyborgAttack: ________________ STOP CYBORG ATTACK - cyborgAttGroup.members < MIN_SURVIVOR_CYBORGS___________________"); - //displayMsg("CyborgAttack: cyborgAttGroup.members ("& cyborgAttGroup.members &") < MIN_SURVIVOR_CYBORGS ("& MIN_SURVIVOR_CYBORGS &") alertLevel ("& alertLevel &") "); - if (cyborgAttGroup.members > 0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - exit; - } - - //get target - //displayMsg("CyborgAttack: ________________ START CYBORG ATTACK ___________________"); - - if ( attackCybObj == NULLOBJECT ){ - - if ( bCybAlreadyGathered ){ - //get a new target in area - attackCybObj = objDroidTargetInRange(cybAttackX,cybAttackY,TILE*25,false); - if (attackCybObj == NULLOBJECT){ - attackCybObj = objStrTargetInRange(cybAttackX,cybAttackY,TILE*25); - } - if (attackCybObj != NULLOBJECT){ - //collect info - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x; - cybAttackY = attackCybObj.y; - - //dbg("CyborgAttack: ________________ CYBORG ATTACK NEW TARGET IN AREA ___________________",player); - //dbg("CyborgAttack: move all ("& cyborgAttGroup.members &") attacking struct/droid ("& cybAttackX/128 &"-"& cybAttackY/128 &") ",player); - tCybAttackAction = gameTime; - orderGroupScoutCMD(cyborgAttGroup, cybAttackX, cybAttackX); - } else { - //displayMsg("CyborgAttack: ________________ CYBORG ATTACK DEACTIVATED - ALL TARGETS IN RANGE HAVE BEEN DESTROYED___________________"); - if (cyborgAttGroup.members>0){ - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - deactivateCybAttack(); - } - - } else { // NOT bCybAlreadyGathered - - //displayMsg("#### CyborgAttack: First target not found"); - attackCybObj = getTargetObj(); - if ( attackCybObj != NULLOBJECT ){ - dropBeaconToAllies("Player "& getPlayerName(player) & " attacking "& getPlayerName(attackCybObj.player) &" with "& cyborgAttGroup.members &" droids" ,attackTankObj.x, attackTankObj.y, 0, true); - dropBeaconToAllies("go!" ,attackTankObj.x, attackTankObj.y, 0, false); - if ( isHumanPlayer(attackCybObj.player) ){ - nAttHumanPlayer++; - printDebug1("CyborgAttack: attacking Human player '"& getPlayerName(attackTankObj.player) &"'"); - } else { - nAttAIPlayer++; - printDebug1("CyborgAttack: attacking AI player '"& getPlayerName(attackTankObj.player) &"'"); - } - } - exit; - } - - } else { //attackCybObj != NULLOBJECT - - //collect all obj info, later on this object could be dead... - _distFromObj = 13*TILE + (((mapWidth*TILE+mapHeight*TILE)/2) / 40 ); - targetPlayerCyb = attackCybObj.player; - targetPlayerVTOL = targetPlayerCyb; - cybAttackX = attackCybObj.x ; - cybAttackY = attackCybObj.y ; - - //determine gathering positions, 12 tiles away from it - //send cyborgs to gathering positions - if ( !lCybSentToGatheringPoint ){ - - if (nCybGatheringX <= 0 and nCybGatheringX <= 0){ - - count = random(3); - count2 = (mapWidth*TILE+mapHeight*TILE)/2; - - if ( count == 0 ){ - if ( attackCybObj.x > baseX ){ - count2 = baseX + (attackCybObj.x-baseX)/2; - } else { - count2 = baseX - (baseX-attackCybObj.x)/2; - } - if ( attackCybObj.y > baseY ){ - count3 = baseY + (attackCybObj.y-baseY)/2; - } else { - count3 = baseY - (baseY-attackCybObj.y)/2; - } - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 1 selected (between bases)"); - } - if ( count == 1 ){ //centre of the map - count2 = (mapWidth*TILE)/2; - count3 = (mapHeight*TILE)/2; - nCybGatheringX = getCoordRelated(count2, count3, baseX, baseY, 1, 1*TILE); - nCybGatheringY = getCoordRelated(count2, count3, baseX, baseY, 2, 1*TILE); - //displayMsg("### CyborgAttack: gathering point 2 selected (centre of Map)"); - } - if ( count == 2 ){ //standard - nCybGatheringX = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 1, _distFromObj); - nCybGatheringY = getCoordRelated(attackCybObj.x, attackCybObj.y, baseX, baseY, 2, _distFromObj); - //displayMsg("### CyborgAttack: gathering point 3 selected (standard)"); - } - - } - //centre of the map. - if (nCybGatheringX <= 0 or nCybGatheringY <= 0) { - //displayMsg("### CyborgAttack: had to force the gathering point in the centre of the map"); - nCybGatheringX = (mapWidth*TILE)/2; - nCybGatheringY = (mapHeight*TILE)/2; - } - - //displayMsg("CyborgAttack: ________________ SEND CYBORG TO GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: cSend ("& cyborgAttGroup.members &") Cyborgs to coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &") obj coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - lCybSentToGatheringPoint = true; - tCybSentToGathering = gameTime; - } - - //check if Cyborgs group has arrived at gathring point, need to check the distance too!!! - if ( !bCybAlreadyGathered ) { - - if ( (float)idleGroup(cyborgAttGroup) > (float)cyborgAttGroup.members*0.8 or distBetweenTwoPoints(cyborgAttGroup.x, cyborgAttGroup.y, nCybGatheringX, nCybGatheringY) < 2 * TILE or gameTime - tTanksSentToGathering > 2400) { - //displayMsg("CyborgAttack: ________________ CYBORGS ARRIVED AT GATHERING POINT ___________________"); - //displayMsg("CyborgAttack: ("& cyborgAttGroup.members &") Cyborgs arrrived at coord ("& nCybGatheringX/TILE &"-"& nCybGatheringY/TILE &") enemy ("& targetPlayerCyb &")"); - bCybAlreadyGathered = true; - nCybGatheringX = -1; - nCybGatheringY = -1; - tCybSentToGathering = 0; - orderGroupScoutCMD(cyborgAttGroup,cybAttackX,cybAttackY); - //displayMsg("CyborgAttack: cyborgs Attack player ("& targetPlayerCyb &") with ("& cyborgAttGroup.members &") at coord ("& cybAttackX/TILE &"-"& cybAttackY/TILE &")"); - } else { - //just "rememeber" cyborgs where to go... - if ( gameTime - tCybSentToGathering > 100 ){ - if (bAttackTeamAttacked){ - orderGroupScoutCMD(cyborgAttGroup,nCybGatheringX,nCybGatheringY); - }else{ - orderGroupLoc(cyborgAttGroup,DORDER_MOVE,nCybGatheringX,nCybGatheringY); - } - //displayMsg("CyborgAttack: remember ("& cyborgAttGroup.members &") cyborgs to gather at coord ("& nCybGatheringX/128 &"-"& nCybGatheringY/128 &") enemy ("& targetPlayerCyb &")"); - tCybSentToGathering = gameTime; - } - } - - } else {//if ( bCybAlreadyGathered ) - - //check if target has been destroyed - if ( structInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) or droidInRange(targetPlayerCyb, cybAttackX, cybAttackY, 2*TILE ) ){ - if ( gameTime - tCybAttackAction > 100 ){ - tCybAttackAction = gameTime; - //orderGroupLoc(cyborgAttGroup,DORDER_SCOUT,cybAttackX,cybAttackY); - orderGroupScoutCMD(cyborgAttGroup,cybAttackX, cybAttackY); - //dbg("CyborgAttack: cyborgs re-attack with ("& cyborgAttGroup.members &") cyborgs at coord ("& cybAttackX/128 &"-"& cybAttackY/128 &")",player); - } - } - - } - } ////attackCybObj != NULLOBJECT -} - - - -//================================================================ -// CALL_ATTACKED, player, ref myBaseObject, ref enemyBaseObject -event AIattacked(AIattackedTr) //event 20 -{ - local DROID _droid,_droid2; - local STRUCTURE _structure,_structure2; - local bool bProceed,_bAttackedByVTOL; - local int _nDistFromBase, _nDistFromEnemy, _nAA; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(AIattacked,inactive); - } - else - { - */ - ASSERT(player >= 0 and player < 8, "player out of bounds: myDroidAttacked " & player, player); - - bProceed = true; - - if ( gameTime - alertTime < 80 ){ exit; } - - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - _nDistFromEnemy = distBetweenTwoPoints(myBaseObject.x, myBaseObject.y, enemyBaseObject.x, enemyBaseObject.y); - _nDistFromBase = distBetweenTwoPoints(baseX, baseY, myBaseObject.x, myBaseObject.y); - } else { - exit; - } - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - if ( isVtol(_droid2) ) { - _bAttackedByVTOL = true; - } else { - _bAttackedByVTOL = false; - } - } - - //recall to base if buildGroup, buildDefGroup or cyborgConstructGroup - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == buildGroup or _droid.group == buildDefGroup or _droid.group == cyborgConstructGroup){ - if ( _nDistFromBase > nBaseRange ){ - //dbg("dbg->AIattacked: send RTB attacked truck ("& _droid.id &")",player); - orderDroid( _droid, DORDER_RTB); - } - } - } - - - //displayMsg("AIattacked: dist myOBJ from base/def Range ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj/en obj ("& _nDistFromEnemy/TILE &")"); - if (_nDistFromBase > nDefendRange){ - //dbg("attacked outside defend range: ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if( myBaseObject.type == OBJ_DROID ){ - _droid = objToDroid(myBaseObject); - if(_droid.group == tankGroup or _droid.group == cyborgAttGroup or _droid.group == helpGroup){ - if (enemyBaseObject.type == OBJ_DROID){ - if ( !_bAttackedByVTOL ) { - bAttackTeamAttacked = true;//activates single unit order instead of group order - } - } - } - } else {//myBaseObject.type == OBJ_STRUCTURE - //order VTOLs to defend this structure - if( !_bAttackedByVTOL ){ - if ( vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT ){ - _nAA = numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE); - if ( _nAA*3 < vtolDefendGr.members ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - //dbg("dbg->AIattacked: order VTOL to defend structure and attack at ("& enemyBaseObject.x/TILE &"-"& enemyBaseObject.y/TILE &"), dist from base("& _nDistFromBase/TILE &")",player); - } - } - } - } - exit; - } - - //check if attacked by mortars!!! - if ( !_bAttackedByVTOL ){ - if ( _nDistFromEnemy > 16*TILE and _nDistFromEnemy < 19*TILE ){ - bAttackedByMortars = true;//activate research - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by long range weapons ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - bProceed = true; //send also def troops to attack - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); //build - //attacked by ripple rockets or other very long range kinetic turrets - } else if ( _nDistFromEnemy >= 19*TILE ){ - bAttackedByLongRangeWeap = true; - nKineticX = myBaseObject.x; - nKineticY = myBaseObject.y; - //dbg("dbg->AIattacked: '"& getPlayerName(player) &"' attacked by very long range weapon ("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist my obj en obj ("& _nDistFromEnemy/TILE &")",player); - if ( numEnemyAAInRange(enemyBaseObject.x, enemyBaseObject.y, AA_THREAT_RANGE) < 2 ){ - defTargetVTOL = enemyBaseObject; - targetPlayerVTOL = enemyBaseObject.player; - bVTOLTargetIsDerrick = false; - } - if ( _nDistFromEnemy >=19 and _nDistFromEnemy <= 22 ){ - bProceed = true; - } else { - bProceed = false; //too far away - } - setEventTrigger(defFromLongRangeWeap,defFromLongRangeWeapTr); - } else { - //dbg("dbg->AIattacked: Not Attacked by long range weapons",player); - bProceed = true; - } - } - - if(bProceed and gameTime - alertTime > 50){ - if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - - if (enemyBaseObject.type == OBJ_DROID){ - _droid2 = objToDroid(enemyBaseObject); - attackedByDroid(_droid2); - } - if (enemyBaseObject.type == OBJ_STRUCTURE){ - _structure2 = objToStructure(enemyBaseObject); - attackedByStruct(_structure2); - } - - //displayMsg("AIattacked: ACTIVATED alertTime=("& gameTime &")"); - if ( !_bAttackedByVTOL ){ - - - if (gameTime - alertTime > 10){ - gatherDefTankX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 8*TILE); - gatherDefTankY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 8*TILE); - gatherDefCybX = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 1, 12*TILE); - gatherDefCybY = getCoordRelated(myBaseObject.x, myBaseObject.y, baseX, baseY, 2, 12*TILE); - //dbg("dbg->AIattacked: Attack data stored: base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")",player); - printDebug1("AIattacked: Attack data stored, base("& baseX/TILE &"-"& baseY/TILE &") myOBJ("& myBaseObject.x/TILE &"-"& myBaseObject.x/TILE &") gath("& gatherDefTankX/TILE &"-"& gatherDefTankY/TILE &") dist myOBJ from base("& _nDistFromBase/TILE &"/"& nDefendRange/TILE &") dist myOBJ from EnOBJ("& _nDistFromEnemy/TILE &")"); - } - - alertTime = gameTime; - alertIsOn = true; - alertX = enemyBaseObject.x; - alertY = enemyBaseObject.y; - - //remember coord of attacked obj: build defences - if ( gameTime - nLastDefSpotUpdate > 5*TIME_MINUTE ) { - defSpotX = myBaseObject.x; - defSpotY = myBaseObject.y; - nLastDefSpotUpdate = gameTime; - } - } - - } // if(enemyBaseObject != NULLOBJECT and myBaseObject != NULLOBJECT){ - } //if(bProceed and gameTime - alertTime > 50){ - //} -} -//-------------------------------------------------------------- -event manageDefTank( inactive ) -{ - - local int _x,_y,_x1,_y1, _nDist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefTank " & player, player); - eventCheckTime[6] = gameTime; - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageDefTank: defTK ("& tankDefGroup.members &") at("& tankDefGroup.x/TILE &"-"& tankDefGroup.y/TILE &") alertIsOn ("& alertIsOn &") alertX ("& alertX/TILE &")("& alertY/TILE &") alertTime ("& alertTime &") alert level ("& alertLevel &")______"); - //} - - if( alertLevel == RED_ALERT and gameTime > 10*TIME_MINUTE ){ - if ( alertX >= 0 and alertY >= 0 ){ - dropBeaconToAllies("help" , alertX, alertY, 0, true); - dropBeaconToAllies("help" , alertX, alertY, 0, false); - } - } - - - if( tankDefGroup.members == 0 ){ exit; } - - if ( gatherDefTankX >= 0 and gatherDefTankY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefTankX,gatherDefTankY,baseX,baseY); - //bring def units back at home - if ( count2 > nDefendRange ){ - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefTankX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefTankY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - //check is not -1; - if ( gatherDefTankX == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - if ( gatherDefTankY == -1 ){ gatherDefTankX = baseX; gatherDefTankY = baseY; } - - //if an ALERT is on send to ALERT coord - if ( alertIsOn ){ - - //displayMsg("manageDefTank: ______ ("& distBetweenTwoPoints(baseX,baseY,alertX,alertY)/TILE &")/("& nDefendRange/TILE &")________________"); - //if in baseRange attack with all Deftanks otherwise wait until enough forces are collected - _nDist = distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,alertX,alertY); - if ( _nDist > 1*TILE and gameTime - tDefTankAction > 50 and (tankDefGroup.members >= MIN_DEFUNIT_DEFEND) ){ - orderGroupScoutCMD(tankDefGroup,alertX,alertY); - tDefTankAction = gameTime; - } - - } else { //alert is not ON - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //get a target or gather coord - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y,baseX,baseY) < nDefendRange) - { - - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - if ( objTargetTankDefGRP == NULLOBJECT ){ - objTargetTankDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - - //target found! - if ( objTargetTankDefGRP != NULLOBJECT and tankDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - bAttackedHumanDerrick = false;//alternate attacks - - if ( gameTime - tDefTankAction > 60 ){ - if ( distBetweenTwoPoints(tankDefGroup.x, tankDefGroup.y, objTargetTankDefGRP.x, objTargetTankDefGRP.y) > 2*TILE ){ - //displayMsg("manageDefTank: _____________attacking enemy in def range__________"); - orderGroupScoutCMD(tankDefGroup,objTargetTankDefGRP.x,objTargetTankDefGRP.y); - tDefTankAction = gameTime; - } - } - - } else {//no enemy in range, return to gathering point - - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60){ - //displayMsg("manageDefTank: _____________back to gathering point __________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - } else {//return togathering point - - objTargetTankDefGRP = NULLOBJECT; - if ( distBetweenTwoPoints(tankDefGroup.x,tankDefGroup.y,gatherDefTankX,gatherDefTankY) > 3*TILE and gameTime - tDefTankAction > 60) - { - //displayMsg("manageDefTank: _____________back to gathering point (1)__________"); - orderGroupScoutCMD(tankDefGroup,gatherDefTankX,gatherDefTankY); - tDefTankAction = gameTime; - } - - } - - - }//alertIsOn -} - -//====================================================== -event manageDefCyborgs (inactive)//event 18!!!! -{ - - local int _nUnitsToBeMoved,_nTotUnits,_nUnitsRequiredToAttack; - local int _x,_y,_x1,_y1,_nDist; - - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageDefCyborgs " & player, player); - eventCheckTime[5] = gameTime; - //if ( gameTime - lastDisplayAI >= 90 ){ - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") ("& alertX &"-"& alertY &") "); - //} - - if( cyborgDefGroup.members == 0 ){ exit; } - - if ( gatherDefCybX >= 0 and gatherDefCybY >= 0 ){ - count2 = distBetweenTwoPoints(gatherDefCybX,gatherDefCybY,baseX,baseY); - if ( count2 > nDefendRange ){ - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - } else { - gatherDefCybX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, 8*TILE); - gatherDefCybY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, 8*TILE); - } - if ( gatherDefCybX == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - if ( gatherDefCybY == -1 ){ gatherDefCybX = baseX; gatherDefCybY = baseY; } - - if ( alertIsOn ) - { - - //set alert coord if not done already - if (cybAlertX < 0 or (cybAlertX != alertX) ){ - if(alertX > 0){ - cybAlertX = alertX; - cybAlertY = alertY; - } - } - - //go to alert coord - _nDist = distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,alertX,alertY); - //displayMsg("manageDefCyborgs: cyborgs ("& cyborgDefGroup.members &") CALLED ("& alertIsOn &") _nDist("& _nDist/TILE &")"); - if ( _nDist > 1*TILE and gameTime - tDefCybAction > 50 and (cyborgDefGroup.members >= MIN_DEFCYB_DEFEND)){ - orderGroupScoutCMD(cyborgDefGroup,cybAlertX,cybAlertY); - tDefCybAction = gameTime; - } //else{ displayMsg("####### manageDefCyborgs: cybAlertX < 0??? "); } - - } else {//def alert not active - - if (cyborgDefGroup.members >= MIN_DEFUNIT_ATTACK ){ - - //reset alert coord - if (cybAlertX > 0){cybAlertX = -1;cybAlertY = -1;} - - //enemy droid or struct in Cyborg Range? - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, baseX, baseY); - if ( count < nDefendRange ){ - - //enemies in nDefendRange? - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objStrTargetInRange(baseX,baseY,nDefendRange); - } - if ( objTargetCybDefGRP == NULLOBJECT ){ - objTargetCybDefGRP = objDroidTargetInRange(baseX,baseY,nDefendRange,false); - } - //if no targets go back to gathering points - if ( objTargetCybDefGRP == NULLOBJECT ){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } else { - //Attack enemy in defend range!!! - if ( gameTime - tDefCybAction > 60 ){ - count = distBetweenTwoPoints(cyborgDefGroup.x, cyborgDefGroup.y, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - if ( count > 2*TILE ){ - orderGroupScoutCMD(cyborgDefGroup, objTargetCybDefGRP.x, objTargetCybDefGRP.y); - tDefCybAction = gameTime; - } - } - - } - - } else { //count > nDefendRange, send units back!! - - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - - } - - } else {//cyborgDefGroup.members < MIN_DEFUNIT_ATTACK - - if ( gameTime - tDefCybAction > 60){ - if ( distBetweenTwoPoints(cyborgDefGroup.x,cyborgDefGroup.y,gatherDefCybX,gatherDefCybY) > 3*TILE and gameTime - tDefCybAction > 60){ - orderGroupScoutCMD(cyborgDefGroup,gatherDefCybX,gatherDefCybY); - tDefCybAction = gameTime; - } - } - } - } //alertIsOn -} -//=================================================================== -//manages idle buildGrp,harvGrp,buildDefGrp and CybEng Grp -//does not use any money, only help and repairTaks -event manageIdleTrucks(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageIdleTrucks " & player, player); - eventCheckTime[7] = gameTime; - //dbg("manageIdleTrucks: ________________ START 1__________________",player); - if ( gameTime < 300 ) { exit; } - - boolResult = true; - boolResult2 = true; - boolResult3 = true; - - _idleTruck = pickDefTruck(true); - if (_idleTruck == NULLOBJECT){ - _idleTruck = pickCybEng(true); - } - if (_idleTruck == NULLOBJECT){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - boolResult = false; - - //force helpbuild of repair Facility first - if (_idleTruck != NULLOBJECT){ - initEnumStruct(FALSE,repairFacility,player,player); - structure = enumStruct(); - while (structure != NULLOBJECT){ - if(!structureComplete(structure)){ - if ( !threatInRange(player,structure.x, structure.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, structure.x, structure.y) ){ - //displayMsg("**** manageIdleTrucks: found a repairFacility not complete for droid ("& _idleTruck.id &") "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,structure); - } - } //else {displayMsg("manageIdleTrucks: there is some threat in range of repairFacility");} - } - structure = enumStruct(); - } - } - - if( buildDefGroup.members>0 ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !repairStructs(BUILDDEF_GRP) ){ - if ( !helpBuild(BUILDDEF_GRP) ){ - boolResult = helpBuild(BUILDDEF_GRP); - } - } //else {displayMsg("manageIdleTrucks: - nothing to do for BUILDDEF_GRP");} - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 2__________________"); } - if( cyborgConstructGroup.members>0 ){ - harvestNearOilRes(); - if ( !repairStructs(CYBENG_GRP) ){ - if (!repairDefStructs(BUILDDEF_GRP)){ - if ( !helpBuild(CYBENG_GRP) ){ - if ( !CE_helpBuildGateways() ){ - boolResult3 = repairDefStructs(CYBENG_GRP); - //if( !boolResult3 and gameTime > TIME_HARVESTING_PHASE ){ - //harvestNearOilRes(); - //} - } //else {displayMsg("manageIdleTrucks: - nothing to do for CYBENG_GRP");} - } - } - } - } - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 4__________________"); } - if( buildGroup.members>0 and lMinBaseStructBuilt ){ - if (!helpBuild(BUILD_GRP)){ - if ( !repairStructs(BUILD_GRP) ){ - boolResult2 = repairDefStructs(BUILD_GRP); - }// else {displayMsg("manageIdleTrucks: - nothing to do for BUILD_GRP");} - } - } - - //exit;// problems before - //if ( gameTime - lastDisplayAI >= 20 ){ displayMsg("manageIdleTrucks: ________________ START 5__________________"); } - //send all idle back to the base!!! - sendIdleBackToTheBase(BUILD_GRP); - sendIdleBackToTheBase(CYBENG_GRP); - sendIdleBackToTheBase(BUILDDEF_GRP); - - //if ( gameTime - lastDisplayAI >= 80 ){ displayMsg("manageIdleTrucks: ________________ STOP 6__________________");} - - -} -//================================================ -event manageRepairTeam(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageRepairTeam " & player, player); - - //if ( gameTime - lastDisplayAI >= 80 ){ - //displayMsg("manageRepairTeam: _____________ START 1("& toBeRepairedCyborgGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - //} - if (repairGroup.members > 0){ - - - //displayMsg("manageRepairTeam: _____________ START 2("& tankGroup.members &")("& toBeRepairedTankGroup.members &")("& repairGroup.members &") _______________"); - boolResult = true; - - - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - //displayMsg("manageRepairTeam: _____________ START 3 ("& droid2.id &")_______________"); - droid = nearestDroidToBeRepaired(toBeRepairedTankGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in TankRepGroup ("& droid.id &"), health ("& droid.health &")"); - boolResult = false; - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup ("& droid.id &") too far away from base"); } - } //else { displayMsg("manageRepairTeam: toBeRepairedTankGroup droid not found"); } - } //else { displayMsg("manageRepairTeam: idle repair droid not found"); } - - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(toBeRepairedCyborgGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(harvesterGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(buildDefGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY); - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(cyborgConstructGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - - if (boolResult){ - droid2 = idleRepairDroid(baseX,baseY);//this picks up - if ( droid2 != NULLOBJECT ) - { - droid = nearestDroidToBeRepaired(repairGroup, droid2.x, droid2.y); - if ( droid != NULLOBJECT){ - if( droid.id != droid2.id ){ - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) < nBaseRange ) { - orderDroidObj(droid2, DORDER_DROIDREPAIR, droid); - //displayMsg("*** manageRepairTeam: found unit in repairGroup ("& droid.id &") to be repaired, health ("& droid.health &")"); - boolResult = false; - } - } - } - } - } - - //modify -> force return to base even if not idle - initIterateGroup(repairGroup); - droid = iterateGroup(repairGroup); - while(droid != NULLOBJECT) - { - if ( distBetweenTwoPoints( droid.x, droid.y, baseX, baseY) > nBaseRange+5*TILE ) { - //displayMsg("*** manageRepairTeam: send repair tank to RTB"); - orderDroid(droid, DORDER_RTB); - } - droid = iterateGroup(repairGroup); - } - - }//else{displayMsg("*** manageRepairTeam: No repair tanks found");}// end if members > 0 - -} - -// ===================================================================== -event updateBaseDetails(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: updateBaseDetails " & player, player); - eventCheckTime[8] = gameTime; - - updateBaseRange(); - updateBaseCoord(); - updateBeacons(); - - //get all players stats - updatePlayersStats(); - - //units to attack with tanks - if ( tChangeTimeTankToAdd == 0 ){ tChangeTimeTankToAdd = tLastTankAttack; } - if ( gameTime - tChangeTimeTankToAdd > TIME_CHANGE_TANKSTOADD ){ - nAttackingUnitsToAdd = _random(MAX_ATTACK_TANKS_ADD); - nCybAttUnitsToAdd = _random(MAX_ATTACK_CYBORG_ADD); - tChangeTimeTankToAdd = gameTime; - } - - - //store the oliRes to get at the beginning - if( nTotOilInAtStart < nFreeOilRes ){ - nTotOilInAtStart = nFreeOilRes; - } - - updateDefendRange(); - - //checking if I have min numb of derricks; - if ( nPlayersInGame > 1 and nTotOilInAtStart > 0 ){ - if ( nMyDerricks-nDerricksAtStart < nTotOilInAtStart/nPlayersInGame ){ - bNeedDerrick = true; - } else { - bNeedDerrick = false; - } - } - - //build defense queue - count = 0; - pickDefQueueDepth = 0; - while(count < numDefStructs ) - { - if(isStructureAvailable(defStructs[count],player)){ - pickDefQueue[pickDefQueueDepth] = defStructs[count]; - pickDefQueueDepth = pickDefQueueDepth + 1; - } - count = count + 1; - } - - //build wall defense queue - count = 0; - pickWallDefQueueDepth = 0; - while( count < numWallWeaps ) - { - if( isStructureAvailable(wallWeaps[count],player) ){ - pickWallDefQueue[pickWallDefQueueDepth] = wallWeaps[count]; - pickWallDefQueueDepth = pickWallDefQueueDepth + 1; - } - count = count + 1; - } - - //Fortresses queue - count = 0; - pickFortQueueDepth = 0; - while(count < numFortressDef) - { - if(isStructureAvailable(fortressDef[count],player) ){ - pickFortQueue[pickFortQueueDepth] = fortressDef[count]; - pickFortQueueDepth = pickFortQueueDepth + 1; - } - count = count + 1; - } - - //update structs queue - count = 0; - pickStrQueueDepth = 0; - while(count < numStructs) - { - if(isStructureAvailable(structs[count],player) ) - { - pickStrQueue[pickStrQueueDepth] = structs[count]; - pickStrQueueDepth = pickStrQueueDepth + 1; - } - count = count + 1; - } - - -} - -// ============================ Debug messages==================== -event showPlayerInfo (inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - boolResult = true; -} - -//----------------------------------------------------------------- -event buildRepFirst(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.5 " & player, player); - - eventCheckTime[9] = gameTime; - - if( !lStopBuildRepFacility ) - { - //check on quantity and avoid multiple contruction at time, build max repFac - 1 to keep one - // repFac to support attack team - if( numStructsByType(repairFacility, player) < MAX_REPAIRFAC and (gameTime - nLastTimeBuiltRepFac) > 600 ) - { - boolResult = false; - if ( isStructureAvailable(repairFacility, player) ) - { - //returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, nBaseRange/4); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, nBaseRange/4); - - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY,player); - //DylanDog - BUG on BP2.92, the check on struct availability was not made - if(boolResult) - { - droid = closestIdleDroid(buildGroup,buildX,buildY); - if(droid != NULLOBJECT) - { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD,repairFacility, buildX,buildY); - nLastTimeBuiltRepFac = gameTime; - } - } - } - } - } - } - -} - - -//====================================ADVANCED HARVESTER SCRIPT========================== -event harvesterOperate(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: harvesterOperate " & player, player); - eventCheckTime[10] = gameTime; - - //displayMsg("harvestOperate: called ("& bOilResLeft &")"); - - if ( !bOilResLeft ){ exit; } - - //stop moving to oilRes if a derrick is already built in that position or if a threat is present - stopDroidHarvesting(); - - _oilRes = NULLOBJECT; - - //reset if necessary oilResTargetId, oilResTargetX, oilResTargetY - checkDerrickIsBuilt(player); - - //nearest oilRes to base, try to pick up the nearest to the base as it is - //the easier to defend. - droid = closestIdleDroid(harvesterGroup,baseX, baseY); - if( droid != NULLOBJECT ) - { - _oilRes = closestOilRes(droid, droid.x, droid.y);//uses droidCanReach - } //else { displayMsg("harvesterOperate: no idle harvester trucks found"); } - //get the number of Derricks built - if ( _oilRes != NULLOBJECT ) - { - if ( nMyDerricks < numMaxDerricks ) - { - //to avoid another droid target this oliRes - if( gameTime < TIME_HARVESTING_PHASE ){ - - _nOilRes = getOilResTargetFree(); - if ( _nOilRes > -1 and droidCanReach(droid, _oilRes.x, _oilRes.y) ){ - oilResTargetId[_nOilRes] = _oilRes.id; - oilResTargetX[_nOilRes] = _oilRes.x; - oilResTargetY[_nOilRes] = _oilRes.y; - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //dbg("*** harvestOperate: droid ("& droid.id &") TARGET OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - } - //else { - //dbg("*** harvestOperate: droid ("& droid.id &") ALREADY TARGETED OilRes (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")",player ); - //} - - } else {//============= HARVEST WITHOUT CHECKING oliRes TARGET - - //Check this oilRes is not too far away - //count = ((mapWidth+mapHeight)/2)*TILE; - //count = (count/3*2);//2/3 of the map - //count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 < count and droidCanReach(droid, _oilRes.x, _oilRes.y) ) - { - - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _oilRes.x, _oilRes.y); - //displayMsg("*** harvestOperate: droid (" & droid.id & ") build DERRICK (" & _oilRes.id & ") oilResTargetId[" & _nOilRes & "] coord (" & _oilRes.x/TILE & "-" & _oilRes.y/TILE & ")" ); - } //else { displayMsg("harvesterOperate: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); } - } - } - } -} - - -//====================================================================== -event truckGroupSlider(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds: truckGroupSlider " & player, player); - eventCheckTime[11] = gameTime; - //displayMsg("truckGroupSlider 1: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - //at this time the harvesting phase should be finished - if ( gameTime > TIME_HARVESTING_PHASE ){ - - //harvester are not required, move them to buildGRP and buildDefGRP - if ( !bOilResLeft ){ - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - - } else { - - if ( harvesterGroup.members == 0 ){ - if ( buildGroup.members > buildDefGroup.members ){ - - //_oilRes = closestOilRes(droid, baseY, baseX); - droid = closestIdleDroid(buildGroup,baseX,baseY); - if (droid == NULLOBJECT){ droid = getADroid(buildGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - - } else { - - if (droid == NULLOBJECT){ droid = pickDefTruck(true); } - if (droid == NULLOBJECT){ droid = getADroid(buildDefGroup); } - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 2b - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } - - } else {//initial phase, keep at least 2 harvester trucks, 1 buildGrp and 1 defGrp - - if ( bOilResLeft ){ - if ( harvesterGroup.members < 2 ){ - if ( buildDefGroup.members >= 1 ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4a - added a droid in harvesterGroup ("& harvesterGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - if ( harvesterGroup.members < 2 ){ - if ( buildGroup.members > 1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 4b - added a droid in harvesterGroup ("& buildGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(harvesterGroup, droid ); - } - } - } - } else { - if ( harvesterGroup.members > 0 ){ - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( buildGroup.members > buildDefGroup.members ){ - //displayMsg("truckGroupSlider: Opt 1a - added a droid in buildDefGroup ("& buildDefGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } else { - //displayMsg("truckGroupSlider: Opt 1b - added a droid in buildGroup ("& buildGroup.members &") from harvesterGroup ("& harvesterGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - droid = iterateGroup(harvesterGroup); - } - } - } - - }//gametime > TIME_HARVESTING_PHASE - - //ensure a bit of balance between buildGrp and buildDef GRP - if ( buildDefGroup.members > buildGroup.members ){ - droid = getADroid(buildDefGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1c - added a droid in buildGroup ("& buildGroup.members &") from buildDefGroup ("& buildDefGroup.members &")"); - groupAddDroid(buildGroup, droid ); - } - } - - if ( buildGroup.members > buildDefGroup.members+1 ){ - droid = getADroid(buildGroup); - if (droid != NULLOBJECT){ - //displayMsg("truckGroupSlider: Opt 1d - added a droid in buildDefGroup ("& buildDefGroup.members &") from buildGroup ("& buildGroup.members &")"); - groupAddDroid(buildDefGroup, droid ); - } - } - - //displayMsg("truckGroupSlider 2: b("& buildGroup.members &") d("& buildDefGroup.members &") h("& harvesterGroup.members &") "); - -} - -//============================================================================ -event defendDerrick(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendDerrick " & player, player); - eventCheckTime[12] = gameTime; - - if (lStopBuildDefDerricks){exit;} - //displayMsg("_______________ defendDerrick called 1______________"); - - //also checks there are already enough def around the derrick - _derrick = closestDerrickToDefend(); - if(gameTime>300 and _derrick != NULLOBJECT){//check on time is to avoid this event starts before AIbrain - //this is the difference against event harvestOperate - //displayMsg("_______________ defendDerrick called 2______________"); - - droid = pickDefTruck(false); - - if(droid != NULLOBJECT) - { - - _defStruct = getDefStruct(); - - if( isStructureAvailable(_defStruct,player) ) - { - buildX = _derrick.x ; - buildY = _derrick.y ; - if(!threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false)){ - if(pickStructLocation(_defStruct, ref buildX, ref buildY,player)) { - if (droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc(droid, DORDER_BUILD, _defStruct, buildX, buildY); - //displayMsg("**** defendDerrick droid ("& droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] - derrick ("& _derrick.id &")" ); - } - } - } //else { displayMsg("defendDerrick : some threat in range") ;} - } //else { displayMsg("defendDerrick : structure no available") ;} - } //else { displayMsg("defendDerrick : NO idle trucks found") ; } - } //else { displayMsg("defendDerrick : NO DERRICKS FOUND???"); } -} - -//============================================================================ -// build a power gen for every 4 derricks. VITAL! -event buildPowerGenerators(inactive) -{ - - ASSERT(player >= 0 and player < 8, "player out of bounds:.13 " & player, player); - eventCheckTime[13] = gameTime; - - //search for incompleted structure fist - boolResult = true; - initEnumStruct(false,powGen,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if ( !structureComplete(structure) ){ - droid = closestIdleDroid(buildGroup,structure.x,structure.y); - if( droid != NULLOBJECT ) - { - if (droidCanReach(droid, structure.x, structure.y) ){ - //displayMsg("*** buildPowerGenerators: completing Power Generator ("& structure.id &")"); - orderDroidObj(droid,DORDER_HELPBUILD,structure); - boolResult = false; - } - } //else { displayMsg("*** buildPowerGenerators: completing powGen - DROID NOT FOUND"); } - } //else { displayMsg("*** buildPowerGenerators: struct is complete"); } - structure = enumStruct(); - } - - if( boolResult and (numStructsByType(powGen, player) * 4) < numStructsByType(derrick, player) and (gameTime - tLastPowerGen) > 300 ) - { - buildX = baseX; - buildY = baseY; - boolResult = pickStructLocation(powGen, ref buildX, ref buildY,player); - if(boolResult) - { - droid = closestIdleDroid(buildGroup,baseX,baseY); - if( droid != NULLOBJECT ){ - if ( droidCanReach(droid, buildX, buildY) ) - //displayMsg("*** buildPowerGenerators: building Power Generator - Derricks ("& count &") powGen ("& count2 &") last build ("& tLastPowerGen &"), ("& (gameTime - tLastPowerGen)/10 &") secs ago"); - orderDroidStatsLoc(droid, DORDER_BUILD,powGen, buildX,buildY); - tLastPowerGen = gameTime; - } - } - } - -} -//------------------------------------- -event defendGatewaysPoint(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds: defendGatewaysPoint " & player, player); - eventCheckTime[14] = gameTime; - _idleTruck = NULLOBJECT; - _notIdleTruck = NULLOBJECT; - //-------------------------------- - //displayMsg("defendGatewaysPoint: defTanks("& buildDefGroup.members &") pickWallDefQueueDepth("& pickWallDefQueueDepth &")nRealGatewaysFound("& nRealGatewaysFound &") numGTW("& nRealGatewaysFound &") defStrAtGTW("& numDefStrAtGateway &")"); - - if( buildDefGroup.members < 0 or lStopBuildDefGateway ) - { exit; } - - //defend real gateways if they exists - if ( nRealGatewaysFound == 0){ - setEventTrigger(defendGatewaysPoint,inactive); - exit; - } - - _idleTruck = pickDefTruck(false); - if ( _idleTruck == NULLOBJECT ){ - //displayMsg("defendGatewaysPoint: _____________EXIT no idle trucks ("& buildDefGroup.members &")_____________"); - exit; - } - - count = 0; - boolResult = true; - while ( count < nRealGatewaysFound and boolResult) - { - count2 = numFriendlyWeapStructsInRange(player, aGatewayPosX[count], aGatewayPosY[count], 2*TILE, false); - //displayMsg("defendGatewaysPoint: _____________ GTW("& count &"/"& nRealGatewaysFound &") numDefStrAtGateway("& count2 &"/"& numDefStrAtGateway &")_____________"); - if ( count2 < numDefStrAtGateway and !threatInRange(player, aGatewayPosX[count], aGatewayPosY[count], THREAT_RANGE_TILES*128, false)){ - buildGatewayDef(_idleTruck, count); - boolResult = false;//exit the loop - } - count++; - } - -} - -//======================================================================= -event defendBase(inactive) -{ - local STRUCTURESTAT _defStruct; - - ASSERT(player >= 0 and player < 8, "player out of bounds: defendBase " & player, player); - eventCheckTime[15] = gameTime; - - if(pickDefQueueDepth <= 0 and pickWallDefQueueDepth <= 0 and gameTime > 600) { - //dbg("dbg->defendBase: DEFENSE ARRAYS ARE EMPTY !!!!!",player); - exit; - } - - if (!lStopBuildDef and gameTime > 2*TIME_MINUTE ){//hack, check time to avoid building at very beginning - - droid = pickDefTruck(false); - if( droid != NULLOBJECT ) { - - count = random(100); - if ( AIPersonality == AI_TURTLE ) { count = count+25; } - if ( pickFortQueueDepth > 0 and count > 75 and lMinBaseStructBuilt){ - count = random(pickFortQueueDepth); - _defStruct = pickFortQueue[count]; - } else { - _defStruct = getDefStruct(); - } - - // ----------- build! ---------------- - if(isStructureAvailable(_defStruct,player)) - { - - if( defSpotX > 0 and defSpotY > 0 ){ - //best option - buildX = defSpotX; - buildY = defSpotY; - } else { - if ( nRealGatewaysFound > 0){ - //build near/direction the gateways - count = random(nRealGatewaysFound); - buildX = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, aGatewayPosX[count], aGatewayPosY[count], 2, count*TILE); - } else { - //last resort chance - count = 5+random(7); - buildX = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 1, count*TILE); - buildY = getCoordRelated(baseX, baseY, mapWidth*TILE/2, mapHeight*TILE/2, 2, count*TILE); - } - } - - //check number of def already built in area - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_SPOT){ - boolResult = pickStructLocation(_defStruct, ref buildX, ref buildY,player); - if(boolResult == TRUE) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } else { - //force the building every tot min regardless of the def already built... - if ( gameTime - tLastbuildBaseDef > TIME_TOFORCE_BUILDDEF){ - if( pickStructLocation(_defStruct, ref buildX, ref buildY, player) ) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("defendBase: FORCE building base defence on defspot ("& buildX/TILE &"-"& buildY/TILE &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,_defStruct,buildX,buildY); - tLastbuildBaseDef = gameTime; - } - } - } //else {displayMsg("defendBase: time gone ("& gameTime - tLastbuildBaseDef &" / "& TIME_TOFORCE_BUILDDEF &") to force build of def is not enough"); } - } - } else { printDebug1("#### Trying to build a def struct which is not available"); } - } - } -} - -// ========================================================================== -event upgradeStructures(inactive) -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.17 " & player, player); - eventCheckTime[16] = gameTime; - - - droid = closestIdleDroid(buildGroup,baseX,baseY); - if(droid == NULLOBJECT){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - - boolResult = true; - - if ( lMinBaseStructBuilt ){ - initEnumStruct(false,powGen,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(powModule,player) and (not testStructureModule(player, structure, 0)) ) - { - displayMsg("*** UpgradeStructures: upgrading Power Structure ("& structure.id &") "); - orderDroidStatsLoc(droid,DORDER_BUILD,powModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - - //if "R-Vehicle-Body05" is not completed we do not perform the upgrade - if ( !lStopFactUpgrade and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 1 ) ) - { - //displayMsg("*** UpgradeStructures: upgrading factory ("& structure.id &") capacity to 2 ("& skGetFactoryCapacity(structure) &")"); - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - if ( !lStopFactUpgrade2 and boolResult ) - { - initEnumStruct(false,factory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - } - - initEnumStruct(false,vtolFactory,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(facModule,player) and (skGetFactoryCapacity(structure) < 2 ) ) - { - orderDroidStatsLoc(droid, DORDER_BUILD,facModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - - }//if ( !lStopFactUpgrade and boolResult ) - - //researches - if(!lStopResLabUpgrade and boolResult) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and isStructureAvailable(resModule,player) and (not testStructureModule(player, structure, 0)) ) - { - //displayMsg("*** UpgradeStructures: upgrading ResLab ("& structure.id &") "); - orderDroidStatsLoc(droid, DORDER_BUILD,resModule, structure.x,structure.y); - boolResult = false; - } - structure= enumStruct(); - } - }//power check - - } //else { displayMsg("UpgradeStructures: no idle buildDroid found!! "); } -} - -//=========================================================================== -event droidBuilt(droidBuiltTr) // (CALL_NEWDROID,player, ref droid,ref structure); -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - dbg("dbg->droidBuilt : ai not responsible for player ("& player &") ",player); - setEventTrigger(droidBuilt,inactive); - } - else - { - */ - - ASSERT(player >= 0 and player < 8, "player out of bounds: droidBuilt " & player, player); - - boolResult = true; - //dbg("dbg->droidBuilt : droid ("& droid.id &") hitPoints ("& droid.hitPoints &") ",player); - if(droid != NULLOBJECT) - { - if ( droid.player != player ){ exit; } - // TANK - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - nTotTankBuilt++; - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") "); - groupAddDroid(tankDefGroup, droid); - } - - // TANK REPAIR - if(droid.droidType == DROID_REPAIR ) - { - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to repairGroup "); - groupAddDroid(repairGroup, droid); - } - - //TANK CONTRUCTOR - if( droid.droidType == DROID_CONSTRUCT ) - { - //store coord for stuck check - //storeDroidCoord(droid); - //displayMsg("droidBuilt: tank ("& droid.id &") hitPoints ("& droid.hitPoints &") assigned to buildGroup "); - groupAddDroid(buildGroup, droid); - } - - - // CYBORG - if(droid.propulsion == cyborgPropulsion) - { - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } - } - - - // VTOL - if( isVtol(droid) ) - { - //displayMsg("droidBuilt: VTOL ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to vtolDefendGr "); - groupAddDroid(vtolDefendGr, droid); - //need to check if I have to give new droid an order to attack - if (attTargetVTOL != NULLOBJECT){ - if ( !friendlyPlayer(attTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack attTargetVTOL("& attTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,attTargetVTOL); - } - } //else { displayMsg("droidbuilt: attTargetVTOL is NULL "); } - if ( defTargetVTOL != NULLOBJECT ){ - if ( !friendlyPlayer(defTargetVTOL.player) ){ - //displayMsg("droidbuilt: ordered VTOL to attack defTargetVTOL("& defTargetVTOL.id &") "); - orderDroidObj(droid,DORDER_ATTACK,defTargetVTOL); //bug fixed in DyDo 1.2.3a, the target object was attTargetVTOL and not defTargetVTOL - } - } //else { displayMsg("droidbuilt: defTargetVTOL is NULL "); } - //setDroidSecondary(droid, DSO_PATROL, DSS_PATROL_SET); - exit; - } - - //to be improved: add secondary for weapons cyborgs - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - setDroidSecondary(droid, DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - - boolResult = false; - if( droid.droidType == DROID_WEAPON){ - boolResult = true; - //short range tanks - if ( droid.weapon == Flamer or droid.weapon == PlasmFlamer or droid.weapon == Inferno or droid.weapon == NeedleGun or droid.weapon == RailGun or droid.weapon == GaussCannon or droid.weapon == PlasmaCannon or droid.weapon == EMPCannon or droid.weapon == AGun or droid.weapon == MGun or droid.weapon == TwinMGun or droid.weapon == HMGun or droid.weapon == TwinAGun){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to tank "); - //long range tanks-1 - } else if ( droid.weapon == LCannon or droid.weapon == MCannon or droid.weapon == ACannon or droid.weapon == HCannon or droid.weapon == TACannon ){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - //long range tanks-2 - } else if ( droid.weapon == RocketBB or droid.weapon == RocketPod or droid.weapon == HVCannon or droid.weapon == RocketMRL or droid.weapon == Lancer or droid.weapon == TankKiller or droid.weapon == RippleRockets or droid.weapon == ScourgeMissle or droid.weapon == ArchangelMissile){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to tank "); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_DEFAULT); - //displayMsg("droidbuilt: default attack range assigned to droid "); - } - } - - - if( droid.propulsion == cyborgPropulsion and droid.droidType != DROID_CYBORG_CONSTRUCT ){ - boolResult = true; - //short range cyborgs - if ( droid.weapon == cybGren or droid.weapon == cybLancer or droid.weapon == cybScourge or droid.weapon == cybSuperHPV or droid.weapon == cybSuperScourge or droid.weapon == cybTankKiller){ - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - //displayMsg("droidbuilt: long attack range assigned to cyborg"); - } else { - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_SHORT); - //displayMsg("droidbuilt: short attack range assigned to cyborg"); - } - } - - //for debug purposes only - //if( !boolResult ){ - //dbg("dbg->droidbuilt: no attack range assigned to droid",player); - //} - - }//droid != NULLOBJECT - //} -} - -// ================== UNITS RESORTING SCRIPT ========================== -event reSortUnits(inactive) -{ - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(reSortUnits, inactive); - } - else - { - */ - - - ASSERT(player >= 0 and player < 8, "player out of bounds: reSortUnits " & player, player); - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members bofore re-sort ("& xGroup.members &") _________________",player); - initIterateGroup(xGroup); - droid = iterateGroup(xGroup); - while(droid != NULLOBJECT) - { - //dbg("dbg->assignDroidToGrp: droid ("& droid.id &") ("& droid.y/TILE &")("& droid.y/TILE &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - assignDroidToGrp(droid); - droid = iterateGroup(xGroup); - } - - groupAddAreaNoGroup(xGroup, player, 0, 0, (mapWidth*128), (mapHeight*128)); - //dbg("reSortUnits: xGroup.members after re-sort ("& xGroup.members &") _______________",player); - - //deactivate itself - setEventTrigger(reSortUnits,inactive); - - //} -} - -// =========================================================================== -event SelectTankTemplate(inactive) -{ - local int nMaxTrucks, nRnd, nTotCanBuild, nTemplateLoop, nBestTemplate; - local bool bNeedRepairTruck; - local TEMPLATE tmplChoice,tmplChoiceCob[9],tmplChoicePhy[9],tmplChoiceSco[9],tmplChoiceMan[9]; - local TEMPLATE tmplChoiceLeo[9],tmplChoicePan[9],tmplChoiceTig[9],tmplChoiceRet[9],tmplChoiceVen[9],tmplChoiceWyv[9]; - local int nTmpl, nTmplVip, nTmplCob, nTmplPhy, nTmplSco, nTmplMan; - local int nTmplLeo, nTmplPan, nTmplTig, nTmplRet, nTmplVen, nTmplWyv ; - local int nTotTmplChoiceVip, nTotTmplChoiceCob, nTotTmplChoicePhy, nTotTmplChoiceSco, nTotTmplChoiceMan; - local int nTotTmplChoiceLeo, nTotTmplChoicePan, nTotTmplChoiceTig, nTotTmplChoiceRet, nTotTmplChoiceVen, nTotTmplChoiceWyv; - - eventCheckTime[17] = gameTime; - ASSERT(player >= 0 and player < 8, "player out of bounds:.27 " & player, player); - - if ( getDroidCount(player) >= MAX_DROIDS ){ exit; } - - nTmplVip = -1; - nTmplCob = -1; - nTmplPhy = -1; - nTmplSco = -1; - nTmplMan = -1; - nTmplLeo = -1; - nTmplPan = -1; - nTmplTig = -1; - nTmplRet = -1; - nTmplVen = -1; - nTmplWyv = -1; - //displayMsg("SelectTankTemplate____("& lStopBuildTankProd &")_______________"); - //trucks - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTruckBuilt < 900) ){ - lStopBuildTankProd = true; - } - if (!lStopBuildTankProd ){ - boolResult = true; - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if ( skCanBuildTemplate(player,structure, constructor2) ){ - buildDroid(constructor2, structure, player, 1); // can harvest on islands! - } else { - buildDroid(constructor, structure, player, 1); // build tank wheeled constructor - } - lastTruckBuilt = gameTime; - boolResult = false; - } - structure = enumStruct(); - } - } - - //repair Truck - if ( boolResult and repairGroup.members < MAX_REPAIR_UNITS ){ - if ( getStructure(repairFacility,player) == NULLOBJECT ){ - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastTimeRepairBuilt > 900) ){ - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - if(structureComplete(structure) and structureIdle(structure)){ - if( skCanBuildTemplate(player,structure, repairTank) ){ - boolResult = false; - buildDroid(repairTank, structure, player, 1); // build tank repair - lastTimeRepairBuilt = gameTime;//avoid multipe builds in high power - } //else { displayMsg("SelectTankTemplate: 1-cannot build template for repair tank");} - } - structure = enumStruct(); - } - } - } - } - - //do not build any other type of tanks for cyborgAI - if ( AIPersonality == AI_CYBORG ){ - exit; - } - - //tanks - if (boolResult and !lStopTankProduction) - { - - //displayMsg("SelectTankTemplate xxxxxxxxxxx________"); - boolResult = true; - boolResult2 = false; - - initEnumStruct(false,factory,player,player); - structure = enumStruct(); - while(structure != NULLOBJECT and boolResult) - { - //displayMsg("SelectTankTemplate: structure.id("& structure.id &") boolResult("& boolResult &")________"); - if(structureComplete(structure) and structureIdle(structure)) - { - //displayMsg("SelectTankTemplate: OK structure.id("& structure.id &") boolResult("& boolResult &")________"); - - // ============ BUILD TANKS!! ================ - nBestTemplate = numTmpls - 1; - nTemplateLoop = 0; - nTotTmplChoiceVip = 0; - boolResult2 = false; - while((nTemplateLoop < numTmpls) and (boolResult2 == false)) - { - if( skCanBuildTemplate(player,structure, tmpl0[nTemplateLoop])) - { - nBestTemplate = nTemplateLoop; //stores the best template AI can build - nTotTmplChoiceVip++; - boolResult2 = true; - } - nTemplateLoop++; - } - - //Flamer - if ( nBestTemplate > 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 62;//MG01 - } else { - nTmplVip = 61;//flamer - } - } - //MG02 - if ( nBestTemplate == 60 ){ - if ( random(10) < 3 ){ - nTmplVip = 60;//MG02 - } else { - nTmplVip = 61;//flamer - } - } - //Light Cannon - if ( nBestTemplate == 59 ){ - if ( random(10) < 5 ){ - nTmplVip = 59+random(2);//LC, MG02 - } else { - nTmplVip = 61;//flamer - } - } - //POD - if ( nBestTemplate == 58 ){ - if ( random(10) < 5 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 61;//flamer - } - } - //MRL - if ( nBestTemplate == 57 ){ - if ( random(10) < 5 ){ - if ( random(10) < 6 ){ - nTmplVip = 58;//POD - } else { - nTmplVip = 57;//MRL - } - } else { - nTmplVip = 61;//flamer - } - } - //better bodies are available - if ( nBestTemplate <= 56 ){ - if (researchFinished(phytonBody,player)){ - nTmplVip = 59 + random(3);//MG02,LC,flamer - } else { - nTmplVip = 61;//flamer - } - } - //if ( nTmplVip >= 0 ){ displayMsg("*** SelectTankTemplate : Viper is ("& nTmplVip &") "); } - - //======== COBRA ==================== - if ( researchFinished(cobraBody,player) ){ - nTotTmplChoiceCob = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 8 ){ - count = 49+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Cobra Available can build ("& count &") "); - tmplChoiceCob[nTotTmplChoiceCob] = tmpl0[count] ; - nTotTmplChoiceCob++; - } //else { displayMsg("*** SelectTankTemplate : Cobra CANNOT build ("& count &") "); } - nTemplateLoop++; - } - } - - //======== PHYTON ==================== - if ( researchFinished(phytonBody,player) ){ - nTotTmplChoicePhy = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 9 ){ - count = 40+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : phytonBody Available can build ("& count &") "); - tmplChoicePhy[nTotTmplChoicePhy] = tmpl0[count] ; - nTotTmplChoicePhy++; - } //else { displayMsg("*** SelectTankTemplate : phytonBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePhy > 0 ) { - nTmplPhy = random(nTotTmplChoicePhy);//build any template - //displayMsg("*** SelectTankTemplate : Phyton choice is ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - } - - //======== SCORPION ==================== - if ( researchFinished(scorpionBody,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 37+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : scorpionBody Available can build ("& count &") "); - tmplChoiceSco[nTotTmplChoiceSco] = tmpl0[count] ; - nTotTmplChoiceSco++; - } //else { displayMsg("*** SelectTankTemplate : scorpionBody CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceSco > 0 ) { - nTmplSco = random(nTotTmplChoiceSco);//build any template - //displayMsg("*** SelectTankTemplate : Scorpion choice is ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - } - } - //======== MANTIS ==================== - - if ( researchFinished(mantisBody,player) and researchFinished(trackPropulsion,player) and researchFinished(heavyCannon,player) ){ - nTotTmplChoiceSco = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 3 ){ - count = 34+nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Mantis Available can build ("& count &") "); - tmplChoiceMan[nTotTmplChoiceMan] = tmpl0[count] ; - nTotTmplChoiceMan++; - } //else { displayMsg("*** SelectTankTemplate : Manits CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceMan > 0 ) { - nTmplMan = random(nTotTmplChoiceMan);//build any template - //displayMsg("*** SelectTankTemplate : Mantis choice is ("& nTmplMan &") nTotTmplChoiceSco ("& nTotTmplChoiceMan &")"); - } - } - - //======== Leopard 24 - 3 ==================== - if ( researchFinished(leopardBody,player) ){ - nTotTmplChoiceLeo = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 4 ){ - count = 30 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Leopard Available can build ("& count &") "); - tmplChoiceLeo[nTotTmplChoiceLeo] = tmpl0[count] ; - nTotTmplChoiceLeo++; - } //else { displayMsg("*** SelectTankTemplate : Leopard CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceLeo > 0 ) { - nTmplLeo = random(nTotTmplChoiceLeo);//build any template - //displayMsg("*** SelectTankTemplate : Leopard choice is ("& nTmplLeo &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - //======== Panther 18 - 6 ==================== - if ( researchFinished(pantherBody,player) ){ - nTotTmplChoicePan = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 24 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Panther Available can build ("& count &") "); - tmplChoicePan[nTotTmplChoicePan] = tmpl0[count] ; - nTotTmplChoicePan++; - } //else { displayMsg("*** SelectTankTemplate : Panther CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoicePan > 0 ) { - nTmplPan = random(nTotTmplChoicePan);//build any template - //displayMsg("*** SelectTankTemplate : Panther choice is ("& nTmplPan &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - } - - //======== Tiger 16 - 2 ==================== - if ( researchFinished(tigerBody,player) ){ - nTotTmplChoiceTig = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 18 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Tiger Available can build ("& count &") "); - tmplChoiceTig[nTotTmplChoiceTig] = tmpl0[count] ; - nTotTmplChoiceTig++; - } //else { displayMsg("*** SelectTankTemplate : Tiger CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceTig > 0 ) { - nTmplTig = random(nTotTmplChoiceTig);//build any template - //displayMsg("*** SelectTankTemplate : Tiger choice is ("& nTmplTig &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - } - - //======== Retribution 10 - 6 ==================== - if ( researchFinished(retributionBody,player) ){ - nTotTmplChoiceRet = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 12 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Retribution Available can build ("& count &") "); - tmplChoiceRet[nTotTmplChoiceRet] = tmpl0[count] ; - nTotTmplChoiceRet++; - } //else { displayMsg("*** SelectTankTemplate : Retribution CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceRet > 0 ) { - nTmplRet = random(nTotTmplChoiceRet);//build any template - //displayMsg("*** SelectTankTemplate : Retribution choice is ("& nTmplRet &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - } - - - //======== Vengeance 3 - 7 ==================== - if ( researchFinished(vengeanceBody,player) ){ - nTotTmplChoiceVen = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 6 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Vengeance Available can build ("& count &") "); - tmplChoiceVen[nTotTmplChoiceVen] = tmpl0[count] ; - nTotTmplChoiceVen++; - } //else { displayMsg("*** SelectTankTemplate : Vengeance CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceVen > 0 ) { - nTmplVen = random(nTotTmplChoiceVen);//build any template - //displayMsg("*** SelectTankTemplate : Vengeance choice is ("& nTmplVen &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - } - - //======== Wyvern 0 - 3 ==================== - if ( researchFinished(wyvernBody,player) ){ - nTotTmplChoiceWyv = 0; - nTemplateLoop = 0; - while ( nTemplateLoop < 6 ){ - count = 0 + nTemplateLoop; - if ( skCanBuildTemplate(player, structure, tmpl0[count]) ) { - //displayMsg("*** SelectTankTemplate : Wyvern Available can build ("& count &") "); - tmplChoiceWyv[nTotTmplChoiceWyv] = tmpl0[count] ; - nTotTmplChoiceWyv++; - } //else { displayMsg("*** SelectTankTemplate : Wyvern CANNOT build ("& count &") "); } - nTemplateLoop++; - } - - if ( nTotTmplChoiceWyv > 0 ) { - nTmplWyv = random(nTotTmplChoiceWyv);//build any template - //displayMsg("*** SelectTankTemplate : Wyvern choice is ("& nTmplWyv &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - } - - // ========================================================= - // ===== TAKE THE DECISION ================================= - // ========================================================= - - // ____________ default is Viper ______________ - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - - // ____________ best template is Cobra ______________ - if ( nTotTmplChoiceCob > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 1: best template Cobra "); - // 60% build Cobra - if ( random(10) < 6 ) { - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //40% Build Viper which is a flamer - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 1: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } - - // ____________ best template is Scorpion or Cobra______________ - if ( nTotTmplChoiceSco > 0 and nTotTmplChoicePhy == 0){ - //displayMsg("SelectTankTemplate 2: best template Scorpion"); - if ( random(100) < 75 ){ //45% build Cobra - 30% build Viper - if ( random(75) < 45 ) {//45% Cobra - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - } else { - //30% Build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 2: Will not build Cobra but Viper("& nTmpl &") ("& nTotTmplChoiceVip &") "); - } - } else { //25% Build Scorpion - //displayMsg("*** SelectTankTemplate 2: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - nTmpl = nTmplSco; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Phyton ______________ - if ( nTotTmplChoicePhy > 0 ){ - //displayMsg("SelectTankTemplate 3: best template Phyton "); - - nRnd = random(100); - - //Phyton - if ( nRnd < 50 or nPower >= aPower[VERY_LOW_POWER] ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 3: Will build Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //Cobra or Scorpion - if ( nRnd >= 50 and nRnd < 85 ){ - if (nTotTmplChoiceSco == 0 or (random(10) < 5 and nTotTmplChoiceSco > 0) ){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - //displayMsg("*** SelectTankTemplate 3: Will build Cobra ("& nTmpl &") nTotTmplChoiceCob ("& nTotTmplChoiceCob &")"); - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } else { //Build Scorpion - //displayMsg("*** SelectTankTemplate 3: Will build Scorpion ("& nTmplSco &") nTotTmplChoiceSco ("& nTotTmplChoiceSco &")"); - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //Viper - if ( nRnd >= 85 and nRnd < 100 and nTmplVip >= 0){ - //displayMsg("*** SelectTankTemplate 3: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - } //end Phyton - - - // ____________ best template is Mantis ______________ - if ( nTotTmplChoiceMan > 0 ){ - //displayMsg("SelectTankTemplate 4: best template Mantis"); - - nRnd = random(100); - - //25% Mantis - if ( nRnd < 25 ){ - nTmpl = nTmplMan; - tmplChoice = tmplChoiceMan[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (20%) Mantis "); - } - - //35% Phyton - if ( nRnd <= 25 and nRnd < 60 and nTmplPhy >= 0){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 4: Will build (15%) Phyton ("& nTmplPhy &") nTotTmplChoicePhy ("& nTotTmplChoicePhy &")"); - } - - //30% Cobra or Scorpion - if ( nRnd >= 60 and nRnd < 90 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build Cobra or Scorpion"); - //cobra - if (nTotTmplChoiceCob > 0 and random(10) < 5){ - if ( researchFinished(mediumCannon,player) and nTotTmplChoiceCob > 2 ){ - nTotTmplChoiceCob = (nTotTmplChoiceCob - 2);//do not build PED and MRL, leave them for Viper - } - if ( nTotTmplChoiceCob >= 0 ){ - nTmpl = random(nTotTmplChoiceCob); - tmplChoice = tmplChoiceCob[nTmpl]; - } - } - //scorpion - if (nTotTmplChoiceSco > 0){ - if ( nTmplSco >= 0 ){ - nTmpl = nTmplSco; - tmplChoice = tmplChoiceSco[nTmpl]; - } - } - } - - //10% Viper - if ( nRnd >= 90 and nRnd < 100 and nTmplVip >= 0 ){ - //displayMsg("*** SelectTankTemplate 4: Will build (25%) Viper ("& nTmplVip &") nTotTmplChoiceVip ("& nTotTmplChoiceVip &")"); - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - - }//end Mantis - - // ____________ best template is Leopard ______________ - if ( nTotTmplChoiceLeo > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Leopard "); - - nRnd = random(100); - if ( nRnd < 50 ){ //Build Leopard - nTmpl = nTmplLeo; - tmplChoice = tmplChoiceLeo[nTmpl]; - } else { //build Viper - nTmpl = nTmplVip; - tmplChoice = tmpl0[nTmpl]; - } - } - - // ____________ best template is Panther ______________ - if ( nTotTmplChoicePan > 0 ){ - //displayMsg("SelectTankTemplate 5: best template Panther "); - nRnd = random(100); - - //20% Mantis - if ( nRnd < 20 and nTmplMan >= 0){ - tmplChoice = tmpl0[27]; - //displayMsg("*** SelectTankTemplate 5: Will build (20%) Mantis "); - } - - //30% Phyton - if ( nRnd <= 20 and nRnd < 50 and nTmplPhy >= 0 ){ - nTmpl = nTmplPhy; - tmplChoice = tmplChoicePhy[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (15%) Phyton ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePhy &")"); - } - - //30% Panther - if ( nRnd >= 50 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Leopard - if ( nRnd >= 80 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 5: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Tiger ______________ - if ( nTotTmplChoiceTig > 0 ){ - nRnd = random(100); - //displayMsg("*** SelectTankTemplate 6: best Template is TIGER nTotTmplChoice ("& nTotTmplChoiceTig &")nRnd("& nRnd &")"); - - //50% Tiger - if ( nRnd < 50 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (35%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //35% Panther - if ( nRnd >= 50 and nRnd < 85 and nTmplPan >= 0){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (40%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //15% Leopard - if ( nRnd >= 85 and nRnd < 100 and nTmplLeo >= 0){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 6: Will build (25%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - } - - // ____________ best template is Retribution ______________ - if ( nTotTmplChoiceRet > 0 ){ - nRnd = random(100); - - //40% Tiger - if ( nRnd < 40 and nTmplTig >= 0){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Panther - if ( nRnd >= 40 and nRnd < 70 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 70 and nRnd < 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - //10% Leopard - if ( nRnd >= 90 and nRnd < 100 and nTmplLeo >= 0 ){ - nTmpl = nTmplLeo; - tmplChoice = tmpl0[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (15%) Leopard ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceLeo &")"); - } - - } - - // ____________ best template is Vengeance ______________ - if ( nTotTmplChoiceVen > 0 ){ - nRnd = random(100); - - //30% Tiger - if ( nRnd < 30 and nTmplTig >= 0 ){ - nTmpl = nTmplTig; - tmplChoice = tmplChoiceTig[nTmpl]; - //displayMsg("*** SelectTankTemplate 7: Will build (30%) Tiger ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceTig &")"); - } - - //30% Vengeance - if ( nRnd >= 30 and nRnd < 60 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //20% Panther - if ( nRnd >= 60 and nRnd < 80 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //20% Retribution - if ( nRnd >= 80 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - - } - - // ____________ best template is Wyvern ______________ - if ( nTotTmplChoiceWyv > 0 ){ - nRnd = random(100); - - //40% Wyvern - if ( nRnd < 40 ){ - nTmpl = nTmplWyv; - tmplChoice = tmplChoiceWyv[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (30%) Wyvern ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceWyv &")"); - } - - //25% Vengeance - if ( nRnd >= 40 and nRnd < 65 ){ - nTmpl = nTmplVen; - tmplChoice = tmplChoiceVen[nTmpl]; - //displayMsg("*** SelectTankTemplate 8: Will build (30%) Vengeance ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceVen &")"); - } - - //25% Panther - if ( nRnd >= 65 and nRnd < 90 and nTmplPan >= 0 ){ - nTmpl = nTmplPan; - tmplChoice = tmplChoicePan[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (10%) Panther ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoicePan &")"); - } - - //10% Retribution - if ( nRnd >= 90 and nTmplRet >= 0 ){ - nTmpl = nTmplRet; - tmplChoice = tmplChoiceRet[nTmpl]; - //displayMsg("*** SelectTankTemplate 9: Will build (45%) Retribution ("& nTmpl &") nTotTmplChoice ("& nTotTmplChoiceRet &")"); - } - - } - - //displayMsg(" nTmplVip("& nTmplVip &") nTmplCob("& nTmplCob &") nTmplPhy("& nTmplPhy &") nTmplSco("& nTmplSco &") nTmplMan("& nTmplMan &") nTmplLeo("& nTmplLeo &") nTmplPan("& nTmplPan &") nTmplTig("& nTmplTig &") nTmplRet("& nTmplRet &") nTmplVen("& nTmplVen &") nTmplWyv("& nTmplWyv &")"); - //======== BUILD !!! ==================== - if( skCanBuildTemplate( player ,structure, tmplChoice) ){ - //displayMsg("*** SelectTankTemplate : will build template selected"); - buildDroid(tmplChoice , structure, player, 1); //build droid - boolResult = false; - } else { displayMsg("#### SelectTankTemplate : CANNOT BUILD TEPLATE ["& nTmpl &"] "); } - - } //else { displayMsg("SelectTankTemplate: NOT OK structure.id("& structure.id &") boolResult("& boolResult &")________"); } - structure = enumStruct(); - } - }//(!lStopTankProduction) - - -} - - -//========================================================================= -event SelectCyborgTemplate(inactive) -{ - - local TEMPLATE cybTmpl[17]; - local int cybPos[17],nRnd, nCybTemplates,_n,_pos; - ASSERT(player >= 0 and player < 8, "player out of bounds:.29 " & player, player); - eventCheckTime[18] = gameTime; - //displayMsg("*** SelectCyborgTemplate: ___________ CALLED lStopCybProduction("& lStopCybProduction &") droids tot("& getDroidCount(player) &"/"& MAX_DROIDS &")___________"); - - if( getDroidCount(player) >= MAX_DROIDS){ exit; } - - if(!lStopCybProduction) - { - initEnumStruct(false,cybFactory,player,player); - structure = enumStruct(); - boolResult = true; - while(structure != NULLOBJECT and boolResult) - { - if( structureComplete(structure) and structureIdle(structure) ) - { - - boolResult = true; - boolResult2 = true; - if ( gameTime > TIME_HARVESTING_PHASE and (gameTime - lastCybEngBuilt < 900) ){ - boolResult2 = false; - } - - // build cyborg constructor - if(boolResult2 and !lStopCybEngProd) - { - boolResult = false; - lastCybEngBuilt = gameTime; - buildDroid(cybcondroid, structure, player, 1); - //displayMsg("*** SelectCyborgTemplate: Building Constructor Droid power("& playerPower(player) &")"); - } - - //build cyborg Mechanic - /* - if ( nCybMechanic < 3 and (gameTime - tLastCybMech > 2*TIME_MINUTE) ){ - tLastCybMech = gameTime; - nCybMechanic++; - buildDroid(cybMech, structure, player, 1); - } - */ - - if( boolResult ) - { - nCybTemplates = 0; - count3 = numSuperCyb - 1; - count2 = numSuperCyb - 1; - boolResult2 = false; - _pos = -1; - while(count2 >= 0 ) - { - if( skCanBuildTemplate(player,structure, superCyb[count2]) ) { - count3 = count2; - cybTmpl[nCybTemplates] = superCyb[count2]; - cybPos[nCybTemplates] = count2; - //_pos++; - nCybTemplates++; - } - count2--; - } - - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(2) _pos(-1) count(15) count3(14) - //#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates(4) _pos(-1) count(13) count3(12) - //displayMsg("SelectCybTempl: count3("& count3 &") nCybTemplates("& nCybTemplates &")"); - //and now pick up best cyborgs!!! - if ( count3 == 16 ){ - count = 16;//Machinegunner $40 - } - - if ( count3 == 15 ){//flamer $50 - if( _random(10) <= 7 ){ - count = 15;//70% flamer $50 - } else { - count = 16;//30% Machinegunner $40 - } - } - - if ( count3 == 14 ){//heavy Gunner $70 - if( _random(10) < 2 ){ - count = 14;//30% heavy Gunner $70 - } else { - count = 15;//70% flamer $50 - } - } - - if ( count3 == 13 ){//Grenadier - if( _random(10) <= 6 ){ - count = 15;//70% flamer $50 - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - if ( count3 == 12 ){//Thermite Flamer - if( _random(10) <= 6 ){ - count = 12;//70% Thermite Flamer - } else { - if( _random(10) < 4 ){ - count = 13;//50% Grenadier - } else { - count = 14;//50% heavy Gunner - } - } - } - - //best 3 templates for standard cyborgs!! - if ( count3 > 6 and count3 < 12 ){ - if( _random(10) <= 4 ){ - count = count3;//50% best template - } else { - - if ( _random(2)==0 ){ - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else { - count = count3+1+_random(2); //50% second and third templates - } - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - - } - } - - //Super cyborgs!! - if ( count3 == 6){ - if( _random(10) <= 4 ){ - count = 6;//40% Super Heavy-Gunner - } else { - if ( random(10) < 7 ) {//42% flamers - if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } else {//9% Gunners and 9% Lancers - if ( random(10) < 5 ){//Gunners - if ( skCanBuildTemplate(player,structure, superCyb[8]) ){ - count = 8;//needle Gunner - } else if ( skCanBuildTemplate(player,structure, superCyb[11]) ){ - count = 11;//Assault Gunner - } else { - count = 14;//heavy Gunner - } - } else { //Lancers - if ( skCanBuildTemplate(player,structure, superCyb[7]) ){ - count = 7;//Scourge - } else { - count = 9;//Lancer - } - }//end lancers - } - } - } - - //Super cyborgs!! - if ( count3 <= 5 ){ - - if( _random(10) <= 5 ){ - //60% SUPER Cyborgs - if ( count3 == 5 ){ - count = count3 + random(2);//best 2 template - } else { - count = count3 + random(3);//best three templates - } - } else {//Flamers - if ( skCanBuildTemplate(player,structure, superCyb[2]) ){ - count = 2;//Pulse Laser - } else if ( skCanBuildTemplate(player,structure, superCyb[12]) ){ - count = 12;//thermite flamer - } else { - count = 15;//flamer - } - } - } - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - _pos = _n; - _n = 1000;//exit the loop - } - _n++; - } - - //debug check dydo 1.2.4 - if ( nCybTemplates == 0 or _pos < 0) { - dbg("dbg->SelectCyborgTemplate: #### player ("& getPlayerName(player) &") CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &")",player); - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE nCybTemplates("& nCybTemplates &") _pos("& _pos &") count("& count &") count3("& count3 &") struct_idle("& structureIdle(structure) &")"); - - _n=0; - while( _n < nCybTemplates ){ - if ( count == cybPos[_n] ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count == cybPos[_n]; ("& count &") == ("& cybPos[_n] &") "); - _pos = _n; - _n = 1000;//exit the loop - } else { - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE loop _n("& _n &") count !== cybPos[_n]; ("& count &") !== ("& cybPos[_n] &") "); - } - _n++; - } - - //build best 2 random templates - if ( nCybTemplates < 5 and nCybTemplates > 2 ){ - _pos = nCybTemplates - random(2) - 1; - } else { - if(nCybTemplates <= 2){ - _pos = nCybTemplates - 1; - } else { - _pos = nCybTemplates - 1 - random(3); - } - } - /* - _pos = cybPos[_n]; - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - build random template cybPos["& _pos &"] "); - if( !skCanBuildTemplate(player,structure, cybTmpl[_pos]) ){ - printDebug1("#### CANNOT BUILD CYBORG TEMPLATE - ALSO NOT ABLE TO build random template _pos; ("& _pos &") "); - } - */ - } - - if( skCanBuildTemplate(player,structure, cybTmpl[_pos]) ) - { - //displayMsg("*** SelectCyborgTemplate: Building cyborg template ["& count &"]["& _pos &"] - best tmpl is ["& count3 &"] - tot templates found ("& nCybTemplates &") "); - buildDroid(cybTmpl[_pos],structure,player,1); //build droid - boolResult = false; - } //else { displayMsg("#### SelectCyborgTemplate: cannot build Template ["& count &"]["& _pos &"] "); } - - } //end check on tankGroupMembers - - } - structure = enumStruct(); - } - } - -} - -// ---------------------- DylanDog ---------------------------------- -event buildRepFacSuppAttack(inactive) -{ - local int _totFacilities; - eventCheckTime[19] = gameTime; - - //exclude this building on small maps with many players - if ( !isStructureAvailable(repairFacility, player) ){ - exit; - } - if ( (mapWidth+mapHeight)/2 < 120 and nPlayersInGame > 2 ){ - exit; - } - - exit; //need to think if this is ok - /* - - buildX = (mapWidth/2)*TILE; - buildY = (mapHeight/2)*TILE; - - _totFacilities = numStructsByType(repairFacility, player); - - if( !lStopBuildRepFacility and _totFacilities < MAX_REPAIRFAC and _totFacilities >= 3 and gameTime - eventCheckTime[19] > 3600) - { - boolResult = pickStructLocation(repairFacility, ref buildX, ref buildY, player); - if ( boolResult and !threatInRange(player,buildX, buildY, THREAT_RANGE_TILES*128, false) ) - { - droid = closestIdleDroid(buildGroup,buildX, buildY); - if ( droid != NULLOBJECT ) { - if ( droidCanReach(droid, buildX, buildY) ){ - orderDroidStatsLoc( droid, DORDER_BUILD, repairFacility, buildX, buildY); - //displayMsg("*** buildRepFacSuppAttack: droid ("& droid.id &") build a repairFacility in x("& buildX/TILE &") y("& buildY/TILE &")"); - } - } //else {displayMsg("buildRepFacSuppAttack: Could not find an idle droid"); } - } //else { displayMsg("buildRepFacSuppAttack: there is some threat in Range!?"); } - } - */ - -} -//======================================================================= -// do research -event doResearch(inactive)//doResearchTr -{ - ASSERT(player >= 0 and player < 8, "player out of bounds:.44 " & player, player); - eventCheckTime[20] = gameTime; - //displayMsg("doResearch:___________("& lStopResearch &")prod["& nProdSelect &"]work("& getNumStructNotIdle(resLab) &")______________"); - - - if ( !lStopResearch and boolResult ){ - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - boolResult2 = true; - while(structure != NULLOBJECT and boolResult2) - { - if( structureIdle(structure) and structureComplete(structure) ){ - //displayMsg("doResearch: resLab ("& structure.id &")"); - //check for AA first!! - if ( bAttackedByVTOL ){ - if ( !researchFinished(CycloneAASite,player) ){ - //displayMsg("doResearch: forcing research of Cyclone AA Site"); - printDebug1("doResearch: forcing research of Cyclone AA Site"); - boolResult = pursueResearch(structure,player,AASite); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - //need rearmin pad for VTOL troops? - if ( nVTOLFactories > 0 ){ - if ( !isStructureAvailable(vtolPad,player) ){ - //displayMsg("doResearch: forcing research OF VTOLPad"); - printDebug1("doResearch: forcing research OF VTOLPad"); - boolResult = pursueResearch(structure,player,VTOLPadRes); - if (boolResult) {boolResult2 = false; tLastResearch = gameTime;}//execute only once - } - } - - //1v1 game, human player has more power and derricks are ok - if (bForceResPowUp){ - if (!researchFinished(powUpgrades3,player)){ - boolResult = pursueResearch(structure,player,powUpgrades3); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") OK forcing research of POWER UPGRADES 'powUpgrades3' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades3' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades3' ",player); } - } else { - if (!researchFinished(powUpgrades6,player)){ - boolResult = pursueResearch(structure,player,powUpgrades6); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research of POWER UPGRADES 'powUpgrades6' ",player); - printDebug1("doResearch: OK forcing research of POWER UPGRADES 'powUpgrades6' "); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") failed forcing research of POWER UPGRADES 'powUpgrades6' ",player); } - } - } - } - - //Need a CB tower and bombard ? - if (boolResult2 and bAttackedByMortars){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF CB TOWER ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of CB TOWER"); - } //else {dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF CB TOWER ",player); } - } else { - if (!researchFinished(bombardPit,player)){ - boolResult = pursueResearch(structure,player,bombardPit); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap OK FORCING RESEARCH OF BOMBARD ",player); - printDebug1("doResearch: attacked by long range weapon weap forcing research of BOMBARD"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by long range weapon weap FAILED FORCING RESEARCH OF BOMBARD ",player); } - } - } - } - - //Need a CB tower and RippleRockets ? - if (boolResult2 and bAttackedByLongRangeWeap){ - if (!researchFinished(resCBSense,player)){ - boolResult = pursueResearch(structure,player,resCBSense); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of CB TOWER",player); - printDebug1("doResearch: attacked by very long range weap forcing research of OF CB TOWER"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of CB TOWER ",player); } - } else { - if (!researchFinished(rippleRockets,player)){ - boolResult = pursueResearch(structure,player,rippleRockets); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap OK forcing research of RippleRockets ",player); - printDebug1("doResearch: attacked by very long range weap OK forcing research of RippleRockets"); - } //else { dbg("dbg->doResearch: ("& getPlayerName(player) &") attacked by very long range weap FAILED forcing research of RippleRockets ",player); } - } - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(scorpionBody,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,scorpionBody); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Scorpion body as VTOL struct is available"); - } - } - - //Need Scorpion for VTOL templates? - if (boolResult2 and !researchFinished(lancerATweap,player) and isStructureAvailable(vtolFactory , player)){ - boolResult = pursueResearch(structure,player,lancerATweap); - if (boolResult) { - boolResult2 = false; tLastResearch = gameTime; - //dbg("dbg->doResearch: ("& getPlayerName(player) &") forcing research to Scorpion body",player); - printDebug1("doResearch: forcing research to Lancer AT weapon as VTOL struct is available"); - } - } - - //perform a standard Research - if ( boolResult2 and do_Research(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no standard research to pursue found, doing a random research"); - printDebug1("doResearch: no standard research to pursue found, doing a random research"); - skDoResearch(structure,player,1); - tLastResearch = gameTime; - boolResult2 = false;//execute only once - } else { - boolResult2 = false;//execute only once - } - - } - structure= enumStruct(); - } - }//(!lStopResearch) - - - // =========== perform cheap researches ============== - boolResult = true; - if ( !lStopCheapResearch ) - { - initEnumStruct(false,resLab,player,player); - structure= enumStruct(); - count = 0; - while(structure != NULLOBJECT and boolResult) - { - if( structureIdle(structure) and structureComplete(structure) ) - { - //displayMsg("doResearch: Cheap one on resLab ("& structure.id &")"); - count = do_CheapResearch(structure, 0 ); - //if ( do_CheapResearch(structure, 0 ) < 0 ){ - //displayMsg("doResearch: no cheap research to pursue found"); - //} - boolResult = false;//execute only once - } - structure= enumStruct(); - } - }//(!lStopCheapResearch) -} - -//---------------------------------------------------------------- -event difficultyModifier(inactive) -{ - if ( EnableSliders == TRUE and !isHumanPlayer(player) )//this setting can be changed in the vlo file - { - skDifficultyModifier(player); - } - else - { - setEventTrigger(difficultyModifier, inactive); - } -} - -//----------------------------------------------------------------------------- -event manageHelpTeam(inactive) -{ - - local int _dist; - - ASSERT(player >= 0 and player < 8, "player out of bounds: manageHelpTeam " & player, player); - - - if ( gameTime - tProd4 >= 80 ){ - //dbg("dbg->manageHelpTeam: ("& getPlayerName(player) &") droids("& helpGroup.members &") helping ("& getPlayerName(nAllyBeingHelped) &") nHelpX-Y("& nHelpX &")("& nHelpY &")", player); - tProd4 = gameTime; - } - - if ( nAllyBeingHelped == -1 ){ - deactivateHelp(); - exit; - } - - if ( helpGroup.members == 0 ){ - msg("Player '"& getPlayerName(player) &"' has no helping units left, stop helping player '"& getPlayerName(nAllyBeingHelped) &"'" , player, nAllyBeingHelped); - deactivateHelp(); - } else { - //if haveBeacon - if (haveBeacon(nAllyBeingHelped) or nHelpX > -1){ - -//displayMsg("manageHelpTeam: 1"); - - //update beacon for the first time or with a new one - if ( beaconX[nAllyBeingHelped] > -1 ){ - nHelpX = beaconX[nAllyBeingHelped]; - nHelpY = beaconY[nAllyBeingHelped]; - } - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,nHelpX, nHelpY); - - if ( _dist > TILE*12){ //move to beacon - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - //dbg("dbg: player # ("& player &") - moving to beacon ("& nHelpX/TILE &"-"& nHelpY/TILE &")", player); - tHelpAction = gameTime; - } - } else { //scout to beacon - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, nHelpX, nHelpY); - tHelpAction = gameTime; - } - //reset help coord, this will force searching of target next time event is called - if ( _dist < TILE*3 and numEnemyWeapObjInRange(player, nHelpX, nHelpY, TILE*5, false, false) == 0){ - nHelpX = -1; - nHelpY = -1; - } - - } - - - } else { //else -> do not have beacon and help coord - -//displayMsg("manageHelpTeam: 2"); - - //beacon expired, no enemy in short range...get a target - if ( objTargetHelpTeam == NULLOBJECT ){ -//displayMsg("manageHelpTeam: 3"); - - //msg("manageHelpTeam: player ("& player &") - No enemy on beacon point, getting a new target", player, nAllyBeingHelped); - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objDroidTargetInRange(helpGroup.x,helpGroup.y,15*TILE,false); - } - if ( objTargetHelpTeam == NULLOBJECT ){ - objTargetHelpTeam = objStrTargetInRange(helpGroup.x,helpGroup.y,25*TILE); - } - - - if ( objTargetHelpTeam != NULLOBJECT ){ -//displayMsg("manageHelpTeam: 4"); - - _dist = distBetweenTwoPoints(helpGroup.x, helpGroup.y,objTargetHelpTeam.x, objTargetHelpTeam.y); - - if ( _dist > TILE*12){ //move to target - if ( gameTime - tHelpAction > 200){ - orderGroupMoveCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - msg("manageHelpTeam: player ("& player &") - moving to new target", player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } else { //scout to target - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - } - - } else { -//displayMsg("manageHelpTeam: 5"); - //deactivate help, no more enemies in Range - msg("manageHelpTeam: No enemies in range, no beacon...let`s come back to the base", player, nAllyBeingHelped); - deactivateHelp(); - } - - } else { //have a target!!! - -//displayMsg("manageHelpTeam: 6"); - if ( gameTime - tHelpAction > 50){ - orderGroupScoutCMD(helpGroup, objTargetHelpTeam.x, objTargetHelpTeam.y); - //msg("manageHelpTeam: player ("& player &") - SCOUT to beacon",player, nAllyBeingHelped); - tHelpAction = gameTime; - } - - } - } - - } -} - -//---------------------------------------------------------------- -// check if all units are assigned to a group !!! -event unitAssignationCheck( inactive ) -{ - eventCheckTime[21] = gameTime; - count = toBeRepairedCyborgGroup.members + cyborgConstructGroup.members + cyborgAttGroup.members + cyborgDefGroup.members + toBeRepairedTankGroup.members + tankDefGroup.members + tankGroup.members + vtolDefendGr.members + vtolAttGr.members + repairGroup.members + buildDefGroup.members + buildGroup.members + harvesterGroup.members + helpGroup.members; - if( count != numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) ) - { - dbg("dbg->unitAssignationCheck: activating reSortUnits assigned("& count &") tot("& numDroidsInArea(player, 0, 0, (mapWidth*128), (mapHeight*128)) &") ",player); - setEventTrigger(reSortUnits,reSortUnitsTr); - } -} -//---------------------------------------------------------------- -event VTOLmicroManager(inactive) -{ - local DROID _droid,_targetVTOL[3]; - local int _n,_i,_nPos,_nNumEnDroids,_nBestHit; - local DROID _aTmp[60]; - _n=0; _i=0; _nNumEnDroids=0; - - if ( !alertIsOn or alertX < 0 or alertY < 0){ exit; } - if ( vtolDefendGr.members < 1 or targetPlayerVTOL < 0 ){ exit; } - - /* - //update array enemy droids in alert area - InitEnumDroids(targetPlayerVTOL,targetPlayerVTOL); - _droid = EnumDroid(); - while(_droid != NULLOBJECT and _n < 60) - { - if (distBetweenTwoPoints(_droid.x,_droid.y,alertX,alertY) < 12*TILE){ - aTmp[_n] = _droid; - _n++; - _nNumEnDroids++; - } - _droid = EnumDroid(); - } - - //get best three targets - _i=0; - _nBestHit = 999999; - _loop = 0; - while (_loop < 3 and _loop < _nNumEnDroids){ - _i=0; - while (_i <= _n){ - _droid = aTmp[_i]; - if ( _droid.hitPoints > _nBestHit ) { - _targetVTOL[_loop] = _droid; - _nBestHit = _droid.hitPoints; - _nPos = _i; - } - _i++; - } - //clear this array pos to avoid to be chosen twice or more - aTmp[_nPos] = NULLOBJECT; - _loop++; - } - - //Attack the targets, assign at least 3 droids to each target - _i=0; - _n=0; - initIterateGroup(vtolDefendGr); - droid = iterateGroup(vtolDefendGr); - while(droid != NULLOBJECT) - { - if ( _n == 3 ){ _i++; _n=0;} - if ( _i == 3 ){ _i=0;} - orderDroidObj( droid, DORDER_ATTACK, _targetVTOL[_i] ); - _n++; - droid = iterateGroup(vtolDefendGr) - } - - - */ -} -//---------------------------------------------------------------- -event reassignPlayers(reassignPlayersTr) -{ - if( playerLeft == player ){ - console(getPlayerName(player) & " is now assigned to DyDo AI as human player has left"); - bRunning = true; - activateAI(); - } -} - - -//---------------------------------------------------------------- -//Check if any threat is in range of Trucks/cybEng order location. -//The order RTB is given only if the droid distance from order location is -// greater than 4 TILES. This because AI left the droid complete the -// building even with threat in range. The droid is called back anyway if -// it is attacked (see event AIattacked). -event threatCheck(threatCheckTr) -{ - local int _dist,_dist2; - - //buildGroup - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop building truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildGroup); - } - - //buildDefGroup - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop buildDef truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(buildDefGroup); - } - - //cyborgConstruct - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->threatCheck: THREAT found! stop truck ("& droid.id &") order at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance from orderLoc ("& _dist/TILE &") dist from base/nBaseRange("& _dist2 &"/"& nBaseRange &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - -} - -/* -============================================================================== -Functions Section -============================================================================== -*/ -function void shutDownThisAI() -{ - bRunning = false; - setEventTrigger(activateAttack, inactive); - setEventTrigger(AIbrain, inactive); - setEventTrigger(AIcheck, inactive); - setEventTrigger(defFromLongRangeWeap, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(buildAAdef, inactive); - setEventTrigger(buildBase, inactive); - setEventTrigger(buildPowerGenerators, inactive); - setEventTrigger(buildRepFacSuppAttack, inactive); - setEventTrigger(buildRepFirst, inactive); - setEventTrigger(buildVtols, inactive); - setEventTrigger(CyborgAttack, inactive); - setEventTrigger(defendBase, inactive); - setEventTrigger(defendDerrick, inactive); - setEventTrigger(defendGatewaysPoint, inactive); - setEventTrigger(difficultyModifier, inactive); - setEventTrigger(doResearch, inactive); - setEventTrigger(evDebug, inactive); - setEventTrigger(evPrintDebug, inactive); - setEventTrigger(harvesterOperate, inactive); - setEventTrigger(manageDefCyborgs, inactive); - setEventTrigger(manageDefTank, inactive); - setEventTrigger(manageDefVTOL, inactive); - setEventTrigger(manageHelpTeam, inactive); - setEventTrigger(manageIdleTrucks, inactive); - setEventTrigger(manageRepairTeam, inactive); - setEventTrigger(reSortUnits, inactive); - setEventTrigger(SelectCyborgTemplate, inactive); - setEventTrigger(SelectTankTemplate, inactive); - setEventTrigger(sendBackDamagedUnits, inactive); - setEventTrigger(showAImessage, inactive); - setEventTrigger(showPlayerInfo, inactive); - setEventTrigger(shutDownAI, inactive); - setEventTrigger(TankAttack, inactive); - setEventTrigger(truckGroupSlider, inactive); - setEventTrigger(unitAssignationCheck, inactive); - setEventTrigger(unitRepairSwitch, inactive); - setEventTrigger(updateBaseDetails, inactive); - setEventTrigger(upgradeStructures, inactive); - setEventTrigger(useLassat, inactive); - setEventTrigger(vtolEnabler, inactive); - setEventTrigger(vtolStructs, inactive); - setEventTrigger(threatCheck,inactive); - //events activated via callbacks, not sure if this is required or not. - setEventTrigger(droidBuilt, inactive); - setEventTrigger(AIattacked, inactive); - setEventTrigger(vtolDefend, inactive); - //setEventTrigger(consoleEv, inactive); - setEventTrigger(multiMsgEv, inactive); - setEventTrigger(beaconEv, inactive); - setEventTrigger(reassignPlayers, inactive); - setEventTrigger(VTOLhunter,inactive); - -} -//----------------------------------------------------------------------------- -function void buildRearmPads() -{ - - if(!isStructureAvailable(vtolPad,player)){ - //displayMsg("*** buildRearmPads: vtolPad not available "); - return; - } - - buildX = baseX; - buildY = baseY; - - if(pickStructLocation(vtolPad, ref buildX, ref buildY, player)) - { - droid = closestIdleDroid(buildGroup, buildX , buildY ); - if(droid == NULLOBJECT ){ - droid = pickCybEng(true); - } - if(droid == NULLOBJECT ){ - droid = pickDefTruck(true); - } - if(droid != NULLOBJECT) - { - if ( droidCanReach(droid, buildX, buildY) ){ - //displayMsg("*** buildRearmPads: droid to build vtolPad"); - orderDroidStatsLoc(droid, DORDER_BUILD,vtolPad, buildX,buildY); - } - } //else { displayMsg("buildRearmPads: no idle buildDroid found"); } - } //else { displayMsg("#### buildRearmPads: cannot pick up a location to build vtolPad"); } -} -//----------------------------------------------------------------------------- -function void vtolFactoryBuildVtol(STRUCTURE _factory) -{ - local int _nRnd, _t,_nLoop,_nTemplAT,_nTemplBomb,_templateAT,_templateBomb; - local TEMPLATE _tmplToBuild; - local bool _bResult, _bBombVTOL; - - if( _factory == NULLOBJECT){ return; } - if( !structureIdle(_factory) ) { return; } - - _bResult = false; - _bBombVTOL = false; - - _nLoop = 0; - _nTemplAT = 0; - _nTemplBomb = 0; - while( _nLoop < numVtolTemplates ) - { - if ( _nLoop < 5 ){//AT - light/medium body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - _nTemplAT++; - _bResult = true; - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - } - } else { //Bomb - Heavy Body - if( skCanBuildTemplate(player,_factory, vtols[_nLoop]) ){ - //dbg("vtolFactoryBuildVtol: can build vtols["& _nLoop &"]",player); - _nTemplBomb++; - _bResult = true; - } - } - _nLoop++; - } - - if(!_bResult) { - //dbg("vtolFactoryBuildVtol: no templates lancer("& researchFinished(lancerATweap,player) &") scorpion("& skVtolEnableCheck(player) &")("& _nTemplAT &")("& _nTemplBomb &") ",player); - return; - } - - - _nRnd = random(100); - if ( _nTemplBomb == 0){ //Only AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } else { - - if ( _nRnd < 50 ){ //Bomb - - _t = 5+random(_nTemplBomb); - _bBombVTOL = true; - - } else { //AT - - if ( researchFinished(retaliationBody,player) ){ - _t = 3+random(2);//Scorpion HPV - Retaliation Scourge - } else { - if ( researchFinished(scorpionBody,player) ){ - _t = 2+random(2);//Scorpion - } else { - _t = random(2); //Bug - } - } - - } - } - - if( skCanBuildTemplate( player ,_factory, vtols[_t]) ){ - //displayMsg("vtolFactoryBuildVtol: build VTOL _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") "); - buildDroid(vtols[_t],_factory,player,1); - } - //else { - //dbg("vtolFactoryBuildVtol: CANNOT build VTOL; lancer("& researchFinished(lancerATweap,player) &") scorpion("& researchFinished(scorpionBody,player) &") _t("& _t &"), _bBombVTOL("& _bBombVTOL &") _nTemplBomb("& _nTemplBomb &") _nTemplAT("& _nTemplAT &")_nRnd("& _nRnd &") ",player); - //} - - -} -//----------------------------------------------------------------------------- -function void deactivateTankAttack() -{ - tTanksSentToGathering = 0; - tTankAttackAction = 0; - bTankAttIsOn = false; - lTankSentToGatheringPoint = false; - bTankAlreadyGathered = false; - nTankGatheringX = -1; - nTankGatheringY = -1; - tankAttackX = -1; - tankAttackY = -1; - targetPlayerTank = -1; - attackTankObj = NULLOBJECT; - bAttackTeamAttacked = false; - setEventTrigger(TankAttack,inactive); -} -//----------------------------------------------------------------------------- -function void deactivateCybAttack() -{ - bCybAttIsOn = false; - lCybSentToGatheringPoint = false; - bCybAlreadyGathered = false; - cybAttackX = -1; - cybAttackY = -1; - nCybGatheringX = -1; - nCybGatheringY = -1; - targetPlayerCyb = -1; - tCybSentToGathering = 0; - tCybAttackAction = 0; - bAttackTeamAttacked = false; - setEventTrigger(CyborgAttack,inactive); -} -//----------------------------------------------------------------------------- -function void harvestNearOilRes() -{ - local FEATURE _oilRes, _bestOilRes; - local int _player,_tempDist,_bestDist; - local STRUCTURE _hq; - local bool _okToProceed; - - _oilRes = NULLOBJECT; - _bestOilRes = NULLOBJECT; - _okToProceed = true; - _bestDist = 9999*TILE; - - droid = pickCybEng(true);//needed for droidCanReach - if( droid != NULLOBJECT ) { - - initGetFeature(oilRes,player,player); - _oilRes = getFeature(player); - - while(_oilRes != NULLOBJECT) - { - - if ( droidCanReach(droid, _oilRes.x ,_oilRes.y) ) { - - //check oilRes is not in Ally base range - _okToProceed = true; - _player=0; - while (_player < MAX_PLAYERS) - { - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( friendlyPlayer(_player) and ( _player != player) ){//OK - _hq = getStructure( playerHQ , _player); - if ( _hq != NULLOBJECT ){ - if ( distBetweenTwoPoints(_oilRes.x ,_oilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { _okToProceed = false; } - } - } - - _player++; - }//endwhile - - //Check this oilRes is not too far away, trucks will harvest anyway - count = ((mapWidth+mapHeight)/2)*TILE; - count = (count/2);//half map - count2 = distBetweenTwoPoints(_oilRes.x ,_oilRes.y , baseX , baseY); - if ( count2 > count ) - { - _okToProceed = false; - //displayMsg("harvestNearOilRes: oilRes is too far away ("& count2/TILE &" / "& count/TILE &") "); - } - - - //check for threats in range - if ( threatInRange(player ,_oilRes.x, _oilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { _okToProceed = false; } - - if ( _okToProceed ){ - _tempDist = distBetweenTwoPoints(_oilRes.x, _oilRes.y, droid.x, droid.y); - if(_tempDist < _bestDist ) - { - _bestOilRes = _oilRes; - _bestDist = _tempDist; - } - } - - }//endif droidCanReach - - _oilRes = getFeature(player); - }//while - - - } - if ( _bestOilRes != NULLOBJECT ){ - droid = closestIdleDroid(cyborgConstructGroup,_bestOilRes.x,_bestOilRes.y); - if ( nMyDerricks < numMaxDerricks ) { - orderDroidStatsLoc( droid, DORDER_BUILD, derrick, _bestOilRes.x, _bestOilRes.y); - //displayMsg("*** manageIdleTrucks: Cybdroid (" & droid.id & ") build DERRICK (" & _bestOilRes.id & ") coord (" & _bestOilRes.x/TILE & "-" & _bestOilRes.y/TILE & ")" ); - } - } - - return; -} -//----------------------------------------------------------------------------- -//cybEng to help defTruck to biuild defences at gateways -function bool CE_helpBuildGateways() -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - _idleTruck = pickCybEng(true); - - if (_idleTruck != NULLOBJECT ) - { - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - //displayMsg("**** CE_helpBuildGateways: cyb eng ("& _idleTruck.id &") help build a defence "); - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("CE_helpBuildGateways: there is some threat in range for cyb eng ("& _idleTruck.id &") ");} - } - _structurestat = enumStruct(); - } - _i++; - } - } - return false; -} -//----------------------------------------------------------------------------- -function DROID pickCybEng(bool _idleOne) -{ - local DROID _Truck,_tempTruck; - _Truck = NULLOBJECT; - initIterateGroup(cyborgConstructGroup); - _tempTruck = iterateGroup(cyborgConstructGroup); - while(_tempTruck != NULLOBJECT and _Truck == NULLOBJECT) - { - if(_idleOne) - { - if(droidOrderIdle(_tempTruck)) { _Truck = _tempTruck; } - } else { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(cyborgConstructGroup); - }//end while - - return _Truck; -} - -//----------------------------------------------------------------------------- -function int getOilResTargetFree() -{ - local int _i; - _i = 0; - while ( _i < 11 ) - { - //dbg("getOilResTargetFree: _i ("& _i &") id("& oilResTargetId[_i] &")",player); - if (oilResTargetId[_i] == -1) - { - return _i; - } - _i++; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function void checkDerrickIsBuilt(int _player) -{ - local STRUCTURE _structure; - local FEATURE _tempOilRes; - local int _i, _cc,_el; - - //if no oliRes left then reset the array! - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _i = 0; - while(_tempOilRes != NULLOBJECT and _i < MAX_WHILE_LOOPS) - { - _i++; - _tempOilRes = getFeature(player); - } - - if( _i == 0 ){ - //general reset of array - _cc = 0; - while ( _cc < 11 ) - { - oilResTargetId[_cc] = -1; oilResTargetX[_cc] = -1; oilResTargetY[_cc] = -1; - _cc++; - } - } - - _el = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - //displayMsg("checkDerrickIsBuilt player (" & _player & ")" ); /* -------DEBUG MESSAGE -------------- */ - while ( _structure != NULLOBJECT ) - { - while ( _el < 11 ) - { - if (( _structure.x == oilResTargetX[_el] ) and ( _structure.y == oilResTargetY[_el] ) and ( structureComplete(_structure) )) - { - //dbg("*** checkDerrickIsBuilt: derrick (" & _structure.id & ") completed, array pos ("& _el &") is free",player ); /* -------DEBUG MESSAGE -------------- */ - oilResTargetId[_el] = -1; - oilResTargetX[_el] = -1; - oilResTargetY[_el] = -1; - } - //else { if ( _structure.x == oilResTargetX[_el] and _structure.y == oilResTargetY[_el] ){displayMsg("checkDerrickIsBuilt: derrick (" & _structure.id & ") being built" ); }} - _el++; - } - _el = 0; - _structure= enumStruct(); - } -} -//----------------------------------------------------------------------------- -function void stopDroidHarvesting() -{ - local int _player, _dist, _dist2, _c2; - - _player=0; - - if ( harvesterGroup.members == 0 and cyborgConstructGroup.members == 0){return;} - - while ( _player < MAX_PLAYERS ) - { - initEnumStruct(false,derrick,_player,_player); - structure= enumStruct(); - _c2=0; - while ( structure != NULLOBJECT and _c2 < MAX_WHILE_LOOPS) - { - //check harvesting team first - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: truck ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15 * TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){//cannot reach location! - //dbg("dbg->stopDroidHarvesting: harvesting truck ("& droid.id &") cannot build def at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - orderDroid( droid, DORDER_RTB ); - } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting truck ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(harvesterGroup); - } - //check cyborg engineers - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - if( droid.orderx == structure.x and droid.ordery == structure.y ){ - _dist = distBetweenTwoPoints(structure.x,structure.y,droid.x,droid.y); - if( _dist > 3*TILE ){ - //dbg("dbg->stopDroidHarvesting: cyborg ("& droid.id &") harvesting at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - if ( bOilResLeft ){ - //dbg("dbg->stopDroidHarvesting: a) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_STOP ); - } else { - if( _dist < 15* TILE and !threatInRange(player,structure.x,structure.y, THREAT_RANGE_TILES*128, false)){ - //dbg("dbg->stopDroidHarvesting: stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &"), order build def here!!!",player); - boolResult = buildDefStruct(droid,structure.x,structure.y); - if ( !boolResult ){orderDroid( droid, DORDER_RTB ); } - } else { - //dbg("dbg->stopDroidHarvesting: b) stop harvesting cyborg ("& droid.id &") at ("& structure.x/TILE &"-"& structure.y/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - } - } - } - droid = iterateGroup(cyborgConstructGroup); - } - - structure= enumStruct(); - _c2++; - } - _player++; - } - - //check if any threat is in range - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop truck ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(harvesterGroup); - } - - initIterateGroup(cyborgConstructGroup); - droid = iterateGroup(cyborgConstructGroup); - while(droid != NULLOBJECT) - { - _dist2 = distBetweenTwoPoints(baseX,baseY,droid.x,droid.y); - _dist = distBetweenTwoPoints(droid.orderx,droid.ordery,droid.x,droid.y); - if ( _dist2 > nBaseRange and _dist > 4*TILE and threatInRange(player,droid.orderx,droid.ordery, THREAT_RANGE_TILES*128, false) ) - { - //dbg("dbg->stopDroidHarvesting: THREAT stop cyb eng ("& droid.id &") harvesting at ("& droid.orderx/TILE &"-"& droid.ordery/TILE &") distance ("& _dist/TILE &")",player); - orderDroid( droid, DORDER_RTB ); - } - droid = iterateGroup(cyborgConstructGroup); - } - - return; -} -//----------------------------------------------------------------------------- -function bool buildDefStruct(DROID _droid, int _x, int _y ) -{ - local int _t; - _t = max(pickDefQueueDepth - 1 - _random(3),0); - if( isStructureAvailable(pickDefQueue[_t],player) ) - { - buildX = _x ; - buildY = _y ; - if(pickStructLocation(pickDefQueue[_t], ref buildX, ref buildY,player)) - { - if (droidCanReach(_droid, buildX, buildY) ){ - orderDroidStatsLoc(_droid, DORDER_BUILD, pickDefQueue[_t], buildX, buildY); - //displayMsg("buildDefStruct: droid ("& _droid.id &") build def ["& _t &"] best is ["& pickDefQueueDepth &"] " ); - return true; - } - } - } - return false; -} - -//----------------------------------------------------------------------------- -function int getWeaponUnitsInfo( int _player, int _choice) -{ - - if ( _choice == WUI_TOTUNITS){ - return aStat[OC_CYBORGS][_player] + aStat[OC_TANKS][_player]; - } - if ( _choice == WUI_POWER){ - return aStat[OC_CYB_POWER][_player] + aStat[OC_TK_POWER][_player]; - } - if ( _choice == WUI_HP){ - return aStat[OC_CYB_HP][_player] + aStat[OC_TK_HP][_player]; - } - return -1; -} -//----------------------------------------------------------------------------- -function float getPowerIndex(int _player) -{ - - - local RESEARCHSTAT _powUpgrades[7]; - local int _powUpgrPerc[7],_nArr,_index,_nLastRes, _nDerricks; - local float _powIndRet; - _nArr = 7; - - _powUpgrades[0] = powUpgrades0; - _powUpgrades[1] = powUpgrades1; - _powUpgrades[2] = powUpgrades2; - _powUpgrades[3] = powUpgrades3; - _powUpgrades[4] = powUpgrades4; - _powUpgrades[5] = powUpgrades5; - _powUpgrades[6] = powUpgrades6; - - _powUpgrPerc[0] = 125; - _powUpgrPerc[1] = 150; - _powUpgrPerc[2] = 175; - _powUpgrPerc[3] = 200; - _powUpgrPerc[4] = 230; - _powUpgrPerc[5] = 260; - _powUpgrPerc[6] = 290; - - _nLastRes = -1; - _index = 0; - while ( _index < _nArr ){ - if (researchFinished( _powUpgrades[_index],_player) ){ - //displayMsg("getPowerIndex: YES _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" ); - _nLastRes = _index; - } //else { displayMsg("getPowerIndex: NO _player("& _player &") _index("& _index &") completed("& researchFinished( _powUpgrades[_index],_player) &")" );} - _index++; - } - _nDerricks = getNumDerricks(_player); - - if ( _nLastRes != -1 ) - { - _powIndRet = (float)_nDerricks * (float)_powUpgrPerc[_nLastRes]/(float)100; - //displayMsg("dbg -> getPowerIndex: YES _player ("& _player &") derricks("& _nDerricks &") powIndex("& _powIndRet &")" ); - return _powIndRet; - } //else { displayMsg("dbg -> getPowerIndex: NO _player ("& _player &") _nLastRes("& _nLastRes &") " );} - - return (float)_nDerricks; - //researchFinished(res,pl) - -} -//----------------------------------------------------------------------------- -function int getNumDerricks(int _player) -{ - local int _count; - local STRUCTURE _structure; - _count = 0; - initEnumStruct(false,derrick,_player,_player); - _structure= enumStruct(); - while ( _structure != NULLOBJECT ) - { - _count++; - _structure= enumStruct(); - } - return _count; -} - -//----------------------------------------------------------------------------- -// show a debug message, ca be activated/deactivated -function void displayMsg(STRING _message) -{ - if( isHumanPlayer(player) ) - { - dbg(_message, player); - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void dropBeaconToAllies(STRING _message, int _x, int _y, int _z, bool _bToHuman) -{ - local int _toPlayer; - _toPlayer = 0; - - //avoid too many blips... - if ( (gameTime - tBeaconSent) > 2*TIME_MINUTE ){ return; } - - while ( _toPlayer < MAX_PLAYERS ){ - if( friendlyPlayer(_toPlayer) ){ - if ( _bToHuman ){ - if ( isHumanPlayer(_toPlayer) ){ - dropBeacon( _message, _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } else { //send msg to AI - if ( !isHumanPlayer(_toPlayer) ){ - dropBeacon( "a", _toPlayer, player, _x, _y, _z ); - msg( _message, player, _toPlayer); - } - } - } - _toPlayer++; - } - tBeaconSent = gameTime; - return; - -} - -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void sendMsgToAllAllies(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( friendlyPlayer(_c) ) - { - msg(_message, player, _c ); - } - _c++; - } -} -//----------------------------------------------------------------------------- -// show a debug message -> reports error -function void displayErrMsg(STRING _message) -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if( isHumanPlayer(_c) ) - { - dbg(_message, _c); - } - _c++; - } -} -//----------------------------------------------------------------------------- -function STRUCTURE undefendedEnemyDerrick(bool _bVTOLTarget) -{ - local int _bestDist, _tempDist, _targetPl, _dist, _numPl,_nDefInRange; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _numPl = 0;//avoid to start always from player 0 - _targetPl = random(MAX_PLAYERS);//avoid to start always from player 0 - - while(_numPl < MAX_PLAYERS) - { - - if ( !friendlyPlayer(_targetPl) and isPlayerStillLive(_targetPl) ){ - //displayMsg("undefendedEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - if ( _bVTOLTarget ){ - _nDefInRange = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - } else { - _nDefInRange = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - } - - if (_tempDist < _bestDist and _dist > 20*TILE and _nDefInRange < 2){ - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - _tempDerrick = enumStruct(); - }//while - }//struct - - - } - _targetPl++; - if ( _targetPl > 7 ){ _targetPl = 0; } - _numPl++; - }//endwhile players - - return _derrick; -} -//----------------------------------------------------------------------------- -function STRUCTURE closestEnemyDerrick(bool _mustBeHuman, int _targetPlayer) -{ - - local int _bestDist, _tempDist, _targetPl, _dist; - local STRUCTURE _derrick, _tempDerrick, _BaseStruct,_struct; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - _targetPl = 0;//avoid to start always from player 0 - - while(_targetPl < MAX_PLAYERS) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_targetPl) ){ - boolResult = false; - } - //a target player is required? - if ( _targetPlayer >= 0 and _targetPlayer != _targetPl ){ - boolResult = false; - } - - if ( !friendlyPlayer(_targetPl) and boolResult ){ - - //displayMsg("closestEnemyDerrick: derrick x-y("& _targetPl &"-"& count &")"); - //find enemy HQ and check distance to derrick - _dist = 0; - _struct = getStructure(playerHQ,_targetPl); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_targetPl); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_targetPl); - } - - if ( _struct != NULLOBJECT ){ - //only derricks visible to player (myself) are processed - initEnumStruct(false,derrick,_targetPl,player); - _tempDerrick = enumStruct(); - while(_tempDerrick != NULLOBJECT and _struct != NULLOBJECT) - { - _tempDist = distBetweenTwoPoints(_tempDerrick.x, _tempDerrick.y, baseX, baseY); - _dist = distBetweenTwoPoints(_struct.x, _struct.y, _tempDerrick.x, _tempDerrick.y); - - //displayMsg("closestEnemyDerrick: _targetPl("& _targetPl &") _tempDist("& _tempDist/TILE &") _dist("& _dist/TILE &") _tempDerrick("& _tempDerrick.id &") derrick x-y("& _tempDerrick.x/TILE &"-"& _tempDerrick.y/TILE &")"); - if (_tempDist < _bestDist and _dist > 20*TILE ){ - //check distance on big maps, if it is too far away better attack a near enemy. - if ( (mapWidth+mapHeight)/2 > BIG_MAP ) { - if ( _tempDist*TILE < (mapWidth+mapHeight)/2/2 ) { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - } else { - _derrick = _tempDerrick; - _bestDist = _tempDist; - } - - } - _tempDerrick = enumStruct(); - }//while - } - - - } - _targetPl++; - }//endwhile players - - return _derrick; - -} -//----------------------------------------------------------------------------- -/* - Used to pick up the most appropriate Derrick to defend. - It also check that the Derrick has already enough defences or not. -*/ -function STRUCTURE closestDerrickToDefend() -{ - local int _bestDist, _derrickDist; - local STRUCTURE _derrick, _tempDerrick; - local bool _OK1, _OK2; - - _bestDist = 999*TILE; - _derrick = NULLOBJECT; - - initEnumStruct(false,derrick,player,player); - _tempDerrick = enumStruct(); - - if( !isStructureAvailable(pickDefQueue[pickDefQueueDepth],player) ) - { - return _derrick; - } - while(_tempDerrick != NULLOBJECT) - { - _OK1 = false; - _OK2 = false; - _derrickDist = distBetweenTwoPoints(_tempDerrick.x,_tempDerrick.y, baseX, baseY); - if( _derrickDist > min(nBaseRange,15*TILE) ) - { - - //check derrick area - if( numFriendlyWeapStructsInRange(player, _tempDerrick.x, _tempDerrick.y, TILE*5, false) < MAX_DEFSTR_DERRICKS) - { - if ( _derrickDist < _bestDist ) - { - _OK1 = true; - //displayMsg("closestDerrickToDefend: ("& _tempDerrick.id &") distance ("& _OK1 &")("& _OK2 &") !!"); - } - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in DERRICK AREA" ); } - - //now check the building area - buildX = _tempDerrick.x; - buildY = _tempDerrick.y; - boolResult = pickStructLocation(pickDefQueue[pickDefQueueDepth], ref buildX, ref buildY, player); - if(boolResult) - { - //check for defence structs in BUILDING area, this is an HACK - if( numFriendlyWeapStructsInRange(player, buildX, buildY, TILE*6, false) < MAX_DEFSTR_DERRICKS){ - _OK2 = true; - } //else { displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") already with defences in BUILD AREA" ); } - } //else { displayMsg("closestDerrickToDefend: cannor build a def struct around ("& _tempDerrick.id &") " ); } - - if ( _OK1 and _OK2 ) - { - _derrick = _tempDerrick; - _bestDist = _derrickDist; - } - - } //else { //displayMsg("closestDerrickToDefend: derrick ("& _tempDerrick.id &") is in the base" ); } - _tempDerrick = enumStruct(); - }//endwhile - return _derrick; -} -//----------------------------------------------------------------------------- -//Pick up the closest oilRes at given coord and check that oliRes is not already -//a "target" of another droid -function STRUCTURE closestOilRes(DROID _droid, int _x, int _y) -{ - local int _bestDist,_tempDist, _nOilResFound, _i, _ii, _player; - local FEATURE _closestOilRes,_tempOilRes; - local bool _okToProceed; - local STRUCTURE _hq; - - _bestDist = 999*TILE; - _closestOilRes = NULLOBJECT; - _okToProceed = TRUE; - _nOilResFound = 0; - - _player=0; - while (_player < MAX_PLAYERS) - { - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - _ii = 0; - while(_tempOilRes != NULLOBJECT and _ii < MAX_WHILE_LOOPS) - { - - //check the oilRes can be reached - if ( _droid != NULLOBJECT ){//droid is set in harvestoperate and cannot be NULLOBJECT - if ( !droidCanReach(_droid, _tempOilRes.x ,_tempOilRes.y)){ - _okToProceed = false; - } - } else { - _okToProceed = false; - } - //displayMsg("OilRes ("& _tempOilRes.id &") @("& _tempOilRes.x/TILE &")("& _tempOilRes.y/TILE &") can be reached ("& _okToProceed &") by droid ("& _droid.id &")"); - - //check that this OilRes is not already a "target" of a droid - _i = 0; - while (_i < 11) - { - if ( _tempOilRes.id == oilResTargetId[_i] ){ - _okToProceed = false; - } - _i++; - } - - //check oilRes is not in range of an Ally base, leave this oilRes to the Ally - if ( _okToProceed and (_player != player) and allianceExistsBetween(_player,player) ){//OK - _hq = getStructure(playerHQ,_player); - if ( _hq != NULLOBJECT ) { - if( distBetweenTwoPoints(_tempOilRes.x ,_tempOilRes.y ,_hq.x ,_hq.y) < 15 * TILE ) - { - _okToProceed = false; - } - } - } - - //check for threats in range - if( gameTime > TIME_HARVESTING_PHASE ){ - if( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_LONG*128, false) ) - { - _okToProceed = false; - } - } else { - if ( threatInRange(player ,_tempOilRes.x, _tempOilRes.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - _okToProceed = false; - } - } - - - if ( _okToProceed ) { - _tempDist = distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y); - //displayMsg("Closest Oil Res: oilRes ("& _tempOilRes.id &") dist / best ("& _tempDist/TILE &" / "& _bestDist/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); - if (_tempDist < _bestDist ) - { - _closestOilRes = _tempOilRes; - _bestDist = _tempDist; - } - } //else { displayMsg("Closest Oil Res: player ("& player &") cannot proceed for oilRes ("& _tempOilRes.id &") dist ("& distBetweenTwoPoints(_tempOilRes.x, _tempOilRes.y, _x, _y)/TILE &") ("& _tempOilRes.x/TILE &"-"& _tempOilRes.y/TILE &")"); } - _tempOilRes = getFeature(player); - _nOilResFound++; - _okToProceed = true; - _ii++; - } - _player++; - } - - return _closestOilRes; -} - -//----------------------------------------------------------------------------- -function DROID getADroid(GROUP _theGRP) -{ - local DROID _tempTruck,_returnTruck; - - _returnTruck = NULLOBJECT; - - initIterateGroup(_theGRP); - _tempTruck = iterateGroup(_theGRP); - while(_tempTruck != NULLOBJECT) - { - _returnTruck = _tempTruck; - _tempTruck = iterateGroup(_theGRP); - } - - return _returnTruck; -} -//----------------------------------------------------------------------------- -function bool droidOrderIdle(DROID _droid) -{ - if(_droid.order == DORDER_RTB){ - return true; - } - - if(_droid.order == DORDER_STOP){ - return true; - } - - if(_droid.order == DORDER_NONE){ - return true; - } - - if(_droid.order == DORDER_GUARD){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function void debugCentreView(DROID _droid) -{ - - local int _player; - _player = 0; - if( debugCenterView == true ){ - while(_player < 8) - { - if( isHumanPlayer(_player) and allianceExistsBetween(_player,player) ) { //OK - centreView(_droid); - } - _player++; - } - } -} - -//----------------------------------------------------------------------------- -function DROID pickDefTruck(bool _idleOne) -{ - local DROID _tempTruck, _Truck; - - _Truck = NULLOBJECT; - - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - //let`s try with really idle one - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) ) { - _Truck = _tempTruck; - } - if ( !_idleOne ){ - if ( _tempTruck.order == DORDER_HELPBUILD ){ - _Truck = _tempTruck; - } - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - - //now try with trucks just helping or repairing - if ( _Truck == NULLOBJECT ){ - initIterateGroup(buildDefGroup); - _tempTruck = iterateGroup(buildDefGroup); - while( _tempTruck != NULLOBJECT and _Truck == NULLOBJECT ) - { - if( droidOrderIdle(_tempTruck) or _tempTruck.order == DORDER_HELPBUILD or _tempTruck.order == DORDER_REPAIR) { - _Truck = _tempTruck; - } - _tempTruck = iterateGroup(buildDefGroup); - }//end while - } - - return _Truck; -} -//----------------------------------------------------------------------------- -// use numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, onlycompletedStruct); -function void buildGatewayDef(DROID _defTruck, int _pos) -{ - local int _x,_y,_nDefBuilt; - - if (_defTruck == NULLOBJECT ){ return; } - - _x = aGatewayPosX[_pos]; - _y = aGatewayPosY[_pos]; - //dbg("dbg->buildGatewayDef(): START numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x &"-"& _y &")",player); - if(pickWallDefQueueDepth <= 0 and pickDefQueueDepth <= 0){ - //dbg("dbg->buildGatewayDef(): No wall def available",player); - return; - } - - if ( pickWallDefQueueDepth > 0 ){ - //wall defences - - count = max(0,pickWallDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - if(isStructureAvailable(pickWallDefQueue[count],player)){ - skDefenseLocationB(ref _x, ref _y, wall, pickWallDefQueue[count], _defTruck, player); - //dbg("dbg->buildGatewayDef(): droid ("& _defTruck.id &") build WALL def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): build WALL def ["& count &"], best is ["& pickWallDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - - } else { - - //standard defences - count = max(0,pickDefQueueDepth - random(2) - 1);//best 2 defences only (0,1) - boolResult = isStructureAvailable(pickDefQueue[count],player); - //dbg("dbg->buildGatewayDef(): STD count("& count &") avail("& boolResult &") numDefStrAtGateway("& numDefStrAtGateway &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if( isStructureAvailable(pickDefQueue[count],player) ){ - - _x = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 0);//_x - _y = getSafeBuildCoord( _defTruck, pickDefQueue[count], _x, _y, 1);//_y - boolResult = pickStructLocation(pickDefQueue[count], ref _x, ref _y, player); - boolResult2 = droidCanReach(_defTruck, _x ,_y); - //dbg("dbg->buildGatewayDef(): STD droid can reach ("& boolResult2 &") _x/_y("& _x/TILE &"-"& _y/TILE &")",player); - if(boolResult and droidCanReach(_defTruck, _x ,_y)){ - orderDroidStatsLoc(_defTruck, DORDER_BUILD,pickDefQueue[count], _x, _y); - lastBuildDefX = _x;//store coord needed to check if struct has been built - lastBuildDefY = _y; - //dbg("buildGatewayDef: build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")",player); - printDebug1("buildGatewayDef(): droid build STD def ["& count &"], best is ["& pickDefQueueDepth &"] - at("& _x/TILE &"-"& _y/TILE &")"); - } - } - - } -} -//----------------------------------------------------------------------------- -// _x and _y are changed per reference -function int getSafeBuildCoord( DROID _droid, STRUCTURESTAT _struct, int _x, int _y, int _choice) -{ - local int _x1, _y1, _c1, _c2, _c3, _aX[8], _aY[8], _aD[8]; - - _c3 = 0; - while ( _c3 < 8){ - _aX[_c3] = -1; - _aY[_c3] = -1; - _aD[_c3] = -1; - _c3++; - } - - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - } - - _x1 = _x; _y1 = _y; - _c3 = 1; _c2 = 0; - while ( _c3 < 3){ - - _x = _x1 + _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - //dbg("dbg->getSafeBuildCoord: try x-y("& _x/TILE &"-"& _y/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 + _c3*TILE; - _y = _y1 - _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _x = _x1 - _c3*TILE; - _y = _y1 + _c3*TILE; - boolResult = pickStructLocation(_struct, ref _x, ref _y, player); - boolResult2 = droidCanReach(_droid, _x ,_y); - if ( boolResult and boolResult2 ){ - _aX[_c2] = _x; - _aY[_c2] = _y; - _aD[_c2] = distBetweenTwoPoints(_x,_y,_x1,_y1); - //dbg("dbg->getSafeBuildCoord: added in _c2("& _c2 &") x-y("& _aX[_c2]/TILE &"-"& _aY[_c2]/TILE &") dist ("& _aD[_c2]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - _c2++; - } - - _c3++; - } - - _c3 = 0; - _c1 = 9999*TILE; - //find the nearest place to build - while ( _c3 < _c2 ){ - //dbg("dbg->getSafeBuildCoord: ("& _aX[_c3]/TILE &"-"& _aY[_c3]/TILE &") dist ("& _aD[_c3]/TILE &"/"& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - if ( _aD[_c3] < _c1 ){ - _x = _aX[_c3]; - _y = _aY[_c3]; - _c1 = _aD[_c3]; - } - _c3++; - } - - //dbg("dbg->getSafeBuildCoord: safe build pos found in ("& _x/TILE &"-"& _y/TILE &") dist ("& _c1/TILE &") from ("& _x1/TILE &"-"& _y1/TILE &")",player); - - if ( _choice == 0 ){ return _x; } - if ( _choice == 1 ){ return _y; } - - return -1; - -} -//----------------------------------------------------------------------------- -function bool isDefStrComplete() -{ - local STRUCTURE _defense; - local int _i; - - _i=0; - _defense = NULLOBJECT; - - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - //displayMsg("isDefStrComplete: looping def struct ("& _i &") at ("& _defense.x &"-"& _defense.y &") "); - if(_defense.x==lastBuildDefX and _defense.y==lastBuildDefY){ - //displayMsg("isDefStrComplete: found def struct at ("& lastBuildDefX &"-"& lastBuildDefY &") "); - if(!structureComplete(_defense)){ - //displayMsg("isDefStrComplete: def NOT complete "); - return false; - } else { - //displayMsg("isDefStrComplete: def IS complete "); - return true; - } - } - _defense = enumStruct(); - } - _i++; - }//endwhile - - //displayMsg("isDefStrComplete: OUT OF THE LOOP "); - return false; -} -//----------------------------------------------------------------------------- -//sends the defTruck to help building structures. -//It checks there are no threat in range. -function bool helpBuild(int _group) -{ - local DROID _idleTruck; - local STRUCTURE _structurestat; - local int _i; - - _i=0; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for def structures first - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //look for for incendries - //numIncendrys INT 8 - //incendrys[7] STRUCTURESTAT "Emplacement-MortarPit01" - //look for def structures first - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - - //look for anti a. - //numAA INT 6 - //vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if ( !structureComplete(_structurestat) ){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - if (_idleTruck == NULLOBJECT){ return false; } - - //look for Fortresses structs. - //numFortressDef - //fortressDef[0] - _i=0; - while(_i < numFortressDef ) - { - initEnumStruct(FALSE,fortressDef[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - - //look for Essential structs. - //numStructs - //structs[0] - _i=0; - while(_i < numStructs ) - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structurestat = enumStruct(); - while (_structurestat != NULLOBJECT){ - if(!structureComplete(_structurestat)){ - if ( !threatInRange(player,_structurestat.x, _structurestat.y, THREAT_RANGE_TILES_SHORT*128, false) ) - { - if (droidCanReach(_idleTruck, _structurestat.x, _structurestat.y) ){ - orderDroidObj(_idleTruck,DORDER_HELPBUILD,_structurestat); - return true; - } - } //else {displayMsg("helpBuild: there is some threat in range");} - } - _structurestat = enumStruct(); - }//while struct - _i++; - }//While _i - - //displayMsg("helpBuild: no structs found"); - return false; -} - - -//----------------------------------------------------------------------------- -//search for the most damaged structure in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i,_numStrToCheck; - local STRUCTURE _structure, _mostDamagedStructure; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedStructure = NULLOBJECT; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - - - _i = 0; - _numStrToCheck = (numBaseStructs - 1); - while( _i < _numStrToCheck )//exclude derricks, threated below in this function - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - //if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES*128, false) ) - //{ - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - //} - } - _structure = enumStruct(); - } - _i = _i + 1; - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - initEnumStruct(false,derrick,player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _tempDamage = 100 - _structure.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_structure.x, _structure.y, THREAT_RANGE_TILES_SHORT*128, false) and distBetweenTwoPoints(_structure.x, _structure.y, baseX, baseY) < nDefendRange ) { - if(_tempDamage > _mostDamage){ - _mostDamage = _tempDamage; - _mostDamagedStructure = _structure; - } - } - } - _structure = enumStruct(); - } - - if(_mostDamagedStructure != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedStructure); - return true; - } - - return false; -} - -//----------------------------------------------------------------------------- -//search for the most damaged sefense in the base and repair it -//if found return true, otherwise return false. Return false also -// if not idle trucks are found. it checks there are no threats in range -function bool repairDefStructs(int _group) -{ - local int _mostDamage,_tempDamage, _i; - local STRUCTURE _defense, _mostDamagedDefense; - local DROID _idleTruck; - - _mostDamage = 0; - _mostDamagedDefense = NULLOBJECT; - - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ - _idleTruck = pickDefTruck(true); - } - if (_group == CYBENG_GRP){ - _idleTruck = pickCybEng(true); - } - if (_group == BUILD_GRP){ - _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); - } - if (_group == HARVEST_GRP){ - _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); - } - - if (_idleTruck == NULLOBJECT){ return false; } - -//look for vtol def - _i=0; - while(_i < numAA ) - { - initEnumStruct(FALSE,vtolDefStruct[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - // displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - _i=0; - //look for def structures - while(_i < pickDefQueueDepth ) - { - initEnumStruct(FALSE,pickDefQueue[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for for incendries - _i=0; - while(_i < numIncendrys ) - { - initEnumStruct(FALSE,incendrys[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if(distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT) - { - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - - //double check... - if (_idleTruck == NULLOBJECT){ return false; } - - //look for sensor types - //numSense INT 3 - //sense[0] STRUCTURESTAT "Sys-SensoTowerWS" - _i=0; - while(_i < numSense ) - { - initEnumStruct(FALSE,sense[_i],player,player); - _defense = enumStruct(); - while (_defense != NULLOBJECT){ - if( distBetweenTwoPoints(_defense.x, _defense.y, baseX, baseY) < nDefendRange ){ - _tempDamage = 100 - _defense.health; - if(_tempDamage >= STRUCT_REPAIR_DAMAGE){ - if ( !threatInRange(player,_defense.x, _defense.y, THREAT_RANGE_TILES*128, false) ) { - if(_tempDamage > _mostDamage) { - _mostDamage = _tempDamage; - _mostDamagedDefense = _defense; - } - } - } - } - _defense = enumStruct(); - }//while struct - _i++; - }//While _i - if(_mostDamagedDefense != NULLOBJECT){ - //displayMsg("**** repairDefStructs: found a damaged def struct damage=("& _mostDamage &") "); - orderDroidObj(_idleTruck, DORDER_REPAIR, _mostDamagedDefense); - return true; - } - return false; -} - -//----------------------------------------------------------------------------- -/* -update gateways coordinate -this works for now with maps with at least 2 gateways near the base -*/ -function int updateGateways() -{ - local int _x,_y,_tx,_ty,_i,_xx[4],_yy[4]; - local float _basecoordX,_basecoordY; - local int _dist; - - _x = 0; - _y = 0; - - _i=0; - while (_i<4){ - _xx[_i] = -1; - _yy[_i] = -1; - _i++; - } - - //displayMsg("updateGateways:MAP DIMENSIONS("& mapWidth &"-"& mapHeight &")"); - - //corner 1 - _tx = max( baseX-TILE*8 , 0 ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 1 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - //displayMsg("updateGateways:Base coord 1a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[0] = _x; - _yy[0] = _y; - }//else {displayMsg("updateGateways:Base coord 1 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 2 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ){ - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 2 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 2a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[1] = _x; - _yy[1] = _y; - } - }//else {displayMsg("updateGateways:Base coord 2 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 3 - _x = 0; - _y = 0; - _tx = min( baseX+TILE*8 , mapWidth*TILE ); - _ty = max( baseY-TILE*8 , 0 ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 3 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 3a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[2] = _x; - _yy[2] = _y; - } - }//else {displayMsg("updateGateways:Base coord 3 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - //corner 4 - _x = 0; - _y = 0; - _tx = max( baseX-TILE*8 , 0 ); - _ty = min( baseY+TILE*8 , mapHeight*TILE ); - _basecoordX = (float)_tx/(float)TILE; - _basecoordY = (float)_ty/(float)TILE; - if ( getNearestGateway( (int)_basecoordX, (int)_basecoordY, ref _x, ref _y ) ) - { - _dist = distBetweenTwoPoints(baseX, baseY, _x*TILE, _y*TILE); - //displayMsg("updateGateways:Base coord 4 dist("& _dist/TILE &") - ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - if( _dist < gatewaysRangeTiles*TILE) { - if( (_xx[0]+_yy[0] != _x+_y) and (_xx[1]+_yy[1] != _x+_y) and (_xx[2]+_yy[2] != _x+_y) ) { - //displayMsg("updateGateways:Base coord 4a ("& baseX/TILE &"-"& baseY/TILE &") = ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways found at ("& _x &")-("& _y &") "); - _xx[3] = _x; - _yy[3] = _y; - } - }// else {displayMsg("updateGateways:Base coord 4 ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways ("& _x &")-("& _y &") NOT IN RANGE ("& gatewaysRangeTiles*128 &")");} - }//else {displayMsg("Base coord ("& (int)_basecoordX &")-("& (int)_basecoordY &") gateways NOT found ");} - - - //find out how many gateways have been found - _i=0; - while ( _i < 4 ) { - if( _xx[_i] > 0 and _yy[_i] > 0 ) { - //displayMsg("updateGateways: gateways stored at x:("& _xx[_i] &"-"& _yy[_i] &")"); - aGatewayPosX[nRealGatewaysFound] = _xx[_i]*TILE; - aGatewayPosY[nRealGatewaysFound] = _yy[_i]*TILE; - _dist = distBetweenTwoPoints(baseX, baseY, aGatewayPosX[nRealGatewaysFound], aGatewayPosY[nRealGatewaysFound]); - nRealGatewaysFound++; - printDebug1( "gateway #"& nRealGatewaysFound &" coord x-y" & _xx[_i] & "-" & _yy[_i] &" dist from base("& _dist/TILE &") defend range("& nDefendRange/TILE &")" ); - } - _i++; - }//endwhile - - /* - if (nRealGatewaysFound == 0){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 1){ - numDefStrAtGateway = 5; - } - if (nRealGatewaysFound == 2){ - numDefStrAtGateway = 4; - } - if (nRealGatewaysFound == 3){ - numDefStrAtGateway = 3; - } - if (nRealGatewaysFound == 4){ - numDefStrAtGateway = 2; - } - if (nRealGatewaysFound > 4){ - numDefStrAtGateway = 2; - } - */ - numDefStrAtGateway = 1; - //reSortGateways - put the gateways near to the enemy on the top of the array. - //reSortGateways(); - //displayMsg("*** updateGateways: tot REAL gateways found: ("& nRealGatewaysFound &")" ); - - return nRealGatewaysFound;//default is 0 -} - -//----------------------------------------------------------------------------- -function void initAssignUnitToGrp() -{ - local GROUP xGRP; - local DROID _droid; - local int cc,_tot; - - cc=0; - groupAddArea(xGRP, player, 0, 0, (mapWidth*128), (mapHeight*128)); - initIterateGroup(xGRP); - droid = iterateGroup(xGRP); - while(droid != NULLOBJECT) - { - assignDroidToGrp(droid); - droid = iterateGroup(xGRP); - } - - //in assignDroidToGrp all trcks are assigned as default to buildGroup - _tot = buildGroup.members; - if ( _tot == 2 or _tot == 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - if ( _tot > 3 ){ - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - _droid = getADroid(buildGroup); - if (_droid != NULLOBJECT){ - groupAddDroid(harvesterGroup, _droid ); - } - } - -} -//----------------------------------------------------------------------------- -function void updateBaseRange() -{ - - local int _baseRange,_i,_result; - - maxy = 0; maxx = 0; - miny = (mapHeight*128); minx = (mapWidth*128); - - _baseRange = 1; //avoid possible div by 0 - aaRange = 1; - - _i = 0; - while( _i+1 < numBaseStructs )//need +1 to exclude the derricks!!! - { - initEnumStruct(FALSE,baseStructs[_i],player,player); - structure = enumStruct(); - while(structure != NULLOBJECT) - { - if(structure.x < minx){minx = structure.x;} - if(structure.x > maxx){maxx = structure.x;} - if(structure.y < miny){miny = structure.y;} - if(structure.y > maxy){maxy = structure.y;} - - _result = distBetweenTwoPoints(baseX, baseY, structure.x, structure.y); - if(_result > _baseRange){_baseRange = _result;} - - structure = enumStruct(); - } - _i = _i + 1; - } - - _result = 7 * TILE; - - minx = minx - _result; maxx = maxx + _result; - miny = miny - _result; maxy = maxy + _result; - - if(minx < 0){minx = TILE;} - if(miny < 0){miny = TILE;} - if(maxx > (mapWidth * TILE)){maxx = (mapWidth * TILE) - TILE;} - if(maxy > (mapHeight * TILE)){maxy = (mapHeight * TILE) - TILE;} - - aaRange = _baseRange + TILE; //between the base and _baseRange - - nBaseRange = _baseRange + (5 * TILE); -} - -//----------------------------------------------------------------------------- -function void updateDefendRange() -{ - - local int _n,_g; - - //Update nDefendRange - _n = 0; - _g = 999*TILE; - while ( _n < MAX_PLAYERS ) - { - if ( !friendlyPlayer(_n) ) {//replace the code below with initenumstruct() - structure = getStructure(playerHQ,_n); - if ( structure == NULLOBJECT ){ structure = getStructure(factory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(powGen,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(vtolFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(cybFactory,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(uplinkCenter,_n); } - if ( structure == NULLOBJECT ){ structure = getStructure(resLab,_n); } - if ( structure != NULLOBJECT ){ - if ( distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y) < _g ) - { - _g = distBetweenTwoPoints(baseX ,baseY ,structure.x ,structure.y);//best dist - } - } - } - _n++; - } - if ( _g != 999*TILE ){ - nDefendRange = _g/2; - } else { - - if ( nPlayersInGame > 1 ){ - if (nPlayersInGame < 5 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 2 ); - } else if (nPlayersInGame < 8 ){ - nDefendRange = (int)(float)( ( max(mapWidth,mapHeight)*TILE ) / 4 ); - } - nDefendRange = (int)((float)(nDefendRange)*0.7); - } - - } - - if (nDefendRange < nBaseRange){ //double check... - nDefendRange = nBaseRange + 8*TILE; - } - - if (nDefendRange > MAX_DEFEND_RANGETILES*TILE){ //do not make it too big - nDefendRange = MAX_DEFEND_RANGETILES*TILE; - } -} -//----------------------------------------------------------------------------- -//update base coordinates dinamically -function void updateBaseCoord() -{ - local STRUCTURE _structure; - local DROID _truck; - local bool _bHaveBaseStructs; - local int _index,_baseX,_baseY,_numBaseStructs,_bucket; - - _bHaveBaseStructs = FALSE; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct(FALSE,baseStructs[_index],player,player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - baseX = (_baseX / _numBaseStructs) * TILE; - baseY = (_baseY / _numBaseStructs) * TILE; - } - else - { - - _truck = getADroid(buildGroup); - if(_truck == NULLOBJECT) - { - _truck = getADroid(harvesterGroup); - } - if(_truck == NULLOBJECT) - { - _truck = getADroid(buildDefGroup); - } - - - if(_truck != NULLOBJECT){ - baseX = _truck.x; - baseY = _truck.y; - }else{ - baseX = (TILE * mapWidth) / 2; - baseY = (TILE * mapHeight) / 2; - displayMsg("### Couldn't find base location for " & getPlayerName(player)); - } - - } -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_CheapResearch(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _ii; - - /* current tech tree */ - _tech = 0; //0=tank - _nn = 0; - - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 2);//1=standard res, 2= cheap - if(_lastResIndex > -1) //found research - { - _bStarted = pursueResearch(_resFac,player,researchCheap[_tech][_lastResIndex]); - if ( _bStarted ){ - tLastResearch = gameTime; - //displayMsg("*** do_CheapResearch : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_CheapResearch : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &")"); - } //else {displayMsg("### do_CheapResearch: COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,researchCheap[_tech][_lastResIndex]) &") researchFinished("& researchFinished(researchCheap[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(researchCheap[_tech][_lastResIndex],player)&") lStopResearch("& lStopResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else - { - _bStarted = TRUE; //make loop end, no research found - } - - _nn++; - } - - if(!_bStarted) {return -1;} - return _lastResIndex; -} -//perform a research o resLab _resFac on the _lastResIndex+1 item -//returns -1 if no researches have started -//----------------------------------------------------------------------------- -function int do_Research(STRUCTURE _resFac, int _lastResIndex) -{ - local bool _bStarted; - local int _tech, _nn, _VTOLprob; - - /* current tech tree */ - _tech = 0; //0=tank 1=VTOL research - _nn = 0; - - //VTOL AI - if ( AIPersonality == AI_VTOL ){ - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 99; //max spped VTOL research - } else { - _VTOLprob = 40; - } - } else { - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 40; - } - } - } - - //Other AIs - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - _VTOLprob = 50; - } else { - _VTOLprob = 25; - } - } else { - _VTOLprob = 20; - } - - if ( random(100) > _VTOLprob ){ - _tech = 0;//standard researches - } else { - _tech = 9;//VTOL - } - - _bStarted = false; //this res lab idle for now - while(not _bStarted and _nn < 100) - { - - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("*** do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - - } - else //try with second block - { - if ( _tech == 0 ){ //was not researching VTOL stuff - //Try array research block #2 - _tech = 1; - _lastResIndex = find_Research(_lastResIndex + 1, _tech, 1);//1=standard Research - if(_lastResIndex > -1){ - _bStarted = pursueResearch(_resFac,player,research[_tech][_lastResIndex]); - if ( _bStarted ){ - //displayMsg("do_Research : pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); - printDebug1("do_Research : pursue ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") nProdSelect("& nProdSelect &") power("& playerPower(player) &") _VTOLprob("& _VTOLprob &"%)"); - tLastResearch = gameTime; - } //else { displayMsg("### do_Research : COULD NOT pursue: ["& _tech &"]["& _lastResIndex &"] steps left ("& numResearchLeft(player,research[_tech][_lastResIndex]) &") researchFinished("& researchFinished(research[_tech][_lastResIndex],player)&") researchStarted("& researchStarted(research[_tech][_lastResIndex],player)&") lStopCheapResearch("& lStopCheapResearch &") nProdSelect("& nProdSelect &") lStopCheapResearch("& lStopCheapResearch &") pow("& playerPower(player) &")"); } - } else { - _bStarted = true; //make loop end, no research found - } - } else {//was researching VTOL stuff - _bStarted = true; //make loop end, no research found - } - } - - _nn++; - } - - - if(!_bStarted) - { - return -1; - } - - return _lastResIndex; -} -//----------------------------------------------------------------------------- -// return the _resIndex to be used for pursueResearch(_resFac,me,research[_tech][_resIndex]) -// if not research is found returns -1 -function int find_Research(int _searchStart, int _techTree, int whichArray) -{ - local int _retInt; - - ASSERT(_searchStart >= 0, "findResearch: _searchStart < 0", player); - ASSERT(_techTree >= 0, "findResearch: _techTree < 0", player); - - if ( whichArray == 1 ){// =============== STANDARD RESEARCH ================== - - //find research to pursue - _retInt = _searchStart; - while(_retInt < numRes[_techTree]) - { - if((not researchFinished(research[_techTree][_retInt], player)) and (not researchStarted(research[_techTree][_retInt], player))) - { - //displayMsg("Standard Research found ("& _retInt &") "); - return _retInt; //found research - } - _retInt++; - } - - } else { // =============== CHEAP RESEARCH ================== - - while(_retInt < numCheapRes[0]) - { - if((not researchFinished(researchCheap[_techTree][_retInt], player)) and (not researchStarted(researchCheap[_techTree][_retInt], player))) - { - //displayMsg("Cheap Research found ("& _retInt &") "); - return _retInt; //found research - } //else {displayMsg("Cheap Research index ("& _retInt &") cannot be researched "); } - _retInt++; - } - - } - - _retInt = -1; //not found - return(_retInt); -} -//----------------------------------------------------------------------------- -function int numStructsByType(STRUCTURESTAT _structure, int _player) -{ - local STRUCTURE _str; - local int _count; - - _count=0; - - initEnumStruct(false,_structure,_player,_player); - _str = enumStruct(); - while(_str != NULLOBJECT) - { - _count++; - _str = enumStruct(); - } - return _count; -} -//----------------------------------------------------------------------------- -function DROID nearestDroidToBeRepaired(GROUP _group, int _x, int _y) -{ - local DROID _droid, _damagedUnit; - local int _tmpDist; - - _tmpDist = 999*TILE; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < MIN_HEALT_REPAIR_BASE ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - //check for damaged units _droid.health < 95 - if ( _damagedUnit == NULLOBJECT ){ - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - if( _droid.health < 95 ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, _x, _y) < _tmpDist) - { - _tmpDist = distBetweenTwoPoints( _droid.x, _droid.y, _x, _y); - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -function DROID unitToBeRepaired(GROUP _group) -{ - local DROID _droid, _damagedUnit; - local int _tmpDamage, _damage; - - _tmpDamage = 0; - _damagedUnit = NULLOBJECT; - - initIterateGroup(_group); - _droid = iterateGroup(_group); - while(_droid != NULLOBJECT) - { - _damage = 100 - _droid.health; - if( _droid.health < MIN_HEALT_REPAIR_BASE and _damage >_tmpDamage ) - { - if(distBetweenTwoPoints( _droid.x, _droid.y, baseX, baseY) < nBaseRange) - { - _tmpDamage = _damage; - _damagedUnit = _droid; - } //else{ displayMsg("*** unitToBeRepaired: damaged unit ("& _droid.id &") with damage ("& _droid.health &") not in basereange "); } - } - _droid = iterateGroup(_group); - } - - return _damagedUnit; -} -//----------------------------------------------------------------------------- -// check if the repair droid itself has to be repaired or not. -function DROID idleRepairDroid(int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - initIterateGroup(repairGroup); - _tempTruck = iterateGroup(repairGroup); - while(_tempTruck != NULLOBJECT) - { - //if less then I cannot pick him up to avoid self repair - if( _tempTruck.health > MIN_HEALT_REPAIR_BASE ) { - if(_tempTruck.order != DORDER_DROIDREPAIR) { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - } - _tempTruck = iterateGroup(repairGroup); - } - return _closestTruck; -} -//----------------------------------------------------------------------------- -function void moveUnitsBetweenGRPs(GROUP _toGRP, GROUP _fromGRP, int _unitsToMove, bool _bNoTrucks) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - //If requested, leave trucked droids in defend group - if (_bNoTrucks ){ - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove and _tempTruck != NULLOBJECT){ - if ( _tempTruck.propulsion != TrackedProp ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - } - _tempTruck = iterateGroup(_fromGRP); - } - } - - //move the remaining units - initIterateGroup(_fromGRP); - _tempTruck = iterateGroup(_fromGRP); - while ( _c < _unitsToMove ){ - groupAddDroid(_toGRP, _tempTruck); - _c++; - _tempTruck = iterateGroup(_fromGRP); - } - -} -//----------------------------------------------------------------------------- -function void attackedByDroid(DROID _droid) -{ - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _droid == NULLOBJECT ){ return; } - - boolResult = true; - _nOldAlertDistFromBase = 9999*TILE; - _nOldEnWeapDroids = 0; - - if (_droid.player<0 or _droid.player>7){ - //dbg("dbg->attackedByDroid: droid.player is not in 0-7 range ("& _droid.player &") ",player); - return; - } - if( isVtol(_droid) ){ - //set target for VTOLs - if ( defTargetVTOL == NULLOBJECT ){ - defTargetVTOL = _droid; - targetPlayerVTOL = _droid.player; - bVTOLTargetIsDerrick = false; - } - return; - } - - - _nNewAlertDistFromBase = distBetweenTwoPoints(_droid.x,_droid.y,baseX,baseY); - - //get VTOL target - if ( _nNewAlertDistFromBase < nDefendRange and vtolDefendGr.members > 0 and defTargetVTOL == NULLOBJECT and attTargetVTOL == NULLOBJECT ){ - defTargetVTOL = objDroidTargetInRange(_droid.x,_droid.y,TILE*12,true); - if ( defTargetVTOL == NULLOBJECT ){ - //displayMsg("AIAttacked: FAILED to get a droid target in range for VTOLs"); - defTargetVTOL = _droid; - bVTOLTargetIsDerrick = false; - if ( targetPlayerVTOL < 0 ){ targetPlayerVTOL = _droid.player; } - } //else { displayMsg("AIAttacked: SUCCESSFUL to get a Target in defend range for VTOLs"); } - } - - _nEnWeapDroids = numEnemyWeapDroidsInRange(player, _droid.x, _droid.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _droid.x, _droid.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - //if it is a new second alert check which one is the nearest to the base - if (alertIsOn and alertX>0 and alertY>0){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnNewWeapDroids ){ - boolResult = false; - } - //if new alert is within the base this has priority 1!! - if ( boolResult and _nNewAlertDistFromBase > nBaseRange and _nOldAlertDistFromBase < nBaseRange ){ - boolResult = false; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - // move all untis in tankDefGrp - if (alertLevel == RED_ALERT){ - if (tankGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - deactivateTankAttack(); - } - if (cyborgAttGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - deactivateCybAttack(); - } - if (helpGroup.members>0){ - //displayMsg("attackedByDroid: RED ALERT all helping units back!"); - msg("My base is in trouble recalling "& helpGroup.members &" helping units back", player, nAllyBeingHelped); - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup , helpGroup); - } else { - groupAddGroup(tankDefGroup , helpGroup); - } - deactivateHelp(); - } - //ask for help, recalculate my units - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - - } - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function void attackedByStruct(STRUCTURE _struct) -{ - - local int _nEnNewWeapDroids,_nOldEnWeapDroids,_nNewAlertDistFromBase,_nOldAlertDistFromBase; - local int _nEnWeapDroids,_nFrWeapStructs,_nFrWeapDroids,_nTotFriendlyWapons; - - if ( _struct == NULLOBJECT ){ return; } - - boolResult = true; - if (_struct.player<0 or _struct.player>7){ - return; - } - - //set as VTOL target - defTargetVTOL = _struct; - targetPlayerVTOL = _struct.player; - bVTOLTargetIsDerrick = false; - - //// IF targetPl NOT SET - PUNISH THE OFFENDER - _nNewAlertDistFromBase = distBetweenTwoPoints(_struct.x,_struct.y,baseX,baseY); - _nEnWeapDroids = numEnemyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE , false); - _nFrWeapStructs = numFriendlyWeapStructsInRange(player, _struct.x, _struct.y, COMBAT_RANGE, false); - _nFrWeapDroids = tankDefGroup.members + cyborgDefGroup.members; - _nTotFriendlyWapons = _nFrWeapStructs+_nFrWeapDroids; - - - //if it is a new second alert check which one is the nearest to the base - if ( alertIsOn and alertX > 0 and alertY > 0 ){ - _nOldAlertDistFromBase = distBetweenTwoPoints(alertX,alertY,baseX,baseY); - _nOldEnWeapDroids = numEnemyWeapDroidsInRange(player, alertX, alertY, COMBAT_RANGE , false); //check if new threat is bigger then the older one - if ( _nOldEnWeapDroids > _nEnWeapDroids ) - { - - boolResult = false; - } - //if new alert is uin the base this has priority 1!! - if ( (_nNewAlertDistFromBase < nBaseRange) and (_nOldAlertDistFromBase > nBaseRange) ) - { - boolResult = true; - } - } - - if(boolResult) - { - - //determine the ALERT level - if ( _nEnWeapDroids >= _nTotFriendlyWapons ) { - alertLevel = RED_ALERT; - } - if ( (float)_nEnWeapDroids >= (float)_nTotFriendlyWapons*0.7 and _nEnWeapDroids < _nTotFriendlyWapons ) { - alertLevel = YELLOW_ALERT; - } - if ( (float)_nEnWeapDroids < (float)_nTotFriendlyWapons*0.7 ) { - alertLevel = GREEN_ALERT; - } - - if (tankGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all tanks moved from tankGroup to tankDefGroup"); - groupAddGroup(tankDefGroup,tankGroup); - } - if (cyborgAttGroup.members>0 and alertLevel == RED_ALERT){ - //displayMsg("attackedByDroid: RED ALERT all cyborgs moved from cyborgDefGroup"); - groupAddGroup(cyborgDefGroup , cyborgAttGroup); - } - - - //displayMsg("______________________________________________________________________________________"); - - }//endif boolResult -} -//----------------------------------------------------------------------------- -function int getNumStructNotIdle(STRUCTURESTAT _structToCheck) -{ - local STRUCTURE _struct; - local int _tot; - - _tot=0; - - initEnumStruct(false,_structToCheck,player,player); - _struct = enumStruct(); - while(_struct != NULLOBJECT) - { - if(structureComplete(_struct)) - { - if(!structureIdle(_struct)){ _tot++; } - } - _struct = enumStruct(); - } - - return _tot; -} -//----------------------------------------------------------------------------- -function int numRemainingOilRes() -{ - local FEATURE _tempOilRes; - local int _nTot; - _nTot=0; - - initGetFeature(oilRes,-1,player); - _tempOilRes = getFeature(player); - while(_tempOilRes != NULLOBJECT and _nTot < MAX_WHILE_LOOPS) - { - _nTot++; - _tempOilRes = getFeature(player); - } - - return _nTot; -} -//----------------------------------------------------------------------------- -function bool bAnyOilResLeft() -{ - local DROID _droid; - boolResult = true; - - InitEnumDroids(player,player); - _droid = EnumDroid(); - while ( _droid != NULLOBJECT and boolResult ){ - if (_droid != NULLOBJECT){ boolResult = false;} - _droid = EnumDroid(); - } - - if ( _droid == NULLOBJECT ){ - return false; - } - - initGetFeature(oilRes,-1,player); - feature = getFeature(player); - while(feature != NULLOBJECT) - { - if ( droidCanReach(_droid, feature.x, feature.y) ){ - return true; - } - feature = getFeature(player); - } - - return false; -} -//----------------------------------------------------------------------------- -function int getTotDerricksMap() -{ - local int _player, _totDerricks; - _player = 0; - _totDerricks = 0; - - while ( _player < MAX_PLAYERS ){ - _totDerricks = _totDerricks + getNumDerricks(_player); - _player++; - } - return _totDerricks; -} - -//----------------------------------------------------------------------------- -function void sendIdleBackToTheBase(int _group) -{ - local DROID _idleTruck; - local bool _stop; - local int _c; - - //_c=0; - //_stop = false; - _idleTruck = NULLOBJECT; - - if (_group == BUILDDEF_GRP){ _idleTruck = pickDefTruck(true); } - if (_group == CYBENG_GRP){_idleTruck = pickCybEng(true); } - if (_group == BUILD_GRP){ _idleTruck = closestIdleDroid(buildGroup,baseX, baseY); } - if (_group == HARVEST_GRP){ _idleTruck = closestIdleDroid(harvesterGroup,baseX, baseY); } - - if ( _idleTruck != NULLOBJECT) { - _c = distBetweenTwoPoints( _idleTruck.x, _idleTruck.y, baseX, baseY); - if ( _c > nBaseRange and _idleTruck.order != DORDER_RTB) - { - //dbg("sendIdleBackToTheBase: ("& _group &") send droid ("& _idleTruck.id &") back to the base",player); - orderDroid(_idleTruck, DORDER_RTB); - } - //else { - //dbg("sendIdleBackToTheBase: ("& _group &") NOT send droid ("& _idleTruck.id &") back to the base _c("& _c/TILE &")("& nBaseRange/TILE &")",player); - //} - - } //end while - //_c++; - //} -} -//----------------------------------------------------------------------------- -//returns _nWhichCooord(x or y) such that they are _nDist distance away from _x1/_y1 direction _x2,_y2 -function int getCoordRelated(int _x1, int _y1, int _x2, int _y2, int _nWhichCooord, int _nDist) -{ - local int _xx,_yy,_return; - local DROID _droid; - - _droid = getADroid(harvesterGroup); - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(buildDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgDefGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgConstructGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(tankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(cyborgAttGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedCyborgGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(toBeRepairedTankGroup); } - if ( _droid == NULLOBJECT ){ _droid = getADroid(helpGroup); } - if ( _droid != NULLOBJECT ){ - if (_x1 > _x2) { - _xx = _x1 - _nDist; - if ( _xx < _x2 ) { _xx = _x1 - (_x1-_x2)/2; } - } else { - _xx = _x1 + _nDist; - if ( _xx > _x2 ) { _xx = _x1 + (_x2-_x1)/2; } - } - if (_y1 > _y2) { - _yy = _y1 - _nDist; - if ( _yy < _y2 ) { _yy = _y2 - (_y1-_y2)/2; } - } else { - _yy = _y1 + _nDist; - if ( _yy > _y2 ) { _yy = _y1 + (_y2-_y1)/2; } - } - //printDebug1("getCoordRelated-1, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - - if ( pickStructLocation(vtolPad, ref _xx, ref _yy, player) ){ - //printDebug1("getCoordRelated-2, _nDist("& _nDist/TILE &") from("& _x1/TILE &"-"& _y1/TILE &") to("& _x2/TILE &"-"& _y2/TILE &") result("& _xx/TILE &"-"& _yy/TILE &")"); - if( droidCanReach(_droid, _xx, _yy) ){ - if( _nWhichCooord == 1){ - return _xx; - } - if( _nWhichCooord == 2){ - return _yy; - } - } - } - } - return -1; -} - -//----------------------------------------------------------------------------- -// _targetPlayer == -1 as default -function BASEOBJ findEnemyOBJ(bool _mustBeHuman, int _targetPlayer) -{ - local BASEOBJ _attackObject; - local int _targetPl,_xCoord,_yCoord; - - _attackObject = NULLOBJECT; - _targetPl = -1; - - //if big maps, pick up nearest enemy - if ( (mapWidth+mapHeight)/2 > BIG_MAP ){ - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } else { - _targetPl = getNearestEnemyPlayer(_mustBeHuman); - } - } else { - if ( _targetPlayer >= 0 ){ - _targetPl = _targetPlayer; - } - } - //a target player has been requested - - //target player not found!!! - if ( _targetPl < 0 ) { - - _targetPl = getRandomEnemyPlayer(_mustBeHuman); - if ( _targetPl == -1 ){ - //dbg("dbg -> findEnemyOBJ(): No random enemy found _mustBeHuman("& _mustBeHuman &") _targetPlayer("& _targetPlayer &")",player); - return _attackObject; //NULLOBJECT - } //else { dbg("dbg -> findEnemyOBJ(): found a target player player("& _targetPl &") _mustBeHuman("& _mustBeHuman &")",player); } - - if ( _targetPl > -1 ){ - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } - } - } else {//nearest enemy identified - _xCoord = getEnemy_baseCoord( _targetPl , "X" ); - _yCoord = getEnemy_baseCoord( _targetPl , "Y" ); - _attackObject = objStrTargetInRange( _xCoord , _yCoord, 15 * TILE ); - //last resort use skLocateEnemy() - if ( _attackObject == NULLOBJECT ){ - _attackObject = skLocateEnemy(_targetPl); - } //else { displayMsg("findEnemyOBJ(): obj in middle enemy base found player("& _targetPl &") base:("& _xCoord/TILE &"-"& _yCoord/TILE &") obj:("& _attackObject.x/TILE &"-"& _attackObject.y/TILE &") ");} - } - - return _attackObject; -} - -//----------------------------------------------------------------------------- -function int gameType() -{ - - if ( nHumanPlayers == 1 ){ - - if ( nPlayersInGame == 2 ){ - return GT_2PLAYERS_1HP; - } - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_1HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_1HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_1HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_1HP_4567T; - } - } - - } else if ( nHumanPlayers == 2 ){ - - if ( nPlayersInGame == 3 or nPlayersInGame == 4){ - if ( nTeam == 2 ){ - return GT_4PLAYERS_2HP_2T; - } - if ( nTeam > 2 ){ - return GT_4PLAYERS_2HP_34T; - } - } - if ( nPlayersInGame > 4 ){ - if ( nTeam < 4 ){ - return GT_8PLAYERS_2HP_23T; - } - if ( nTeam >= 4 ){ - return GT_8PLAYERS_2HP_4567T; - } - } - - } else if ( nHumanPlayers == 3 ){ - - return GT_8PLAYERS_3HP_23T; - - } else { - - return GT_STANDARD; - } - - return GT_STANDARD; -} -//----------------------------------------------------------------------------- -// -function int getTargetEnemy(bool _dbg) -{ - local int _nMyUnitsTot, _nMyUnitsPower, _nMyUnitsHP; - local int _nEnUnitsTot, _nEnUnitsPower, _nEnUnitsHP; - local int _nAvUnitsTot, _nAvUnitsPower, _nAvUnitsHP; - local int _nTotUnitsTot, _nTotUnitsPower, _nTotUnitsHP; - local int _player,_tempPlayer,_c2,_c3; - local float _nMyPowerIndex,_nEnPowerIndex,_nAvPowerIndex,_nTotPowerIndex; - - _tempPlayer = -1; - - _nMyUnitsTot = tankDefGroup.members + cyborgDefGroup.members + cyborgAttGroup.members; - _nMyUnitsPower = getWeaponUnitsInfo( player, WUI_POWER); - _nMyUnitsHP = getWeaponUnitsInfo( player, WUI_HP); - _nMyPowerIndex = getPowerIndex( player ); - - //find average values first - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - _nTotUnitsTot = _nTotUnitsTot + _nEnUnitsTot; - _nTotUnitsPower = _nTotUnitsPower + _nEnUnitsPower; - _nTotUnitsHP = _nTotUnitsHP + _nEnUnitsHP; - _nTotPowerIndex = _nTotPowerIndex + _nEnPowerIndex; - } - _player++; - } - _nAvUnitsTot = _nTotUnitsTot / nPlayersInGame; - _nAvUnitsPower = _nTotUnitsPower / nPlayersInGame; - _nAvUnitsHP = _nTotUnitsHP / nPlayersInGame; - _nAvPowerIndex = _nTotPowerIndex / (float)nPlayersInGame; - - - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") avUnTot("& _nAvUnitsTot &") avCost("& _nAvUnitsPower &") avHP("& _nAvUnitsHP &") avPowInd("& _nAvPowerIndex &")",player); - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") myUnTot("& _nMyUnitsTot &") myCost("& _nMyUnitsPower &") myHP("& _nMyUnitsHP &") myPowInd("& _nMyPowerIndex &")",player); - - //search for enemies which are too strong - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( _nEnUnitsTot >= 2*_nAvUnitsTot ){ _tempPlayer = _player; } - if ( _nEnUnitsPower >= 2*_nAvUnitsPower ){ _tempPlayer = _player; } - if ( _nEnUnitsHP >= 2*_nAvUnitsHP ){ _tempPlayer = _player; } - if ( _nEnPowerIndex >= 1.4*_nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - - //search for enemies which are too weak - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy not found"); - } - _player=0; - while( _player < MAX_PLAYERS ){ - if ( !friendlyPlayer(_player) and isPlayerStillLive(_player) ){ - //give priority to human players ;-) - boolResult = true; - if ( _tempPlayer >= 0 and isHumanPlayer(_tempPlayer) ){ - boolResult = false; - } - if ( boolResult or _tempPlayer == -1){ - _nEnUnitsTot = getWeaponUnitsInfo( _player, WUI_TOTUNITS); - _nEnUnitsPower = getWeaponUnitsInfo( _player, WUI_POWER); - _nEnUnitsHP = getWeaponUnitsInfo( _player, WUI_HP); - _nEnPowerIndex = getPowerIndex( _player ); - if ( 2*_nEnUnitsTot < _nAvUnitsTot ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsPower < _nAvUnitsPower ){ _tempPlayer = _player; } - if ( 2*_nEnUnitsHP < _nAvUnitsHP ){ _tempPlayer = _player; } - if ( 1.5*_nEnPowerIndex < _nAvPowerIndex ){ _tempPlayer = _player; } - } - }//endif !friendlyPlayer() - _player++; - } - if ( _tempPlayer == -1){ - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy not found",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy not found"); - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug1("getTargetEnemy: too weak enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - - //check we do not attack weak human player too often! unless this is the strong AI - if ( isHumanPlayer(_tempPlayer) and AIstrength < 4 ) - { - if (nAttHumanPlayer > nAttAIPlayer*2) { - printDebug1("getTargetEnemy-1/2: too weak human enemy was attacked too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), try to changed target to AI player"); - //get an AI enemy as target, if possible...maybe there are only enemy human players??? - _c2 = random(MAX_PLAYERS); - _c3 = 0; - boolResult = true; - while( _c3 < MAX_PLAYERS and boolResult ) - { - if ( !isHumanPlayer(_c2) and isPlayerStillLive(_c2) and !friendlyPlayer(_c2) ){ - boolResult = false; - _tempPlayer = _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - if ( !boolResult ){ - printDebug1("getTargetEnemy-2/2: changed target to AI player: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } else { - printDebug1("getTargetEnemy-2/2: not able to change target to AI player"); - } - //if the loops ends it means there are no enemy AI left!! - } else { - printDebug1("getTargetEnemy: too weak human enemy was attacked NOT too often Hum_Pl/AI_Pl ("& nAttHumanPlayer &"/"& nAttAIPlayer &"), DyDo attacks him again!!"); - } - } - - } - } else { - //dbg("dbg->getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")",player); - if ( _dbg ) { - printDebug("getTargetEnemy: pl("& getPlayerName(player) &") too strong enemy found: ("& getPlayerName(_tempPlayer) &") isHuman("& isHumanPlayer(_tempPlayer) &")"); - } - } - - return _tempPlayer; -} -//----------------------------------------------------------------------------- -/* -// TankAttack/CyborgAttack events -// --> getTargetObj -// --> getTargetEnemy() -// --> findEnemyOBJ() -// -*/ -function BASEOBJ getTargetObj() -{ - - - local int _nGameType,nPerc_HP_Target,_tempTargetPlayer,_rnd; - local bool _mustBeHuman; - - _mustBeHuman = false; - nPerc_HP_Target = -1; - - //search for primary enemy player target - _targetPlayer = getTargetEnemy(false);//search for too strong or too weak enemies - //if (_targetPlayer >= 0){ - //dbg("dbg->getTargetObj: pl("& getPlayerName(player) &"): Very strong or weak enemy found:("& getPlayerName(_targetPlayer) &")",player); - //} - - _nGameType = gameType(); - if ( _nGameType == GT_4PLAYERS_1HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_1HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_2T ){ - nPerc_HP_Target = 40+random(10)+AIstrength*10; - } - if ( _nGameType == GT_4PLAYERS_2HP_34T ){ - nPerc_HP_Target = 30+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_23T ){ - nPerc_HP_Target = 20+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_1HP_4567T ){ - nPerc_HP_Target = 15+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_23T ){ - nPerc_HP_Target = 25+random(25)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_2HP_4567T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( _nGameType == GT_8PLAYERS_3HP_23T ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - if ( nPerc_HP_Target == -1 ){ - nPerc_HP_Target = 25+random(20)+AIstrength*10; - } - - //select the type of target - _rnd = random(100); - if ( _rnd <= nPerc_HP_Target ){ - _mustBeHuman = true; - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target must be human _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player); - } //else { dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target can be human or AI _rnd/perc("& _rnd &"/"& nPerc_HP_Target &") AIstrength("& AIstrength &")" , player);} - - //test or debug game - if ( bRunning or !bHasHumanEnemies(player) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target cannot be human: if (isHumanPlayer()("& isHumanPlayer(player) &") bRunning("& bRunning &")) OR !bHasHumanEnemies("& bHasHumanEnemies(player) &")" , player); - _mustBeHuman = false; - } - - //check if big map and if derricks are required - _rnd = random(10); - if ( _rnd < 7 and (bNeedDerrick or (mapWidth+mapHeight)/2 > BIG_MAP) ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") big map or derricks required _rnd("& _rnd &")" , player); - printDebug1("getTargetObj-> target is derrick, big map or derricks required _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &") " ); - attackTankObj = closestEnemyDerrick(_mustBeHuman , _targetPlayer); - } else { - printDebug1("getTargetObj-> target will not be a derrick; _rnd("& _rnd &"/7) bNeedDerrick("& bNeedDerrick &") mapSize("& (mapWidth+mapHeight)/2 &") bigMap("& BIG_MAP &")"); - } - - if ( attackTankObj == NULLOBJECT ){ - if ( random(10) < 3 ){ - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is derrick _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = closestEnemyDerrick(_mustBeHuman,_targetPlayer); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") target is base _targetPlayer("& _targetPlayer &") _mustBeHuman("& _mustBeHuman &")" , player); - attackTankObj = findEnemyOBJ(_mustBeHuman,_targetPlayer); - } - } - //attackTankObj = findEnemyOBJ(_mustBeHuman); - - if (attackTankObj != NULLOBJECT) { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player)&") target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &")" , player); - printDebug1("getTargetObj-> target found: player #("& attackTankObj.player &") '"& getPlayerName(attackTankObj.player) &"' human("& isHumanPlayer(attackTankObj.player) &") "); - } else { - //dbg("dbg: getTargetObj-> pl("& getPlayerName(player) &") NO target found ! ####" , player); - printDebug1("getTargetObj-> NO target found !"); - } - return attackTankObj; -} - -//----------------------------------------------------------------------------- -function bool bHasHumanEnemies(int _player) -{ - local int _c; - _c = 0; - while( _c < MAX_PLAYERS ) - { - if ( isHumanPlayer(_c) and !allianceExistsBetween(_player,_c) ) { - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getRandomEnemyPlayer(bool _mustBeHuman) -{ - local int _c2,_c3; - _c2 = random(MAX_PLAYERS); - _c3 = 0; - while( _c3 < MAX_PLAYERS ) - { - - boolResult = true; - if ( _mustBeHuman and !isHumanPlayer(_c2) ){ - boolResult = false; - } - if( boolResult and !friendlyPlayer(_c2) and isPlayerStillLive(_c2) ) { - return _c2; - } - _c2++; _c3++; - if ( _c2 == 8 ){ _c2 = 0; } - } - return -1; -} -//----------------------------------------------------------------------------- -function int getNearestEnemyPlayer(bool _humanPlayer) -{ - local STRUCTURE _struct; - local int _player, _targetPlayer, _bestDist, _dist, _ii; - - _struct = NULLOBJECT; - _player = 0; - _targetPlayer = -1; - _bestDist = 9999999; - - while( _player < MAX_PLAYERS ) - { - - boolResult = true; - if ( _humanPlayer and !isHumanPlayer(_player) ){ - boolResult = false; - } - if ( !isPlayerStillLive(_player) ){ - boolResult = false; - } - if (!friendlyPlayer(_player) and boolResult){//OK - - //find enemy HQ and check distance to - _struct = getStructure(playerHQ,_player); - if ( _struct == NULLOBJECT ){ - _struct = getStructure(factory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(cybFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(resLab,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(powGen,_player); - } - if ( _struct == NULLOBJECT ){ - _struct = getStructure(vtolFactory,_player); - } - if ( _struct == NULLOBJECT ){ - _ii = 0; - while ( _ii < numStructs and _struct == NULLOBJECT){ - _struct = getStructure(structs[_ii],_player); - _ii++; - } - } - if ( _struct != NULLOBJECT ){ - _dist = distBetweenTwoPoints(_struct.x,_struct.y, baseX, baseY); - if ( _dist < _bestDist ){ - _bestDist = _dist; - _targetPlayer = _player; - } - } - - }//player check - - _player++; - }//while - return _targetPlayer; -} - -//----------------------------------------------------------------------------- -function int getEnemy_baseCoord( int _player, STRING sCoord ) -{ - local STRUCTURE _structure; - local int _index,_baseX,_baseY,_numBaseStructs; - - //Go through all structures - _index = 0; - _numBaseStructs = 0; - _baseX = 0; - _baseY = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - initEnumStruct( false, baseStructs[_index], _player, _player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _structure = enumStruct(); - } - _index++; - } - - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #1 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - - } else { - - //method #2 - _index = 0; - _numBaseStructs = 0; - while(_index+1 < numBaseStructs)//+1 to exclude derricks!! - { - _structure = getStructure(baseStructs[_index],_player); - _baseX = _baseX + _structure.x / TILE; - _baseY = _baseY + _structure.y / TILE; - _numBaseStructs++; - _index++; - } - if(_numBaseStructs > 0) - { - _baseX = (_baseX / _numBaseStructs) * TILE; - _baseY = (_baseY / _numBaseStructs) * TILE; - //displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 ok _baseX("& _baseX/TILE &")_baseY("& _baseY/TILE &") "); - } //else { displayMsg("getEnemy_baseCoord: Base Structs tmethod #2 faled too ("& _player &") "); } - } - - if ( sCoord == "X" or sCoord == "x" ) { - return _baseX; - } else { - return _baseY; - } - return -1; -} - - -//----------------------------------------------------------------------------- -function bool friendlyPlayer(int _playerToCheck) -{ - if(allianceExistsBetween(_playerToCheck, player) or (_playerToCheck == player)){ - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -function BASEOBJ objHumanDerrick(bool bVTOLTarget, int _numDef, int _distInTiles) -{ - local BASEOBJ _objTarget; - local int _targetPlayer,_dist,_tmpDist,_defences,_mapSize; - local STRUCTURE _tempDerrick; - - _targetPlayer = 0; - _objTarget = NULLOBJECT; - _dist = 9999*TILE; - - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT) - { - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) and isHumanPlayer(_targetPlayer) ) { - - initEnumStruct(false,derrick,_targetPlayer,_targetPlayer); - _tempDerrick = enumStruct(); - while( _tempDerrick != NULLOBJECT ){ - boolResult = true; - if ( bVTOLTarget ){ - _defences = numEnemyAAInRange(_tempDerrick.x, _tempDerrick.y, AA_THREAT_RANGE ); - } else { - _defences = numEnemyWeapDroidsInRange(player, _tempDerrick.x, _tempDerrick.y, _distInTiles*TILE , false); - } - _tmpDist = distBetweenTwoPoints(baseX,baseY,_tempDerrick.x, _tempDerrick.y); - if ( !bVTOLTarget and _tmpDist > ((mapWidth*TILE+mapHeight*TILE)/6*2) ) { boolResult = false; } - if ( boolResult and _tmpDist < _dist and _defences <= _numDef){ - _objTarget = _tempDerrick; - _dist = _tmpDist; - } - _tempDerrick = enumStruct(); - } - - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objStrTargetInRange(int _xCoord,int _yCoord, int _Range) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _targetPlayer; - - resetStructTargets(); - setStructTarIgnore(ST_WALL); - setStructTarPref(ST_DEF_GROUND); - setStructTarPref(ST_FACTORY); - setStructTarPref(ST_CYBORG_FACTORY); - setStructTarPref(ST_VTOL_FACTORY); - setStructTarPref(ST_POWER_GEN); - setStructTarPref(ST_SENSOR); - setStructTarPref(ST_RESOURCE_EXTRACTOR); - setStructTarPref(ST_DEF_AIR); - setStructTarPref(ST_RESEARCH); - setStructTarPref(ST_HQ); - setStructTarPref(ST_REARM_PAD); - setStructTarPref(ST_SENSOR); - - _objTarget = NULLOBJECT; - _Range = _Range/2 ; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - _targetPlayer = 0; - while ( _targetPlayer < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( _targetPlayer != player and !friendlyPlayer(_targetPlayer) ) - { - _objTarget = structTargetInArea(_targetPlayer, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - //displayMsg("objStrTargetInRange: dist("& distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y)/TILE &") range ("& _Range/TILE &") - ("& _xCoord/TILE &") ("& _yCoord/TILE &") "); - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - _targetPlayer++; - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function BASEOBJ objDroidTargetInRange(int _xCoord ,int _yCoord, int _Range, bool bIsVTOL) -{ - local BASEOBJ _objTarget; - local int _x,_y,_x1,_y1; - local int _xx, _yy, _n, _bestHitPoints; - - resetDroidTargets(); - setDroidTarIgnore(ST_WALL); - if ( bIsVTOL ){ - setDroidTarPref(DT_SUPER_HEAVY); - setDroidTarPref(DT_HEAVY); - setDroidTarPref(DT_MEDIUM); - setDroidTarPref(DT_LIGHT); - setDroidTarPref(DT_LEGS); - setDroidTarPref(DT_VTOL); - } - else//tank or cyborg - { - setDroidTarPref(DT_SENSOR); - setDroidTarPref(DT_CONSTRUCT); - setDroidTarPref(DT_COMMAND); - setDroidTarPref(DT_REPAIR); - setDroidTarPref(DT_WEAP_GROUND); - setDroidTarPref(DT_WEAP_AIR); - setDroidTarPref(DT_WEAP_ALL); //Ground,air,idf units - } - - - _objTarget = NULLOBJECT; - - _xx = (mapWidth*128)-(128*2); - _yy = (mapHeight*128)-(128*2); - - _Range = _Range/2; - - _x = min( _xCoord + _Range , _xx ); - _y = min( _yCoord + _Range , _yy ); - _x1 = max( _xCoord - _Range , 256); - _y1 = max( _yCoord - _Range , 256); - - if (bIsVTOL and targetPlayerVTOL > -1){ - _n=0; - _bestHitPoints=0; - InitEnumDroids(targetPlayerVTOL,player); - droid = EnumDroid(); - while(droid != NULLOBJECT) - { - if (!isVtol(droid) and distBetweenTwoPoints(droid.x,droid.y,_xCoord,_yCoord) < 15*TILE){ - if ( numEnemyAAInRange(droid.x, droid.y, AA_THREAT_RANGE) < 2 ){ - if ( droid.hitPoints > _bestHitPoints ){ - //displayMsg("objDroidTargetInRange: target for VTOL found: Id("& droid.id &") hitPoints("& droid.hitPoints &")"); - _objTarget = droid; - } - } - } - _n++; - droid = EnumDroid(); - } - } - - if ( _objTarget == NULLOBJECT ){ - //displayMsg("objDroidTargetInRange: ("& _n &") best target for VTOL NOT found, targetPlayerVTOL("& targetPlayerVTOL &")"); - count = 0; - while ( count < MAX_PLAYERS and _objTarget == NULLOBJECT){ - if ( count != player and !friendlyPlayer(count) ) - { - _objTarget = droidTargetInArea(count, player, _x, _y, _x1, _y1); - if (_objTarget != NULLOBJECT) - { - if ( !isVtol(objToDroid(_objTarget)) ){ - if ( distBetweenTwoPoints(_xCoord, _yCoord, _objTarget.x, _objTarget.y) > _Range ) - { - _objTarget = NULLOBJECT; - } - } - } - } - count++; - } - } else { - if (bIsVTOL){displayMsg("objDroidTargetInRange: ***** best target for VTOL found: Id("& _objTarget.id &") hitPoints("& _objTarget.hitPoints &")");} - } - return _objTarget; -} -//----------------------------------------------------------------------------- -function void orderGroupMoveCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if (droidCanReach(_tempTruck,_x, _y )){ - orderDroidLoc(_tempTruck, DORDER_MOVE,_x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} - -//----------------------------------------------------------------------------- -function void orderGroupScoutCMD(GROUP _grp, int _x, int _y) -{ - local int _c; - local DROID _tempTruck; - - _c = 0; - - initIterateGroup(_grp); - _tempTruck = iterateGroup(_grp); - while ( _tempTruck != NULLOBJECT ){ - if ( distBetweenTwoPoints( _tempTruck.x, _tempTruck.y, _x, _y ) > 2*TILE and droidCanReach(_tempTruck,_x, _y ) ){ - orderDroidLoc(_tempTruck, DORDER_SCOUT, _x, _y ); - } - _tempTruck = iterateGroup(_grp); - _c++; - } - return; -} -//----------------------------------------------------------------------------- -function void SetDyDoPersonality(int nPersonality, int _player) -{ - local int cc,_c,_nAdd; - cc=0; - - if (_player != player){exit;} - - //random personality - _c = nPersonality; - if ( nPersonality == 0 or nPersonality > 4 ){ - if ( random(100) < 75 ){//75% General 1 - _c = 1; - } else {//30% for General 2-3-4 - _c = 2+random(6); - if ( _c > 4 ){ - if ( _c == 5 ) { _c = 2;} - if ( _c == 6 ) { _c = 3;} - if ( _c == 7 ) { _c = 4;} - } - } - AIPersonality = _c; - _c--; - nAI_Pers = _c; - } else { - AIPersonality = nPersonality; - nPersonality--; - nAI_Pers = nPersonality; - } - - - //____________________General 2____________________________ - if ( AIPersonality == AI_VTOL){ - //Cheap Researches - cc=0; - while ( cc < numCheapResGen2[0] ){ - researchCheap[0][cc] = general2Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[0] ){ - research[0][cc] = general2[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen2[1] ){ - research[0][cc] = general2[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen2[9] ){ - research[9][cc] = general2[9][cc]; - cc++; - } - numRes[0] = numResGen2[0]; - numRes[1] = numResGen2[1]; - numRes[9] = numResGen2[9]; - - } - //____________________General 3____________________________ - if ( AIPersonality == AI_TURTLE){ - //Cheap Researches - while ( cc < numCheapResGen3[0] ){ - researchCheap[0][cc] = general3Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[0] ){ - research[0][cc] = general3[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen3[1] ){ - research[0][cc] = general3[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen3[9] ){ - research[9][cc] = general3[9][cc]; - cc++; - } - numRes[0] = numResGen3[0]; - numRes[1] = numResGen3[1]; - numRes[9] = numResGen3[9]; - - } - //____________________General 4____________________________ - if ( AIPersonality == AI_CYBORG){ - //Cheap Researches - while ( cc < numCheapResGen4[0] ){ - researchCheap[0][cc] = general4Cheap[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[0] ){ - research[0][cc] = general4[0][cc]; - cc++; - } - cc=0; - //Standard Researches - while ( cc < numResGen4[1] ){ - research[0][cc] = general4[1][cc]; - cc++; - } - cc=0; - while ( cc < numResGen4[9] ){ - research[9][cc] = general4[9][cc]; - cc++; - } - numRes[0] = numResGen4[0]; - numRes[1] = numResGen4[1]; - numRes[9] = numResGen4[9]; - - } - //update struct to be built - count = nDerricksAtStart+(nFreeOilRes/nPlayersInGame); - printDebug1("derricks/player=("& count &"); initial derricks("& nDerricksAtStart &") free oilRes ("& nFreeOilRes &") players in game("& nPlayersInGame &")"); - - //determine numb if additinal structs and type of mapPower - _nAdd = 0; - if (count < 7){ - printDebug1("Build standard quantity of structures"); - nMapPower = LOW_POWER_MAP; - } else if (count >= 6 and count < 11){ - printDebug1("Build standard quantity of structures + 1"); - _nAdd = 1; - nMapPower = NORMAL_POWER_MAP; - } else if (count >= 11){ - printDebug1("Build standard quantity of structures + 2"); - _nAdd = 2; - nMapPower = HIGH_POWER_MAP; - } - - //print off stats - count2=0; - while ( count2 < 4 ){ - if ( nAI_Pers == count2 ){ - printDebug1(" General "& (count2+1) &" Fact-ResLab-CybFact-VTOLFact = ("& structsLimits[count2][STR_TANK_FACTORY] &"-"& structsLimits[count2][STR_RESLAB] &"-"& structsLimits[count2][STR_CYB_FACTORY] &"-"& structsLimits[count2][STR_VTOL_FACTORY] &") mapPowerType ("& nMapPower &")"); - } - count2++; - } - - //update array - count2=0; - while ( count2 < 4 ){ - structsLimits[count2][STR_TANK_FACTORY]=_nAdd+structsLimits[count2][STR_TANK_FACTORY]; - structsLimits[count2][STR_RESLAB] =_nAdd+structsLimits[count2][STR_RESLAB]; - structsLimits[count2][STR_CYB_FACTORY] =_nAdd+structsLimits[count2][STR_CYB_FACTORY]; - if ( count2 != AI_CYBORG){ - structsLimits[count2][STR_VTOL_FACTORY]=_nAdd+structsLimits[count2][STR_VTOL_FACTORY]; - } - count2++; - } - //set to 5 if too high. - count2=0; - while ( count2 < 4 ){ - if (structsLimits[count2][STR_TANK_FACTORY] > 5) {structsLimits[count2][STR_TANK_FACTORY] = 5;} - if (structsLimits[count2][STR_RESLAB] > 5) {structsLimits[count2][STR_RESLAB] = 5;} - if (structsLimits[count2][STR_CYB_FACTORY] > 5) {structsLimits[count2][STR_CYB_FACTORY] = 5;} - if (structsLimits[count2][STR_VTOL_FACTORY] > 5) {structsLimits[count2][STR_VTOL_FACTORY] = 5;} - count2++; - } - -} -//----------------------------------------------------------------------------- -function bool aiResponsibleForPlayer(int _player) -{ - if(_player == selectedPlayer or not myResponsibility(_player)) - { - return false; - } - - return true; -} -//----------------------------------------------------------------------------- -function int _random(int x) -{ - local int _c,_d; - _c=0; - while( _c < (player+1)*2 ){ - _d = random(x); - _c++; - } - return _d; -} -//----------------------------------------------------------------------------- -function void assignDroidToGrp(DROID droid) -{ - -/* -buildDefGroup.members -buildGroup.members -cyborgConstructGroup.members -cyborgAttGroup.members -cyborgDefGroup.members -harvesterGroup.members -helpGroup.members -repairGroup.members -tankDefGroup.members -tankGroup.members -toBeRepairedCyborgGroup.members -toBeRepairedTankGroup.members -vtolDefendGr.members -vtolAttGr.members -vtolHunterGr.members -*/ - // TANK - if ( droid == NULLOBJECT ){ return; } - if ( droid.player != player ){ return; } - - - if(droid.droidType == DROID_WEAPON and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(tankDefGroup, droid); - } - -// TANK REPAIR - if(droid.droidType == DROID_REPAIR and droid.propulsion != cyborgPropulsion) - { - groupAddDroid(repairGroup, droid); - } - -// VTOL/CYBORG/TANK TRUCK - if( droid.droidType == DROID_CONSTRUCT and droid.propulsion != cyborgPropulsion ) - { - groupAddDroid(buildGroup, droid); - } - -// CYBORG -if(droid.propulsion == cyborgPropulsion) -{ - if(droid.droidType == DROID_CYBORG_CONSTRUCT) - { - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgConstructGroup"); - groupAddDroid(cyborgConstructGroup, droid); - } else { - nTotCyborgBuilt++; - if ( AIPersonality == AI_CYBORG ){ - //displayMsg("droidBuilt: cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup"); - groupAddDroid(cyborgDefGroup, droid); - } else { - if (nTotCyborgBuilt > 2){ - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] CYBORG ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to tankDefGroup "); - groupAddDroid(tankDefGroup, droid); - nTotCyborgBuilt = 0; - } else { - //displayMsg("droidBuilt: ["& nTotCyborgBuilt &"] cyborg ("& droid.id &") hitPoints ("& droid.hitPoints &") power ("& calcDroidPower(droid) &") assigned to cyborgDefGroup "); - groupAddDroid(cyborgDefGroup, droid); - } - } - } -} - -// VTOL - boolResult = false; - if((isVtol(droid)) and (droid.droidType != DROID_CONSTRUCT)) - { - groupAddDroid(vtolDefendGr, droid); - } - - //debug check - if ( !hasGroup(droid) ){ - //dbg("dbg->assignDroidToGrp: player("& getPlayerName(player) &") found a droid with no group ("& droid.id &"), force assign to tankdefGroup",player); - groupAddDroid(tankDefGroup, droid); - } - - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_LOW); - if( droid.droidType == DROID_WEAPON or droid.droidType == DROID_CYBORG ){ - setDroidSecondary(droid,DSO_HALTTYPE, DSS_HALT_PERSUE); - setDroidSecondary(droid,DSO_ATTACK_RANGE, DSS_ARANGE_LONG); - setDroidSecondary(droid,DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS); - } -} -//----------------------------------------------------------------------------- -/* what to stop, keep working -[ResLab - TkFact - cybFac - VTOLFact] -(Defences - Uprades - RepairFac) -tkProd stop @ 15 droids -cybProd stop @ 15 droids -VTOLProd stop @ 8 droids -0- [1-1-1-1] (1-1-1) -1- [0-2-2-1] (1-1-1) -2- [0-2-2-0] (1-1-1) -3- [3-1-1-1] (0-1-1) -4- [3-1-1-0] (0-1-1) -5- [3-1-1-1] (1-1-1) -6- [0-0-0-0] (0-0-0) -7- [0-0-0-0] (0-0-0) -*/ -function void manageVeryLowPower() -{ - if ( nProdSelect == 0 ){//standard - if ( nWorkingLab >= 2){lStopResearch = true; } - //lStopCheapResearch = true; - if ( nWorkingFact >= 2 ){lStopTankProduction = true; } - if ( nWorkingCybFac >= 2 ) {lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 1){ //ok defences and upgrades - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDefGateway = true; - //lStopBuildDef = true; - //lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 2){ //ok units production - lStopResearch = true; - lStopCheapResearch = true; - //lStopTankProduction = true; - //lStopCybProduction = true; - //lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 3){ - if ( nWorkingLab >= 1){lStopResearch = true; } - lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10) {lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect == 4){//stop all but cheap researches!! - lStopResearch = true; - //lStopCheapResearch = true; - if ( nWorkingFact >= 1 or nTotTanks > 10){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1 or nTotCyborgs > 10){lStopCybProduction = true; } - lStopVTOLProduction = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - if ( nProdSelect == 5){//stop all but researches, def and RepFac - //lStopResearch = true; - //lStopCheapResearch = true; - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - //lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildDefGateway = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 6){//stop upgrades only - if ( nWorkingFact >= 1){lStopTankProduction = true; } - if ( nWorkingCybFac >= 1){lStopCybProduction = true; } - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingLab >= 1){lStopResearch = true; } - //lStopCheapResearch = true; - //lStopBuildDef = true; - //lStopBuildDefGateway = true; - //lStopBuildDefDerricks = true; - //lStopBuildRepFacility = true; - } - if ( nProdSelect == 7){ //allow upgrades and researches stop defences and units prod - lStopTankProduction = true; - lStopCybProduction = true; - lStopVTOLProduction = true; - if ( nWorkingLab >= 2){lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefGateway = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - if ( (nTotCyborgs+nTotTanks) > 15 ){ - lStopTankProduction = true; - lStopCybProduction = true; - } - } - -} -//================================================== -function void manageVeryLowPower2() //Personality General 2 -{ - if ( nProdSelect < 3 ){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = false; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 0 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - } - - if ( nProdSelect >= 3 and nProdSelect < 6){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - if ( nWorkingLab >= 1 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 1){lStopVTOLProduction = true; } - if ( nWorkingFact >= 2 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2 ) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - } - - if ( nProdSelect >= 6 and nProdSelect < 8){ - if ( vtolDefendGr.members < MIN_VTOLS_PERS2 and nVTOLFactories > 0 ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - lStopResearch = true; - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } else { - if ( nWorkingVTOLFac >= 2){lStopVTOLProduction = true; } - if ( nWorkingFact >= 1 ) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 0 ) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - } - - if ( gameTime > TIME_START_VTOLRESEARCH ){ - if ( !skVtolEnableCheck(player) ){ - if ( nWorkingLab < 2 ) {lStopResearch = false; } - else { lStopResearch = true; } - } - } - -} -//================================================== -function void manageVeryLowPower3() //Personality General 3 -{ - - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 1) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 1) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - if ( nWorkingFact >= 0) {lStopTankProduction = true; } - if ( nWorkingCybFac >= 0) {lStopCybProduction = true; } - if ( nWorkingLab >= 4) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //stop events - if ( nTotTanks >= 12 and gameTime > 15*TIME_MINUTE ){//20 min - lStopTankProduction = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } -} - -//================================================== -function void manageVeryLowPower4() //Personality General 4 -{ - if ( nProdSelect < 3 ){ - if ( nWorkingVTOLFac>= 1) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 2) {lStopCybProduction = true; } - if ( nWorkingLab >= 3) {lStopResearch = true; } - lStopCheapResearch = true; - lStopBuildDef = false; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - if ( nProdSelect >= 3 and nProdSelect < 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - if ( nWorkingCybFac >= 3) {lStopCybProduction = true; } - if ( nWorkingLab >= 2) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = false; - lStopBuildDefDerricks = false; - lStopBuildRepFacility = false; - lStopBuildDefGateway = false; - } - if ( nProdSelect >= 6 ){ - if ( nWorkingVTOLFac>= 0) {lStopVTOLProduction = true; } - lStopTankProduction = false; - lStopCybProduction = false; - if ( nWorkingLab >= 1) {lStopResearch = true; } - lStopCheapResearch = false; - lStopBuildDef = true; - lStopBuildDefDerricks = true; - lStopBuildRepFacility = true; - lStopBuildDefGateway = true; - } - - //activate VTOL production if min droids has been reached - if ( vtolDefendGr.members < MIN_VTOLS and nVTOLFactories > 0 and ( (nTotCyborgs+nTotTanks) > MIN_TOT_UNITS) ){ - lStopVTOLProduction = false; - lStopTankProduction = true; - lStopCybProduction = true; - } - -} - - -//----------------------------------------------------------------------------- -function STRUCTURE getVTOLstructTarget() -{ - local int _player, _aa, _bestAA, _ii; - local STRUCTURE _struct, _structTarget; - - _structTarget = NULLOBJECT; - - //search for enemy def structs not protected by AA - if ( _random(10) < 6 ){ // ------------ attack def structs or AA def ---------------- - - if ( _random(10) < 5 ){ // ------------ attack def structs ---------------- - - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF1 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - //displayMsg("_________ getVTOLstructTarget DEF2 ("& _struct.id &")("& _aa &")__________"); - _bestAA = _aa; _structTarget = _struct; - } - } - _ii++; - } - - } else { // ------------ attack AA def structs ---------------- - - //displayMsg("_________ getVTOLstructTarget __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numGenAA){ - _struct = getStructure(vtolGenStruct[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ - _bestAA = _aa; _structTarget = _struct; - //displayMsg("_________ getVTOLstructTarget AA ("& _struct.id &")("& _aa &")__________"); - } - } - _ii++; - } - - } - - } else {// ------------- attack base ------------ - - //displayMsg("_________ getVTOLstructTarget search target in Base __________"); - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numStructs){ - _struct = getStructure(structs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numWallWeaps){ - _struct = getStructure(wallWeaps[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - if ( _structTarget == NULLOBJECT or _bestAA*2 > vtolDefendGr.members*2){ - _aa=0; - _bestAA=999; - _ii = 0; - while ( _ii < numDefStructs){ - _struct = getStructure(defStructs[_ii],targetPlayerVTOL); - if ( _struct != NULLOBJECT ){ - _aa = numEnemyAAInRange(_struct.x, _struct.y, AA_THREAT_RANGE ); - if ( _aa < _bestAA ){ _bestAA = _aa; _structTarget = _struct; } - } - _ii++; - } - } - } - return _structTarget; -} -//----------------------------------------------------------------------------- -function int numEnemyAAInRange(int _x, int _y, int _range) -{ - local int _enemy,_numAA; - - _numAA = 0; - _enemy = 0; - while(_enemy < MAX_PLAYERS) - { - if(!friendlyPlayer(_enemy)) - { - _numAA = _numAA + numAAinRange(_enemy, player, _x, _y, _range); - } - _enemy++; - } - - return _numAA; -} -//----------------------------------------------------------------------------- -function void updatePlayersStats() -{ - local int _player, _range, _temp, _nFact, _nCybFact, _nVTOLFact; - local int _c2,_c3; - - _range = max(mapWidth,mapHeight)*TILE*2; - - nPlayersInGame = 0; - nEnemyPlayers = 0; - nHumanPlayers = 0; - nLastEnemyPlayer = -1; - _c2 = 0; - _c3 = 0; - while ( _c2 < MAX_PLAYERS ){ - if ( isPlayerStillLive(_c2)){ - if ( isHumanPlayer(_c2) ){ nHumanPlayers++; } - - nPlayersInGame++; - if ( !friendlyPlayer(_c2) ){ - nEnemyPlayers++; - nLastEnemyPlayer = _c2; - } - aPlayers[PLAYER_NUMBER][_c3] = _c2; - _c3++; - } - _c2++; - } - - //reset teams, just in case alliances changed. - count = 0; - while (count < MAX_PLAYERS){ - aPlayers[TEAM_NUMBER][count] = -1; - count++; - } - - count = 0; - _c2 = 0; - nTeam = 0; - while (count < MAX_PLAYERS){ - if ( aPlayers[TEAM_NUMBER][count] < 0 and isPlayerStillLive(count) ){ - - //assign a team to the player - nTeam++; - aPlayers[TEAM_NUMBER][count] = nTeam; - - //loop - _c2 = 0; - while (_c2 < MAX_PLAYERS){ - if ( allianceExistsBetween(count,_c2) and count != _c2 and isPlayerStillLive(_c2) ){ - if ( aPlayers[TEAM_NUMBER][_c2] < 0 ){ - aPlayers[TEAM_NUMBER][_c2] = aPlayers[TEAM_NUMBER][count]; - } - } - _c2++; - } - } - count++; - } - - _player=0; - while( _player < MAX_PLAYERS ){ - if ( isPlayerStillLive(_player) ){ - aStat[OC_DERRICKS][_player] = getNumDerricks(_player); - aStat[OC_RESLABS][_player] = numStructsByType( resLab, _player ); - aStat[OC_CYBORGS][_player] = getDroidsInfo(_player, 0); - aStat[OC_TANKS][_player] = getDroidsInfo(_player, 1); - aStat[OC_VTOLS][_player] = getDroidsInfo(_player, 2); - aStat[OC_CYB_POWER][_player] = getDroidsInfo(_player, 3); - aStat[OC_TK_POWER][_player] = getDroidsInfo(_player, 4); - aStat[OC_VTOL_POWER][_player] = getDroidsInfo(_player, 5); - aStat[OC_CYB_HP][_player] = getDroidsInfo(_player, 6); - aStat[OC_TK_HP][_player] = getDroidsInfo(_player, 7); - aStat[OC_VTOL_HP][_player] = getDroidsInfo(_player, 8); - } - _player++; - } - -} - -//----------------------------------------------------------------------------- -//not used -function int getTeamNumber(int _player) -{ - return aPlayers[TEAM_NUMBER][_player]; -} -//----------------------------------------------------------------------------- -function int getDroidsInfo(int _player, int _choice) -{ - local DROID _droid; - local GROUP _grp[8]; - local int _cyb, _tk, _vtol, _powCYB, _powTK, _powVTOL, _hpCYB, _hpTK, _hpVTOL; - - _tk=0; _cyb=0; _vtol=0; _powCYB=0; _powTK=0; _powVTOL=0; - _hpCYB=0; _hpTK=0; _hpVTOL=0; - - - InitEnumDroids(_player,_player); - _droid = EnumDroid(); - while(_droid != NULLOBJECT) - { - if(_droid.droidType == DROID_WEAPON and _droid.propulsion != cyborgPropulsion){ - _powTK = _powTK + calcDroidPower(_droid); - _hpTK = _hpTK + _droid.hitPoints; - _tk++; - } - if(_droid.droidType == DROID_CYBORG){ - _powCYB = _powCYB + calcDroidPower(_droid); - _hpCYB = _hpCYB + _droid.hitPoints; - _cyb++; - } - if( isVtol(_droid) ){ - _powVTOL = _powVTOL + calcDroidPower(_droid); - _hpVTOL = _hpVTOL + _droid.hitPoints; - _vtol++; - } - //power cost - _droid = EnumDroid(); - } - - if ( _choice == 0 ){ return _cyb; } - if ( _choice == 1 ){ return _tk; } - if ( _choice == 2 ){ return _vtol; } - if ( _choice == 3 ){ return _powCYB; } - if ( _choice == 4 ){ return _powTK; } - if ( _choice == 5 ){ return _powVTOL; } - if ( _choice == 6 ){ return _hpCYB; } - if ( _choice == 7 ){ return _hpTK; } - if ( _choice == 8 ){ return _hpVTOL; } - return -1; -} - -//----------------------------------------- -function void deactivateHelp() -{ - - //if (nAllyBeingHelped<0){ dbg("dbg->deactivateHelp: Unnecessary deactivate request, player ("& player &") is not helping any ally", player);} - //tBeacon[nAllyBeingHelped] = -1; - //beaconX[nAllyBeingHelped] = -1; - //beaconY[nAllyBeingHelped] = -1; - nAllyBeingHelped = -1; - tHelpAction = -1; - nHelpX = -1; - nHelpY = -1; - lastHelpPlayer = -1; - objTargetHelpTeam = NULLOBJECT; - if ( helpGroup.members > 0){ - if ( AIPersonality == AI_CYBORG ){ - groupAddGroup(cyborgDefGroup, helpGroup); - orderGroup(cyborgDefGroup, DORDER_RTB); - } else { - groupAddGroup(tankDefGroup, helpGroup); - orderGroup(tankDefGroup, DORDER_RTB); - } - } - setEventTrigger(manageHelpTeam,inactive); -} -//----------------------------------------------------------------------------- -function bool bHelpingAnyAlly() -{ - if ( nAllyBeingHelped == -1 ){ - return false; - } - return true; -} -//----------------------------------------------------------------------------- -function bool canHelpAlly(int _sender) -{ - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - dbg("dbg->canHelpAlly: Player ("& getPlayerName(player) &") has tk ("& _tank &") and cyb ("& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &") _sender("& _sender &") lastHelpPlayer("& lastHelpPlayer &")", player ); - - if ( lastHelpPlayer != _sender and lastHelpPlayer != -1){ - return false; - } - if (alertLevel == RED_ALERT){ - return false; - } - if ( _tank +_cyb < MIN_HELPING_UNITS ){ - //dbg("Player ("& player &") cannot help has tk+cyb ("& _tank +_cyb &") and min should be ("& MIN_HELPING_UNITS &")", _sender ); - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -function void helpAlly(int _ally){ - - local int _tank, _cyb; - - _tank = tankDefGroup.members - minDefDroids[nAI_Pers][MINDEF_TANKS]; - _cyb = cyborgDefGroup.members - minDefDroids[nAI_Pers][MINDEF_CYBORGS]; - - printDebug1("helpAlly: has tk("& tankDefGroup.members &"/"& _tank &") cyb("& cyborgDefGroup.members &"/"& _cyb &") availabe for help, alert ("& alertIsOn &") alertLevel ("& alertLevel &")" ); - - moveUnitsBetweenGRPs(helpGroup, tankDefGroup, _tank, true); - moveUnitsBetweenGRPs(helpGroup, cyborgDefGroup, _cyb, false); - - tLastHelp = gameTime; - nHelpX = beaconX[_ally]; - nHelpY = beaconY[_ally]; - nAllyBeingHelped = _ally; - - //helping droids never repair themselves - initIterateGroup(helpGroup); - droid = iterateGroup(helpGroup); - while( droid != NULLOBJECT) - { - setDroidSecondary(droid,DSO_REPAIR_LEVEL, DSS_REPLEV_NEVER); - droid = iterateGroup(helpGroup); - } - - msg("Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE), player, _ally); - printDebug1("helpAlly: Sending "& helpGroup.members &" units to beacon point coord: "& (nHelpX/TILE) &"-"& (nHelpY/TILE) &" helping ("& getPlayerName(_ally) &")" ); - - orderGroupMoveCMD(helpGroup, nHelpX, nHelpY); - setEventTrigger(manageHelpTeam,manageHelpTeamTr); - -} - -//====================================================================== -// -// DyDo Communcation Functions & Events -// -//====================================================================== -event consoleEv(consoleTr) //(CALL_CONSOLE, ref sender, ref message); -{ - //console(getPlayerName(player) & " console sender ("& sender &") message ("& message &")"); - - if( (sender!=player) and (message == "are you dydo?" or message == "are you DyDo?" or message == "who are you?")) - { - //boolResult=true; - if(allianceExistsBetween(_sender,player)){ - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (ally)",player, sender); - } else { - msg("I am ("& DYDOBP_RELEASE &"), player "& player &", General " & AIPersonality & " ["& AIstrength &"] (enemy)",player, sender); - } - } - - if ( message == "/debug0 on" and player == 0 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug1 on" and player == 1 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug2 on" and player == 2 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug3 on" and player == 3 ) { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if ( message == "/debug on") { - msg("Debug turned on", player, sender); - dbgMsgOn(player, true); - } - - if (message == "/debug off" ) { - msg("Debug turned off", player, sender); - dbgMsgOn(player, false); - } - - if (message == "/stats" ) { - count = getTargetEnemy(false); - } - - if (message == "/stats1" ) { - displayStats(1); - } - - if (message == "/stats2" ) { - displayStats(2); - } - - if (message == "/stats3" ) { - displayStats(3); - } - - if ( gameTime < 2*TIME_MINUTE ){ - if(message == "/set dydo gen1" ) { - SetDyDoPersonality(AI_STANDARD,player); - console(getPlayerName(player) & " is now DyDo Standard AI"); - } - if(message == "/set dydo gen2" ) { - SetDyDoPersonality(AI_VTOL,player); - console(getPlayerName(player) & " is now DyDo VTOL AI"); - } - if(message == "/set dydo gen3" ) { - SetDyDoPersonality(AI_TURTLE,player); - console(getPlayerName(player) & " is now DyDo Turtle AI"); - } - if(message == "/set dydo gen4" ) { - SetDyDoPersonality(AI_CYBORG,player); - console(getPlayerName(player) & " is now DyDo Cyborg AI"); - } - if(message == "/set dydo random" ) { - SetDyDoPersonality(0,player); - console(getPlayerName(player) & " is now DyDo random AI"); - } - - if(message == "/set player0 gen1" ) { - SetDyDoPersonality(AI_STANDARD,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Standard AI"); } - } - if(message == "/set player1 gen1" ) { - SetDyDoPersonality(AI_STANDARD,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Standard AI"); } - } - if(message == "/set player2 gen1" ) { - SetDyDoPersonality(AI_STANDARD,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Standard AI"); } - } - if(message == "/set player3 gen1" ) { - SetDyDoPersonality(AI_STANDARD,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Standard AI"); } - } - - if(message == "/set player0 gen2" ) { - SetDyDoPersonality(AI_VTOL,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo VTOL AI"); } - } - if(message == "/set player1 gen2" ) { - SetDyDoPersonality(AI_VTOL,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo VTOL AI"); } - } - if(message == "/set player2 gen2" ) { - SetDyDoPersonality(AI_VTOL,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo VTOL AI"); } - } - if(message == "/set player3 gen2" ) { - SetDyDoPersonality(AI_VTOL,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo VTOL AI"); } - } - - if(message == "/set player0 gen3" ) { - SetDyDoPersonality(AI_TURTLE,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Turtle AI"); } - } - if(message == "/set player1 gen3" ) { - SetDyDoPersonality(AI_TURTLE,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Turtle AI"); } - } - if(message == "/set player2 gen3" ) { - SetDyDoPersonality(AI_TURTLE,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Turtle AI"); } - } - if(message == "/set player3 gen3" ) { - SetDyDoPersonality(AI_TURTLE,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Turtle AI"); } - } - - if(message == "/set player0 gen4" ) { - SetDyDoPersonality(AI_CYBORG,0); - if ( player==3 ){console( getPlayerName(0) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player1 gen4" ) { - SetDyDoPersonality(AI_CYBORG,1); - if ( player==3 ){console( getPlayerName(1) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player2 gen4" ) { - SetDyDoPersonality(AI_CYBORG,2); - if ( player==3 ){console( getPlayerName(2) & " is now DyDo Cyborg AI"); } - } - if(message == "/set player3 gen4" ) { - SetDyDoPersonality(AI_CYBORG,3); - if ( player==3 ){console( getPlayerName(3) & " is now DyDo Cyborg AI"); } - } - } - - if(message == "/autogame on" && (sender == player)) - { - if(myResponsibility(player)) - { - if(!bRunning) //make sure current machine is responsible for this AI and it's not already active - { - console(getPlayerName(player) & " is now active"); - bRunning = true; - activateAI(); - } - } - } - - if(message == "/autogame off" && (sender == player)) - { - if(myResponsibility(player)) - { - if(bRunning) - { - console(getPlayerName(player) & " AI has been deactivated"); - bRunning = false; - shutDownThisAI(); - } - } - } - -} -//======================================================================== -/* Deal with beacons */ -//(CALL_BEACON, player, ref sender, ref x, ref y, ref message); -event beaconEv(beaconTr) -{ - local int _players; - local string _processedString; - - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(beaconEv, inactive); - } - else - { - */ - ASSERT(sender >= 0 and sender < 8, "beaconEv: sender out of bounds: " & sender , player); - - updateBeacons(); - - beaconX[sender] = x; - beaconY[sender] = y; - tBeacon[sender] = gameTime / 10; - - processCommand(message, sender, TRUE); - //} -} - -//----------------------------------------------------------------------------- -function bool haveAnyBeacon() -{ - local int _c; - _c = 0; - while ( _c < MAX_PLAYERS ){ - if((tBeacon[_c] > 0) and (not beaconTimeout(_c))) - { - return true; //have beacon for this player - } - _c++; - } - - return false; -} -//----------------------------------------------------------------------------- -function bool haveBeacon(int _player) -{ - if((tBeacon[_player] > 0) and (not beaconTimeout(_player))) - { - return true; //have beacon for this player - } - - return false; -} -//----------------------------------------------------------------------------- -function bool beaconTimeout(int _player) -{ - if((tBeacon[_player] > 0) and (( tBeacon[_player] + tBeaconTimeout) < GAME_TIME_IN_SECS)) //not too long ago - { - return true; //this beacon is still 'fresh' - } - - return false; -} -//----------------------------------------------------------------------------- -function void updateBeacons() -{ - local int _c; - _c = 0; - while(_c < MAX_PLAYERS) - { - if(beaconTimeout(_c)) //last beacon timed out - { - tBeacon[_c] = -1; - beaconX[_c] = -1; - beaconY[_c] = -1; - } - _c = _c + 1; - } -} -//----------------------------------------------------------------------------- -/* Deal with a chat message */ -//(CALL_AI_MSG, player, ref sender, ref message); -event multiMsgEv(multiMsgTr) -{ - /* - if( !aiResponsibleForPlayer(player) ) - { - setEventTrigger(multiMsgEv, inactive); - } else { - */ - if( sender == player or !allianceExistsBetween(sender,player) ){ exit; } - processCommand(message, sender, false); - //} -} -//----------------------------------------------------------------------------- -function void processCommand(string _message, int _sender, bool _bBlipMessage) -{ - - //go,/stop,/status - local int _numMsgs, _curMsg, _addressedPlayers, _x, _y, _player; - local string _msg, _processedString; - local int _enWeap,_myWeap,_myWeapSTR,_enemyCost,_friendCost; - local int _tDG, _bg, _hg, _cAt, _tg, _bdg, _cG, _ccG, _rg, _HelpG; - local string _strTeams, _sWallDef, _sDef, _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4; - - /* Extract semantic information */ - _curMsg = 0; - _numMsgs = processChatMsg(_message); - - //boolResult=false; - //dbg("processCommand A: player("& getPlayerName(player) &") num messages("& _numMsgs &") _message(" & _message & ") from " & _sender, player); - - - //if (_message == "/debug_on" or _message == "/debug_on_player0" and player == 0 or _message == "/debug_on_player1" and player == 1 or _message == "/debug_on_player2" and player == 2 or _message == "/debug_on_player3" and player == 3 or _message == "/debug_on_player4" and player == 4 or _message == "/debug_on_player5" and player == 5 or _message == "/debug_on_player6" and player == 6 or _message == "/debug_on_player7" and player == 7 ) - - if(!allianceExistsBetween(_sender,player) ){ return; } - - while(_curMsg < _numMsgs ) - { - if(chatCmdIsPlayerAddressed(_curMsg, player))//not AIV func - { - - if ( _message == "stop" or _message == "Stop" ){ - _msg = "xxx"; - } else { - _msg = getChatCmdDescription(_curMsg); - } - - //dbg("Player ("& player &") addressed with : ("& _msg &")", player); - if(_msg == "help" or _msg == "help me" or _msg == "go!" or _msg == "go") //go - { - boolResult=true; - if(not haveBeacon(_sender)) - { - msg("Drop a beacon please (Alt+H), I need to know where to send the units", player, _sender); - return; - } else { - //dbg("dbg: Got a beacon on: "& (beaconX[_sender]/TILE) &"-"& (beaconY[_sender]/TILE), player); - if ( nAllyBeingHelped == -1 ){ - if ( canHelpAlly(_sender) ){//nAllyBeingHelped - lastHelpPlayer = _sender; - //dbg("dbg: Ally can help", _sender); - helpAlly(_sender); - } else{ - msg("I am sorry. I have no enough units to send or I am in trouble", player, _sender); - } - } else{ - if ( nAllyBeingHelped == _sender ){ - msg(getPlayerName(nAllyBeingHelped) & ", I am coming!" , player, _sender); - } else { - msg("I am sorry but I am already helping player # "& nAllyBeingHelped &" ("& getPlayerName(nAllyBeingHelped) &" colour)", player, _sender); - } - } - } - - } else if (_msg == "status?" or _msg == "Status?" or _msg == "status") { - boolResult=true; - //dbg("Got a status request :" & _msg, _sender ); - notifyStatus(1, _sender); - - } else if ( _msg == "xxx" ) { - boolResult=true; - if ( !bHelpingAnyAlly() ){ - msg("There is nothing to stop!", player, _sender); - } else { - //dbg("dbg: i'm addressed with stop", player); - if ( nAllyBeingHelped == _sender ){ - deactivateHelp(); - msg("Action deactivated!", player, _sender); - } - } - - } else if (_msg == "power?" or _msg == "power") { - boolResult=true; - msg("I have ("& playerPower(player) &") power available", player, _sender); - - } else if (_msg == "/status" ) { - count = (tankDefGroup.members-minDefDroids[nAI_Pers][MINDEF_TANKS])+(cyborgDefGroup.members-minDefDroids[nAI_Pers][MINDEF_CYBORGS])-MIN_HELPING_UNITS; - msg("Have a Beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &") Help Countdown("& count &"/"& MIN_HELPING_UNITS &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nDefendRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nDefendRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nDefendRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nDefendRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nDefendRange,false, true); - msg("Defend Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - _enemyCost = enemyWeapObjCostInRange(player, baseX, baseY, nBaseRange, false, true); - _friendCost = friendlyWeapObjCostInRange(player, baseX, baseY, nBaseRange,false, true); - msg("Base Range: _enWeap ("& _enWeap&") _myWeap ("& _myWeap &") _myWeapSTR ("& _myWeapSTR &") _enemyCost("& _enemyCost &") _friendCost("& _friendCost &")", player, _sender); - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _cAt = cyborgAttGroup.members; - _HelpG = helpGroup.members; - msg(" build("& _bg &"), harv("& _hg &"), buildDef("& _bdg &"), cybConst("& _ccG &"), repair("& _rg &"), tkDef("& _tDG &"), tkAttack("& _tg &"), cybDef("& _cG &"), cybAtt("& _cAt &"), help("& _HelpG &") ", player, _sender); - - count = 0; - while ( count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& count &"]("& isStructureAvailable(wallWeaps[count],player) &") "; - count++; - } - count = 0; - while ( count < numDefStructs ){ - _sDef = _sDef & " ["& count &"]("& isStructureAvailable(defStructs[count],player) &") "; - count++; - } - count = 0; - while ( count < 20){ - _str0 = _str0 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - while ( count < 40){ - _str1 = _str1 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - //displayMsg("________ (3) _________"); - while ( count < 60){ - _str2 = _str2 & " ["& count &"]"& numResearchLeft(player,research[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& count &"]"& numResearchLeft(player,researchCheap[0][count]) &" "; - count++; - } - - count = 0; - while ( count < numRes[9] ){ - _str4 = _str4 & " ["& count &"]"& numResearchLeft(player,research[9][count]) &" "; - count++; - } - count = 0; - while (count < MAX_PLAYERS){ - if (isPlayerStillLive(count)){ - _strTeams = _strTeams & " "& getPlayerName(count) &" ("& count &") ["& aPlayers[TEAM_NUMBER][count] &"] "; - } - count++; - } - msg("STDdef: ("& pickDefQueueDepth &") - " & _sDef , player, _sender); - msg("WALLdef: ("& pickWallDefQueueDepth &") - "& _sWallDef , player, _sender); - msg("A: " & _str0, player, _sender); - msg("B: " & _str1, player, _sender); - msg("C: " & _str2, player, _sender); - msg("Cheap: TOT:"& numCheapRes[0] & " " & _sRes2, player, _sender); - msg("VTOL: VTOL_PAD("& numResearchLeft(player,research[9][0]) &") Hurricane("& numResearchLeft(player,HurricaneAASite) &")Cyclone("& numResearchLeft(player,CycloneAASite) &")Whirlwind("& numResearchLeft(player,WhirlwindAASite) &") " & _str4, player, _sender); - } - - } //if(chatCmdIsPlayerAddressed(_curMsg, player))/ - _curMsg++; - } - -} -//----------------------------------------------------------------------------- -function void notifyAll(STRING _cstr) -{ - local int _player; - - _player = 0; - while(_player < MAX_PLAYERS ) - { - if ( player != _player ){ - msg(_cstr, player, _player); - } - _player++; - } - -} -//----------------------------------------------------------------------------- -function void notifyStatus(int _choice, int _player) -{ - - //nTotTanks = tankGroup.members+tankDefGroup.members+toBeRepairedTankGroup.members+helpGroup.members; - //nTotCyborgs = cyborgDefGroup.members + cyborgAttGroup.members + toBeRepairedCyborgGroup.members; - local int _f,_c,_r,_v,_h,_l,_cc; - - _f = nFactories; - _r = nResLabs; - _c = nCybFact; - _v = nVTOLFactories; - _h = numStructsByType(playerHQ, player); - _l = numStructsByType(lassat, player); - _cc = numStructsByType(derrick, player); - - msg("Player #("& player &") colour("& getPlayerName(player) &") Game Time("& gameTime/10/60 &" min) Map Size("& mapWidth &"-"& mapHeight &") Defend Range("& nDefendRange/TILE &") Under attack("& alertIsOn &")", player, _player); - msg("Power:"& playerPower(player) &" Derricks:"& _cc &" Min base structures buit:"& lMinBaseStructBuilt, player, _player); - msg("Droids: Tot("& nTotTanks+nTotCyborgs &") Defending("& tankDefGroup.members+cyborgDefGroup.members &") Attacking("& tankGroup.members+cyborgAttGroup.members &") Helping("& helpGroup.members &") To be Repaired("& toBeRepairedCyborgGroup.members+toBeRepairedTankGroup.members &") ", player, _player); - msg("Structs: Factories("& _f &") ResLabs("& _r &") CybFactories("& _c &") VTOLFactories("& _v &") Lassat("& _l &") HQ("& _h &") ", player, _player); - msg("Team1 attack active("& bTankAttIsOn &") Team 1 target player ("& targetPlayerTank &") Team 2 attack active("& bCybAttIsOn &") Team 2 target player("& targetPlayerCyb &") ", player, _player); - msg("Have a beacon("& haveAnyBeacon() &") Player Helped("& nAllyBeingHelped &") Helping Droids("& helpGroup.members &")", player, _player); - -} -//----------------------------------------------------------------------------- -function void displayStats(int _choice) -{ - - local string _sPlPow, _sPlInf1,_sPlInf2,_sPlInf3, _strTeams, _sWallDef, _sDef; - local string _sRes, _sRes2, _str0, _str1, _str2, _str3, _str4, _str5, _sFort; - local int _totTanks, _HQx,_HQy,_tDG, _bg, _hg, _tg, _bdg, _ccG, _rg, _HelpG; - local int _cG, _totHarv, _enWeap, _myWeap, _myWeapSTR, _enemyCost, _friendCost; - local int _count,_count2; - - ASSERT(player >= 0 and player < 8, "player out of bounds: showPlayerInfo " & player, player); - - _count=0; - while ( _count < 11 ) - { - if ( oilResTargetId[_count] > -1 ){ - _totHarv++; - } - _count++; - } - - _bg = buildGroup.members; - _hg = harvesterGroup.members; - _rg = repairGroup.members; - _tg = tankGroup.members; - _bdg = buildDefGroup.members; - _ccG = cyborgConstructGroup.members; - _cG = cyborgDefGroup.members; - _tDG = tankDefGroup.members; - _HelpG = helpGroup.members; - _totTanks = MIN_ATTACKING_TANKS+nAttackingUnitsToAdd+minDefDroids[nAI_Pers][MINDEF_TANKS]; - - _enWeap = numEnemyWeapDroidsInRange(player,baseX, baseY, nBaseRange , false); - _myWeap = numPlayerWeapDroidsInRange(player, player, baseX, baseY, nBaseRange , true); - _myWeapSTR = numFriendlyWeapStructsInRange(player,baseX, baseY, nBaseRange, true); - - structure = getStructure(playerHQ, player); - if(structure != NULLOBJECT) - { - _HQx = structure.x; - _HQy = structure.y; - } else { - _HQx = 0; - _HQy = 0; - } - - _count = 0; - while ( _count < numWallWeaps ){ - _sWallDef = _sWallDef & " ["& _count &"]("& isStructureAvailable(wallWeaps[_count],player) &") "; - _count++; - } - _count = 0; - while ( _count < numDefStructs ){ - _sDef = _sDef & " ["& _count &"]("& isStructureAvailable(defStructs[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < numFortressDef ){ - _sFort = _sFort & " ["& _count &"]("& isStructureAvailable(fortressDef[_count],player) &") "; - _count++; - } - - _count = 0; - while ( _count < 20){ - _str0 = _str0 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < 40){ - _str1 = _str1 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - while ( _count < numRes[0]){ - _str2 = _str2 & " ["& _count &"]"& numResearchLeft(player,research[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < 23){ - _str3 = _str3 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - while ( _count < numRes[1]){ - _str4 = _str4 & " ["& _count &"]"& numResearchLeft(player,research[1][_count]) &" "; - _count++; - } - - - _count = 0; - while ( _count < numCheapRes[0] ){ - _sRes2 = _sRes2 & " ["& _count &"]"& numResearchLeft(player,researchCheap[0][_count]) &" "; - _count++; - } - - _count = 0; - while ( _count < numRes[9] ){ - _str5 = _str5 & " ["& _count &"]"& numResearchLeft(player,research[9][_count]) &" "; - _count++; - } - - _count = 0; - while (_count < MAX_PLAYERS){ - if (isPlayerStillLive(_count)){ - _strTeams = _strTeams & " '"& getPlayerName(_count) &"'' #"& _count &" ["& aPlayers[TEAM_NUMBER][_count] &"] "; - } - _count++; - } - - _count=0; - while( _count < MAX_PLAYERS and _count < 3){ - if (isPlayerStillLive(_count)){ - _sPlInf1 = _sPlInf1 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 6 ){ - if (isPlayerStillLive(_count)){ - _sPlInf2 = _sPlInf2 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - while( _count < MAX_PLAYERS and _count < 8 ){ - if (isPlayerStillLive(_count)){ - _sPlInf3 = _sPlInf3 & " *["& getPlayerName(_count) &"] RL(" & aStat[OC_RESLABS][_count] & ") Der("& aStat[OC_DERRICKS][_count] &") Cy-Tk-VTOL("& aStat[OC_CYBORGS][_count] &"-"& aStat[OC_TANKS][_count] &"-"& aStat[OC_VTOLS][_count] &") Pow("& aStat[OC_CYB_POWER][_count] &"-"& aStat[OC_TK_POWER][_count] &"-"& aStat[OC_VTOL_POWER][_count] &") hp("& aStat[OC_CYB_HP][_count] &"-"& aStat[OC_TK_HP][_count] &"-"& aStat[OC_VTOL_HP][_count] &")"; - } - _count++; - } - - _count2=0; - while( _count2 < MAX_PLAYERS ){ - if (isPlayerStillLive(_count2)){ - _sPlPow = _sPlPow & " __"& getPlayerName(_count2) &" (" & getPowerIndex(_count2) & ")" ; - } - _count2++; - } - - _count = player; - if ( _choice == 1 ){ - dbg("dbg-> GameTime("& gameTime &") General("& AIPersonality &") AIstrength("& AIstrength &") gameType("& gameType() &") gameTime("& gameTime &") MAP("& mapWidth &"-"& mapHeight &") nBasRg("& nBaseRange/TILE &") gatRange("& gatewaysRangeTiles &") DefRange("& nDefendRange/TILE &") HQ("& _HQx/TILE &"-"& _HQy/TILE &") Base("& baseX/TILE &"-"& baseY/TILE &") arHarv("& _totHarv &") ",_count); - dbg("dbg-> Plyers: " & _strTeams & " nTeam("& nTeam &") nLastEnemyPlayer ("& nLastEnemyPlayer &") nEnemyPlayers ("& nEnemyPlayers &") nHumanPlayers("& nHumanPlayers &") nPlayersInGame("& nPlayersInGame &") nTotEnemyDroids("& nTotEnemyDroids &")", _count); - dbg("dbg-> bAnyOilResLeft("& bOilResLeft &") Harv("& _hg &") build("& _bg &") bDef"& _bdg &") cybConst("& _ccG &") _HelpG ("& _HelpG &") Tank("& _tg &") TankDef(" & _tDG & ") cybDef("& _cG &") cybAtt("& cyborgAttGroup.members &") CybRep("& toBeRepairedCyborgGroup.members &") TankRep("& toBeRepairedTankGroup.members &") VTOLdef("& vtolDefendGr.members &") VTOLatt("& vtolAttGr.members &")",_count); - dbg("dbg-> CybAttReq("& minDefDroids[nAI_Pers][MINDEF_CYBORGS]+MIN_ATT_CYBORGS+nCybAttUnitsToAdd &") TotCyb("& nTotCyborgs &") TankAttReq("& _totTanks &") TotTank("& nTotTanks &") help("& helpGroup.members &") alertIsOn ("& alertIsOn &") realGatew("& nRealGatewaysFound &") nAllyBeingHelped("& nAllyBeingHelped &") ",_count ); - dbg("dbg-> POWER ("& playerPower(0) &") ("& playerPower(1) &") ("& playerPower(2) &") ("& playerPower(3) &") ("& playerPower(4) &") ("& playerPower(5) &") ("& playerPower(6) &") ("& playerPower(7) &") DROID-LEFT ("& anyDroidsLeft(0) &")("& anyDroidsLeft(1) &")("& anyDroidsLeft(2) &")("& anyDroidsLeft(3) &")("& anyDroidsLeft(4) &")("& anyDroidsLeft(5) &")("& anyDroidsLeft(6) &")("& anyDroidsLeft(7) &") defSpotX/Y ("& defSpotX &"-"& defSpotY &") nTotOilInAtStart ("& nTotOilInAtStart &") ",_count); - } - if ( _choice == 2 ){ - dbg("dbg-> Power: bNeedDerrick ("& bNeedDerrick &") bForceResPowUp("& bForceResPowUp &") numRemainingOilRes()("& nFreeOilRes &") " & _sPlPow, _count); - dbg("dbg-> Info : " & _sPlInf1,_count); - dbg("dbg-> Info : " & _sPlInf2,_count); - dbg("dbg-> Info : " & _sPlInf3,_count); - dbg("dbg-> Tank Attack: tTKSentToGath ("& tTanksSentToGathering &") bTankAttIsOn ("& bTankAttIsOn &") lTKSentToGathPt ("& lTankSentToGatheringPoint &") bTKAlreadyGathered ("& bTankAlreadyGathered &") tankAttackX-Y ("& tankAttackY/TILE &"-"& tankAttackY/TILE &") targetPlTK ("& targetPlayerTank &") targetPlCyb("& targetPlayerCyb &") AttHumanPl("& nAttHumanPlayer &") AttAI("& nAttAIPlayer &")",_count); - } - if ( _choice == 3 ){ - dbg("dbg-> Standard Defe: Depth("& pickDefQueueDepth &") - " & _sDef, _count ); - dbg("dbg-> Wall Defences: Depth("& pickWallDefQueueDepth &") - "& _sWallDef, _count ); - dbg("dbg-> Fortresses: Depth("& pickFortQueueDepth &") - "& _sFort, _count); - dbg("dbg-> Res: " & _str0, _count); - dbg("dbg-> Res: " & _str1, _count); - dbg("dbg-> Res: " & _str2, _count); - dbg("dbg-> Res: " & _str3, _count); - dbg("dbg-> Res: " & _str4, _count); - dbg("dbg-> Cheap Res: "& numCheapRes[0] & " " & _sRes2, _count); - dbg("dbg-> VTOL Res: "& _str5,_count); - dbg("dbg-> lMinBaseStructBuilt("& lMinBaseStructBuilt &") Working Lab("& nWorkingLab &") Fact("& nWorkingFact &") Cyb("& nWorkingCybFac &") ", _count); - } - -} -//----------------------------------------------------------------------------- -function bool isPlayerStillLive(int _player) -{ - if ( anyDroidsLeft(_player) or anyFactoriesLeft(_player) ){ - return true; - } - return false; -} -//----------------------------------------------------------------------------- -function void checkIfDroidIsStuck(GROUP _group) -{ - - local int _x,_y,_dist,_rnd; - //Search for stucked droids - initIterateGroup(_group); - droid = iterateGroup(_group); - while(droid != NULLOBJECT) - { - if(!droidOrderIdle(droid)){ - - if ( !hasCoordStored(droid) ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") store coord in x("& droid.x/TILE &") y("& droid.y/TILE &") buildx("& droid.orderx/TILE &") buildx("& droid.ordery/TILE &") time("& gameTime &")"); - storeDroidCoord(droid); - } else { - - if ( coordChanged(droid) ){ - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") MOVES dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") build("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - updateDroidCoord(droid); - - } else { - _dist = distBetweenTwoPoints(droid.x,droid.y,droid.orderx,droid.ordery); - if ( _dist < 3*TILE ){ - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") BUILDS dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//this is a necessary hack to avoid wrong stuck - } else { - if ( incrementDroidCounter(droid.id) ){ - //dbg("dbg->checkIfDroidIsStuck: droid ("& droid.id &") IS *****STUCK******* dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")",player); - _rnd = random(4); - if ( _rnd == 0 ){ _x = droid.x + 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 1 ){ _x = droid.x - 4*TILE; _y=droid.y + 4*TILE; } - if ( _rnd == 2 ){ _x = droid.x + 4*TILE; _y=droid.y - 4*TILE; } - if ( _rnd == 3 ){ _x = droid.x - 4*TILE; _y=droid.y - 4*TILE; } - if ( _x < 0 ) { _x = 2*TILE; } - if ( _y < 0 ) { _y = 2*TILE; } - if ( _x > mapWidth*TILE ) { _x = mapWidth*TILE-(2*TILE); } - if ( _y > mapHeight*TILE ) { _y = mapHeight*TILE-(2*TILE); } - if( !droidCanReach(droid, _x ,_y) ){ - if ( pickStructLocation(powGen, ref _x, ref _y, player) ){ - //dbg("dbg->checkIfDroidIsStuck: 1-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } else { - //dbg("dbg->checkIfDroidIsStuck: 2-Moving droid ("& droid.id &") to("& _x/TILE &"-"& _y/TILE &") time("& gameTime &")",player); - orderDroidLoc(droid, DORDER_MOVE, _x, _y); - } - } //else { displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is possibly **STUCK** dist("& _dist/TILE &") pos("& droid.x/TILE &"-"& droid.y/TILE &") buildx("& droid.orderx/TILE &"-"& droid.ordery/TILE &") time("& gameTime &")"); } - - } - - } - } - - } else { - //displayMsg("checkIfDroidIsStuck: droid ("& droid.id &") is idle in x("& droid.x/TILE &") y("& droid.y/TILE &") time("& gameTime &")"); - cleanDroidPos(droid.id);//put all to -1 - } - droid = iterateGroup(_group); - } - return; -} -//----------------------------------------------------------------------------- -function bool incrementDroidCounter(int droid_id) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if (aDroid_Id[_c] == droid_id ){ - aDroid_counter[_c] = aDroid_counter[_c] + 1; - if ( aDroid_counter[_c] > 1 ){ return true; } else { return false;} - } - _c++; - } - - //dbg("dbg->incrementDroidCounter: Error! droid ("& droid_id &") not found",player); - return false; -} -//----------------------------------------------------------------------------- -function void cleanDroidCoordArray() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - - boolResult = false; - initIterateGroup(buildGroup); - droid = iterateGroup(buildGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildGroup); - } - - initIterateGroup(buildDefGroup); - droid = iterateGroup(buildDefGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(buildDefGroup); - } - - initIterateGroup(harvesterGroup); - droid = iterateGroup(harvesterGroup); - while(droid != NULLOBJECT) - { - if ( aDroid_Id[_c] == droid.id ){ - boolResult = true; - } - droid = iterateGroup(harvesterGroup); - } - - if ( !boolResult ){ - cleanDroidPos(aDroid_Id[_c]); - } - - _c++; - } - - - return; -} -//----------------------------------------------------------------------------- -function void cleanDroidPos(int _droidId) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droidId ){ - aDroid_Id[_c] = -1; - aDroid_X[_c] = -1; - aDroid_Y[_c] = -1; - aDroid_counter[_c] = 0; - } - _c++; - } -} - -//----------------------------------------------------------------------------- -function void storeDroidCoord(DROID _droid) -{ - local int _c; - _c = getFreePosDroid(); - if ( _c == -1 ){ _c = 49-random(10); } //hack - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; -} -//----------------------------------------------------------------------------- -function void updateDroidCoord(DROID _droid) -{ - local int _c; - _c = 0; - while ( count < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - aDroid_Id[_c] = droid.id; - aDroid_X[_c] = droid.x; - aDroid_Y[_c] = droid.y; - return; - } - _c++; - } - //it is ok if the droid has not been found because positions are resetted - //for droid not idle - storeDroidCoord(_droid); - return; -} - -//----------------------------------------------------------------------------- -function bool coordChanged(DROID _droid) -{ - local int _c,_c2; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - _c2 = distBetweenTwoPoints(_droid.x,_droid.y,aDroid_X[_c],aDroid_Y[_c]); - if ( _c2 > 2*TILE ){ - //displayMsg("coordChanged: TRUE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return true; - } else { - //displayMsg("coordChanged: FALSE droid ("& droid.id &") _c2("& _c2 &")>("& 2*TILE &") "); - return false; - } - } - _c++; - } - //dbg("dbg->coordChanged: Error! droid ("& _droid.id &") not found",player); - return true; -} -//----------------------------------------------------------------------------- -function bool hasCoordStored(DROID _droid) -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == _droid.id ){ - return true; - } - _c++; - } - return false; -} -//----------------------------------------------------------------------------- -function int getFreePosDroid() -{ - local int _c; - _c = 0; - while ( _c < num_aDroid ) - { - if ( aDroid_Id[_c] == -1 ){ return _c; } - _c++; - } - //dbg("dbg->getFreePosDroid: player("& player &") free pos not found!! ("& _c &")",player); - return -1; -} -//-------------------------------------------------------------------- -function int numStructinRange(STRUCTURESTAT _struct, int _player, int _xCoord, int _yCoord, int _Range) -{ - local int _nTot; - local STRUCTURE _structure; - - _nTot = 0; - - initEnumStruct(FALSE,_struct,_player,_player); - _structure = enumStruct(); - while(_structure != NULLOBJECT) - { - if ( distBetweenTwoPoints(_xCoord,_yCoord,_structure.x,_structure.y) <= _Range ) { _nTot++; } - _structure = enumStruct(); - } - - return _nTot; - -} -//-------------------------------------------------------------------- -function void printDebug( STRING _message ) -{ - if ( _DEBUG ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;0 ;" & _message); - } -} -//-------------------------------------------------------------------- -function void printDebug1( STRING _message ) -{ - if ( _DEBUG1 ){ - debug( GAME_TIME_IN_MIN &"min; "& getPlayerName(player) &" #"& player &" ["& AIPersonality &"-"& AIstrength &"] ;1 ;" & _message); - } -} -//-------------------------------------------------------------------- -// form alliances between AIs -function bool createAIalliance(int _player1, int _player2) -{ - - if (!isPlayerStillLive(_player1) or !isPlayerStillLive(_player2)){ - //dbg("dbg->createAIalliance: cannot ally as one or both players are not live",player); - return false; - } - - if( isHumanPlayer(_player1) or isHumanPlayer(_player1) ) { - //dbg("dbg->createAIalliance: cannot ally as one or both players are human",player); - return false; - } - - if( allianceExistsBetween(_player1, _player2) ){ - //dbg("dbg->createAIalliance: players are already allied",player); - return false; - } - - createAlliance(_player1,_player2); - notifyAll("-----------------------------------------------"); - notifyAll("Alliance created between AIs: '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - notifyAll("-----------------------------------------------"); - - printDebug1("createAIalliance: Alliance created between AIs '"& getPlayerName(_player1) &"' '"& getPlayerName(_player2) &"'"); - - return true; -} -//-------------------------------------------------------------------- -function STRUCTURESTAT getDefStruct() -{ - - local STRUCTURESTAT _defstruct; - local int _nDef,_n,_rnd; - - _n = min(pickDefQueueDepth,3); - _nDef = pickDefQueueDepth - 1 - random(_n);//best 3 defences - _defstruct = pickDefQueue[_nDef]; - - //=========== STANDARD DEFENCES ================================== - if ( random(100) < 35 or pickWallDefQueueDepth < 2 ){ - - if ( pickDefQueueDepth < 7 ){ - _rnd = _random(100); - //build mainly HMGhardPoint/MGbunker, LancerTower/miniRocketTower - if ( _rnd < 40 ){ - if (isStructureAvailable(HMGhardPoint,player)){ - _defstruct = HMGhardPoint; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - if ( _rnd >= 40 and _rnd < 70 ) { - if (isStructureAvailable(LancerTower,player)){ - _defstruct = LancerTower; - } else { - if (isStructureAvailable(miniRocketTower,player)){ - _defstruct = miniRocketTower; - } else { - if (isStructureAvailable(MGbunker,player)){ - _defstruct = MGbunker; - } - } - } - } - } - - - } else { //=========== WALL DEFENCES ================================== - - if(pickWallDefQueueDepth > 0)//best 4 def - { - _n = min(pickWallDefQueueDepth,4); - _nDef = pickWallDefQueueDepth - 1 - _random(_n); - _defstruct = pickWallDefQueue[_nDef]; - } - - } - - return _defstruct; -} -//----------------------------------------------------------------------------- -function DROID closestIdleDroid(GROUP _group, int _x, int _y) -{ - local DROID _closestTruck,_tempTruck; - local int _closestDist,_tempDist; - - _closestTruck = NULLOBJECT; - _closestDist = 999*TILE; - - if (_group.members == 0){ return _closestTruck; } - - initIterateGroup(_group); - _tempTruck = iterateGroup(_group); - while(_tempTruck != NULLOBJECT) - { - if(droidOrderIdle(_tempTruck)) - { - _tempDist = distBetweenTwoPoints(_x, _y, _tempTruck.x, _tempTruck.y); - if(_tempDist < _closestDist) - { - _closestDist = _tempDist; - _closestTruck = _tempTruck; - } - } - _tempTruck = iterateGroup(_group); - } - return _closestTruck; -} - - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player7.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/player7.vlo deleted file mode 100644 index 28661f9b7..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/player7.vlo +++ /dev/null @@ -1,1622 +0,0 @@ -///////////////////////////////////////////////////////////////////// -// DyDo-AI -// Generic vlo for each computer player - skirmish games -///////////////////////////////////////////////////////////////////// - -script "player7.slo" -run -{ - player INT 7 - -// Version 2.0.01 -// the version of the .vlo files is not related to the one of the .slo files -// -// -// AI mod developer DylanDog -// AI webpage: http://www.obooma.net/dydo/ -/////////////////////////////////////// -// -// THIS FILE STORES DATA AND CONSTANT VARIABLES -// -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+*+*+ DyDo-AI AI SETTINGS (modify number variables and TRUE/FALSE) *+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - //AI too strong ?? enable this and use the slider while you create a new game - //SLIDER MODE - EnableSliders BOOL true //<-- edit this value - - //AI CONTROLS HUMAN BASE - //AIControl BOOL false //<-- edit this value - - //CHANGE AI Personality - AIPersonality int 0 //<-- edit this value - - //SHOW AI Personality - showAIPersonality bool true //<-- edit this value - - //AI strenght - AIstrength int 0 //<-- edit this value - -// -------->>> MODIFICATION MANUAL: -/*--------------------------------------------------------------- - -EnableSliders - SLIDER MODE: - TRUE enables sliders - Apply the frontend slider settings. - FALSE disables sliders - Frontend slider settings are deactivated. - - -AIControl - ALLOW AI TO CONTROL HUMAN BASE: - TRUE enables AI control over your base - FALSE disables AI control over your base - -AIPersonality - CHANGE AI Personality - 0 - Random personality {General x} - 1 - General 1 personality {Standard AI} - 2 - General 2 personality {AI prioritizes use, production and research of VTOLs stuffs} - 3 - General 3 personality {Turtle AI} - 4 - General 4 personality {Cyborg AI} - -AIstrenght - CHANGE DYDO STRENGHT, it affects game difficulty in 4 and 8 players games - 2 players gaems are not affected by this (yet!). - 0 - random - 1 - standard - 2 - a bit stronger - 3 - stronger - 4 - hard - 5 - really hard - -// - -//////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////// -*/ - -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* -//+*+ DO NOT EDIT BELOW THIS LINE (for AI experts and mod developers ONLY) *+*+*+*+*+*+* -//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* - - - - //long Range Cyborgs - cybGren WEAPON "Cyb-Wpn-Grenade" - cybLancer WEAPON "CyborgRocket" - cybScourge WEAPON "Cyb-Wpn-Atmiss" - cybSuperHPV WEAPON "Cyb-Hvywpn-HPV" - cybSuperScourge WEAPON "Cyb-Hvywpn-A-T" - cybTankKiller WEAPON "Cyb-Hvywpn-TK" - - /* - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - xxxxx WEAPON "xxxxx" - */ - //Short Range Tank Weapons - MGun WEAPON "MG1Mk1" - TwinMGun WEAPON "MG2Mk1" - HMGun WEAPON "MG3Mk1" - TwinAGun WEAPON "MG5TWINROTARY" - AGun WEAPON "MG4ROTARYMk1" - Flamer WEAPON "Flame1Mk1" - PlasmFlamer WEAPON "PlasmiteFlamer" - Inferno WEAPON "Flame2" - NeedleGun WEAPON "RailGun1Mk1" - RailGun WEAPON "RailGun2Mk1" - GaussCannon WEAPON "RailGun3Mk1" - PlasmaCannon WEAPON "Laser4-PlasmaCannon" - EMPCannon WEAPON "EMP-Cannon" - LCannon WEAPON "Cannon1Mk1" - MCannon WEAPON "Cannon2A-TMk1" - ACannon WEAPON "Cannon5VulcanMk1" - HCannon WEAPON "Cannon375mmMk1" - TACannon WEAPON "Cannon6TwinAslt" - //Long Range Tank Weapons - HVCannon WEAPON "Cannon4AUTOMk1" - RocketPod WEAPON "Rocket-Pod" - RocketMRL WEAPON "Rocket-MRL" - Lancer WEAPON "Rocket-LtA-T" - RocketBB WEAPON "Rocket-BB" - TankKiller WEAPON "Rocket-HvyA-T" - RippleRockets WEAPON "Rocket-IDF" - ScourgeMissle WEAPON "Missile-A-T" - SeraphMissile WEAPON "Missile-MdArt" - ArchangelMissile WEAPON "Missile-HvyArt" - - - HoverProp PROPULSION "hover01" - TrackedProp PROPULSION "tracked01" - Half_Track PROPULSION "HalfTrack" - Viper BODY "Body1REC" - - // structures - - // generic names, often used. - oilRes FEATURESTAT "OilResource" - resLab STRUCTURESTAT "A0ResearchFacility" - powGen STRUCTURESTAT "A0PowerGenerator" - factory STRUCTURESTAT "A0LightFactory" - derrick STRUCTURESTAT "A0ResourceExtractor" - cybFactory STRUCTURESTAT "A0CyborgFactory" - playerHQ STRUCTURESTAT "A0CommandCentre" - vtolPad STRUCTURESTAT "A0VtolPad" - vtolFactory STRUCTURESTAT "A0VTolFactory1" - repairFacility STRUCTURESTAT "A0RepairCentre3" - uplinkCenter STRUCTURESTAT "A0Sat-linkCentre" - lassat STRUCTURESTAT "A0LasSatCommand" - demAnomallyFix STRUCTURESTAT "A0ADemolishStructure" - - powModule STRUCTURESTAT "A0PowMod1" - facModule STRUCTURESTAT "A0FacMod1" - resModule STRUCTURESTAT "A0ResearchModule1" - miniRocketTower STRUCTURESTAT "GuardTower6" - LancerTower STRUCTURESTAT "GuardTower5" - HMGhardPoint STRUCTURESTAT "WallTower01" - MGbunker STRUCTURESTAT "PillBox1"//Machinegun Bunker $100 - - //indirect weapons - resCBSense RESEARCHSTAT "R-Sys-CBSensor-Tower01" - mortarPit RESEARCHSTAT "R-Wpn-Mortar01Lt" - bombardPit RESEARCHSTAT "R-Wpn-Mortar02Hvy" - pepperpotPit RESEARCHSTAT "R-Wpn-Mortar3" - rippleRockets RESEARCHSTAT "R-Wpn-Rocket06-IDF" - sensorTower STRUCTURESTAT "Sys-SensoTower02" - CBSense STRUCTURESTAT "Sys-CB-Tower01" - defMortar STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - defBombard STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - defPepperpot STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - defRippleRockets STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - NEXUS_WEAPON1 WEAPON "NEXUSlink" - NEXUS_WEAPON2 WEAPON "SpyTurret01" - - cyborgPropulsion PROPULSION "CyborgLegs" - - lancerATweap RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" - powerAddOn RESEARCHSTAT "R-Struc-Power-Upgrade03a" - CyborgLegs RESEARCHSTAT "R-Cyborg-Legs01" - VTOLPadRes RESEARCHSTAT "R-Struc-VTOLPad" - AASite RESEARCHSTAT "R-Defense-AASite-QuadBof"//Cyclone AA Site - HurricaneAASite RESEARCHSTAT "R-Defense-AASite-QuadMg1" - CycloneAASite RESEARCHSTAT "R-Defense-AASite-QuadBof" - WhirlwindAASite RESEARCHSTAT "R-Defense-AASite-QuadRotMg" - - cobraBody RESEARCHSTAT "R-Vehicle-Body05" - phytonBody RESEARCHSTAT "R-Vehicle-Body11" - scorpionBody RESEARCHSTAT "R-Vehicle-Body08" - mantisBody RESEARCHSTAT "R-Vehicle-Body12" - leopardBody RESEARCHSTAT "R-Vehicle-Body02" - pantherBody RESEARCHSTAT "R-Vehicle-Body06" - tigerBody RESEARCHSTAT "R-Vehicle-Body09" - retaliationBody RESEARCHSTAT "R-Vehicle-Body03" - retributionBody RESEARCHSTAT "R-Vehicle-Body07" - vengeanceBody RESEARCHSTAT "R-Vehicle-Body10" - wyvernBody RESEARCHSTAT "R-Vehicle-Body13" - dragonBody RESEARCHSTAT "R-Vehicle-Body14" - - mediumCannon RESEARCHSTAT "R-Wpn-Cannon2Mk1" - heavyCannon RESEARCHSTAT "R-Wpn-Cannon3Mk1" - - trackPropulsion RESEARCHSTAT "R-Vehicle-Prop-Tracks" - hoverPropulsion RESEARCHSTAT "R-Vehicle-Prop-Hover" - - powUpgrades0 RESEARCHSTAT "R-Struc-PowerModuleMk1" - powUpgrades1 RESEARCHSTAT "R-Struc-Power-Upgrade01" - powUpgrades2 RESEARCHSTAT "R-Struc-Power-Upgrade01b" - powUpgrades3 RESEARCHSTAT "R-Struc-Power-Upgrade01c" - powUpgrades4 RESEARCHSTAT "R-Struc-Power-Upgrade02" - powUpgrades5 RESEARCHSTAT "R-Struc-Power-Upgrade03" - powUpgrades6 RESEARCHSTAT "R-Struc-Power-Upgrade03a" - - wall STRUCTURESTAT "A0HardcreteMk1Wall" - - // incendry emplacements - numIncendrys INT 8 - incendrys[0] STRUCTURESTAT "Emplacement-MortarPit01" //Mortar Pit [range 9-18] - incendrys[1] STRUCTURESTAT "Emplacement-MortarPit02" //Bombard Pit [range 9-18] - incendrys[2] STRUCTURESTAT "Emplacement-RotMor" //*Pepperpot Pit [range 9-18] - - incendrys[3] STRUCTURESTAT "Emplacement-Rocket06-IDF" //*Ripple Rockets Battery [range 8-86] - - incendrys[4] STRUCTURESTAT "Emplacement-Howitzer105" //Howitzer Emplacement [range 15-39] - incendrys[5] STRUCTURESTAT "Emplacement-Howitzer150" //*Ground Shaker Emplacement [range 15-78] - - incendrys[6] STRUCTURESTAT "Emplacement-RotHow" //HellStorm Emplacement [range 15-55] - incendrys[7] STRUCTURESTAT "Emplacement-HvART-pit" //*Archangel Missile Emplacement [range 16-120] - - // sensor types - numSense INT 3 - sense[0] STRUCTURESTAT "Sys-SensoTowerWS" //Wide Spectrum Sensor Tower [17.7-26.5] - sense[1] STRUCTURESTAT "Sys-CB-Tower01" //CB Tower [range 16-24] - sense[2] STRUCTURESTAT "Sys-SensoTower01" //Sensor Tower [range 12-18] - - //anti air - numAA INT 6 - vtolDefStruct[0] STRUCTURESTAT "AASite-QuadMg1" //hurricane - vtolDefStruct[1] STRUCTURESTAT "AASite-QuadBof" //cyclone - vtolDefStruct[2] STRUCTURESTAT "AASite-QuadRotMg" //plasma site - vtolDefStruct[3] STRUCTURESTAT "P0-AASite-SAM1" //avenger - vtolDefStruct[4] STRUCTURESTAT "P0-AASite-SAM2" //vindicator - vtolDefStruct[5] STRUCTURESTAT "P0-AASite-Laser" //laser - - //min droids to keep in defend team for each AIpersonality - //[x][0] tanks - //[x][1] cyborgs - //[x][2] VTOLs - - minDefDroids[0][0] INT 5 - minDefDroids[0][1] INT 5 - minDefDroids[0][2] INT 3 - //VTOL - minDefDroids[1][0] INT 5 - minDefDroids[1][1] INT 5 - minDefDroids[1][2] INT 5 - //turtle - minDefDroids[2][0] INT 8 - minDefDroids[2][1] INT 8 - minDefDroids[2][2] INT 5 - //Cyborg - minDefDroids[3][0] INT 0 - minDefDroids[3][1] INT 10 - minDefDroids[3][2] INT 3 - - // Essential structs. - numStructs INT 4 - structs[0] STRUCTURESTAT "A0LightFactory" - structs[1] STRUCTURESTAT "A0ResearchFacility" - structs[2] STRUCTURESTAT "A0CyborgFactory" - structs[3] STRUCTURESTAT "A0VTolFactory1" - - // General 1 - structsLimits[0][0] INT 3 - structsLimits[0][1] INT 4 - structsLimits[0][2] INT 3 - structsLimits[0][3] INT 3 - - // General 2 VTOL - structsLimits[1][0] INT 3 - structsLimits[1][1] INT 3 - structsLimits[1][2] INT 3 - structsLimits[1][3] INT 3 - - // General 3 Turtle - structsLimits[2][0] INT 2 - structsLimits[2][1] INT 5 - structsLimits[2][2] INT 2 - structsLimits[2][3] INT 2 - - // General 4 Cyborg - structsLimits[3][0] INT 1 - structsLimits[3][1] INT 4 - structsLimits[3][2] INT 5 - structsLimits[3][3] INT 1 - - numDefStructs INT 13 - defStructs[0] STRUCTURESTAT "GuardTower1"//*MG3Mk1 $Machinegun Guard Tower - defStructs[1] STRUCTURESTAT "PillBox1"//Machinegun Bunker - defStructs[2] STRUCTURESTAT "PillBox5"//Flamer Bunker - defStructs[3] STRUCTURESTAT "GuardTower6"//Mini-Rocket (pod) tower - defStructs[4] STRUCTURESTAT "GuardTower5"//Lancer Tower - defStructs[5] STRUCTURESTAT "PillBox6"//Lancer Bunker - defStructs[6] STRUCTURESTAT "PillBox4"//Light Cannon Bunker - defStructs[7] STRUCTURESTAT "Emplacement-MortarPit02" - defStructs[8] STRUCTURESTAT "Emplacement-HeavyLaser" //Heavy Laser Emplacement - defStructs[9] STRUCTURESTAT "Emplacement-Howitzer105" - defStructs[10] STRUCTURESTAT "Emplacement-HvyATrocket" - defStructs[11] STRUCTURESTAT "Emplacement-PulseLaser" - defStructs[12] STRUCTURESTAT "Emplacement-Rail2" - - - // wall structs - NOT BUILT YET - numWallWeaps INT 16 - wallWeaps[0] STRUCTURESTAT "WallTower01"//Heavy Machinegun Hardpoint $100 - wallWeaps[1] STRUCTURESTAT "WallTower02"//Light Cannon Hardpoint $125 - wallWeaps[2] STRUCTURESTAT "WallTower03"//*Medium Cannon Hardpoint $200 - wallWeaps[3] STRUCTURESTAT "WallTower06"//Lancer Hardpoint $150 - wallWeaps[4] STRUCTURESTAT "WallTower04"//*Heavy Cannon Hardpoint $250 - wallWeaps[5] STRUCTURESTAT "Wall-RotMg"//*Assault Gun Hardpoin $150 - wallWeaps[6] STRUCTURESTAT "WallTower-EMP" - wallWeaps[7] STRUCTURESTAT "WallTower-Projector" - wallWeaps[8] STRUCTURESTAT "Wall-VulcanCan" - wallWeaps[9] STRUCTURESTAT "WallTower-HvATrocket" - wallWeaps[10] STRUCTURESTAT "WallTower-Rail2"//Rail Gun Hardpoint $350 - wallWeaps[11] STRUCTURESTAT "WallTower-Rail3"//Gauss Cannon Emplacement $450 - wallWeaps[12] STRUCTURESTAT "WallTower-PulseLas" - wallWeaps[13] STRUCTURESTAT "WallTower-HPVcannon"//??Emplacement-HPVcannon $200 - wallWeaps[14] STRUCTURESTAT "WallTower-Atmiss" - wallWeaps[15] STRUCTURESTAT "WallTower-Atmiss" - - numFortressDef INT 4 - fortressDef[0] STRUCTURESTAT "X-Super-Cannon"//"R-Defense-Super-Cannon"//Cannon Fortress - fortressDef[1] STRUCTURESTAT "X-Super-Rocket"//"R-Defense-Super-Rocket"//Heavy Rocket Bastion - fortressDef[2] STRUCTURESTAT "X-Super-Missile"//"R-Defense-Super-Missile"//Missile Fortress - fortressDef[3] STRUCTURESTAT "X-Super-MassDriver"//"R-Defense-MassDriver"// Mass Driver Fortress - - - numGenAA INT 10 - vtolGenStruct[0] STRUCTURESTAT "AASite-QuadMg1" //Hurricane Site - vtolGenStruct[1] STRUCTURESTAT "WallTower-DoubleAAGun" //Cyclone - HP - vtolGenStruct[2] STRUCTURESTAT "AASite-QuadBof" //Cyclone - Site - vtolGenStruct[3] STRUCTURESTAT "AASite-QuadRotMg" //WhirlWind - Site - vtolGenStruct[4] STRUCTURESTAT "WallTower-QuadRotAAGun" //Whirlwind - HP - vtolGenStruct[5] STRUCTURESTAT "P0-AASite-SAM1" //Avenger SAM - Site - vtolGenStruct[6] STRUCTURESTAT "WallTower-SamSite" //Avenger - HP - vtolGenStruct[7] STRUCTURESTAT "P0-AASite-SAM2" //Vindicator SAM - Site - vtolGenStruct[8] STRUCTURESTAT "WallTower-SamHvy" //Vindicator - HP - vtolGenStruct[9] STRUCTURESTAT "P0-AASite-Laser" //Laser - - - - ///////////////////////////////////////////////////////////////////// - // SENSORS / REPAIR TEMPLATES - - repairTank TEMPLATE "ViperRepairWheels" - constructor TEMPLATE "ConstructorDroid" - constructor2 TEMPLATE "ScorpHoverTruck" - cybcondroid TEMPLATE "Cyb-ComEng" - cybMech TEMPLATE "Cyb-Mechanic" - - - ///////////////////////////////////////////////////////////////////// - // cyborg templates - numSuperCyb INT 17 - - superCyb[0] TEMPLATE "Cyb-Hvy-A-T"//Super Scourge Cyborg $235 - superCyb[1] TEMPLATE "Cyb-Hvy-RailGunner"//Super Rail-Gunner $240 - superCyb[2] TEMPLATE "Cyb-Hvy-PulseLsr"//Super Pulse Laser Cyborg $150 - superCyb[3] TEMPLATE "Cyb-Hvy-TK"//Super Tank-Killer Cyborg $250 - superCyb[4] TEMPLATE "Cyb-Hvy-HPV"//Super HPV Cyborg $150 - superCyb[5] TEMPLATE "Cyb-Hvy-Acannon"//Super Auto-Cannon Cyborg $125 - superCyb[6] TEMPLATE "Cyb-Hvy-Mcannon"//Super Heavy-Gunner $125 - //normal cyborgs - superCyb[7] TEMPLATE "MP-Cyb-ATmiss-GRD"//Scourge $250 - superCyb[8] TEMPLATE "MP-Cyb-Needle-GRD" //Needle Gunner $160 - superCyb[9] TEMPLATE "CyborgRkt01Ground"//lancer $125 - superCyb[10] TEMPLATE "MP-Cyb-Laser1-GRD"// Flashlight Gunner $100 - superCyb[11] TEMPLATE "CyborgRotMgGround" //Assault Gunner $90 - superCyb[12] TEMPLATE "Cyb-Thermite"//Thermite Flamer $80 (370 hitPoints) - superCyb[13] TEMPLATE "Cyb-Gren"//Grenadier $80 (370 hitPoints) - superCyb[14] TEMPLATE "CyborgCannon01Grd"//heavy Gunner $70 (380 hitPoints) - superCyb[15] TEMPLATE "CyborgFlamer01Grd"//flamer - superCyb[16] TEMPLATE "CyborgChain01Ground"//Machinegunner(235 hitPoints) - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - numVtolTemplates int 9 - vtols[0] TEMPLATE "V-Bug-Lancer" //Bug - Lancer - vtols[1] TEMPLATE "V-Bug-HPV" //Bug - HyperVelCann - vtols[2] TEMPLATE "H-Scorp-VTOL-Lancer" //Scorpion - Lancer - vtols[3] TEMPLATE "V-Scor-HPV" //Scorpion - HyperVelCann - vtols[4] TEMPLATE "SK-Retal-VTOL-Scourge" //Retaliation - Scourge Missle (AT) - vtols[5] TEMPLATE "SK-Mantis-VTOL-PBB" //**Mantis - Phosphor Bomb Bay - vtols[6] TEMPLATE "SK-Mantis-VTOL-HBB" //**Mantis - Heap Bomb Bay - vtols[7] TEMPLATE "SK-Retre-VTOL-HBB" //**Retribution - Heap Bomb Bay - vtols[8] TEMPLATE "SK-Retre-VTOL-Thermite" //**Retribution - Thermite Bomb Bay - -//////////////////////////////////////////////////////////////////// -// -// COMBAT TANK TEMPLATES - -/* - //Viper 65hp-600w-30$ Cobra 130hp-2000w-46$ Phyton 200hp-2700w-60$ - //Bug 55hp-450w-25$ Scorpion 125hp-1500w-39$ Mantis 180hp-2100w-52$ - //Leopard 85hp-750w-41$ Panther 145hp-2500w-57$ Tiger 225hp-3300w-71$ - //Retaliaton 100hp-450w-68$ Retribution 200hp-1500w-100$ Vengeance 300hp-2500w-130$ - // Wyvern 350hp-5000w-156$ Dragon 400hp-6000w-1820$ - - Tank bodies - numTankBodies int 9 - tankBody[0] BODY "Body1REC" // viper - tankBody[1] BODY "Body5REC" // cobra - tankBody[2] BODY "Body2SUP" // leopard - tankBody[3] BODY "Body11ABT" // python - tankBody[4] BODY "Body7ABT" // **retribution - tankBody[5] BODY "Body9REC" // tiger - tankBody[6] BODY "Body10MBT" // **vengeance - tankBody[7] BODY "Body13SUP" // wyvern - tankBody[8] BODY "Body14SUP" // dragon - tankBody[2] BODY "Body3MBT" // **Retaliation - tankBody[3] BODY "Body4ABT" // *Bug - tankBody[5] BODY "Body6SUPP" // Panther - tankBody[7] BODY "Body8MBT" // *Scorpion - tankBody[11] BODY "Body12SUP" // *Mantis - -*/ - - - numTmpls INT 63 - //================================================================= - //1-Viper - tmpl0[62] TEMPLATE "ViperMG01Wheels"// - tmpl0[61] TEMPLATE "ViperFlameHalfTracks" //Anti personnel - tmpl0[60] TEMPLATE "ViperMG02Halftrack" //Anti personnel - tmpl0[59] TEMPLATE "ViperLtCannonHTracks" //all-rounder - tmpl0[58] TEMPLATE "ViperPODHalfTracks" //anti-tank - tmpl0[57] TEMPLATE "ViperMRLHalfTracks" //anti-tank - - //1-Cobra - tmpl0[56] TEMPLATE "CobraPODHTracks" //anti-tank - tmpl0[55] TEMPLATE "CobraMRLHalftrack"//anti-tank - tmpl0[54] TEMPLATE "CobraLtA-Thalftrack"//anti-tank - tmpl0[53] TEMPLATE "CobraHMGHalfTrack" //Anti personnel - tmpl0[52] TEMPLATE "CobraMedCnHTrks" //all-rounder - tmpl0[51] TEMPLATE "A-Cobra-Hover-MC" //all-rounder - tmpl0[50] TEMPLATE "CobraInfernoHTracks"//Anti personnel - tmpl0[49] TEMPLATE "CobraInfernoHover" //Anti personnel - - - //1-Phyton - tmpl0[48] TEMPLATE "SK-Python-Hover-Lancer" //anti-tank - tmpl0[47] TEMPLATE "PythonTKTracks" //anti-tank - tmpl0[46] TEMPLATE "PythonHoverInferno" //Anti personnel - tmpl0[45] TEMPLATE "PhytonHoverAssGun" //Anti personnel - tmpl0[44] TEMPLATE "PhytonHTrackAssGun" //Anti personnel - tmpl0[43] TEMPLATE "PythonMedCanTracks" //all-rounder - tmpl0[42] TEMPLATE "SK-Python-Hover-Mcannon" //all-rounder - tmpl0[41] TEMPLATE "Sk-PythonHvCanTrack" //all-rounder - tmpl0[40] TEMPLATE "SK-Python-Hover-Hcannon" //all-rounder - - //================================================================= - //2-Bug - - //2-Scorpion {R-Vehicle-Body08} - tmpl0[39] TEMPLATE "SK-Scorp-Hover-Lancer" //anti-tank - tmpl0[38] TEMPLATE "ScorpHTrackHMG" //Anti personnel - tmpl0[37] TEMPLATE "SK-Scorp-Hover-Mcannon" //all-rounder - - //2-Mantis {R-Vehicle-Body12} - tmpl0[36] TEMPLATE "MantisHoverAC" //all-rounder - tmpl0[35] TEMPLATE "SK-Mantis-Hover-Hcannon" //all-rounder - tmpl0[34] TEMPLATE "SK-Mantis-Hover-HVC" //all-rounder - - //================================================================= - //3-Leopard {R-Vehicle-Body02} - tmpl0[33] TEMPLATE "LeopardHoverPulseLas" //Anti personnel - tmpl0[32] TEMPLATE "SK-Leopard-HTrk-ASGun" //Anti personnel - tmpl0[31] TEMPLATE "SK-Leopard-Hover-Needle" //all-rounder - tmpl0[30] TEMPLATE "SK-Leopard-Htrk-Needle" //all-rounder - - //3-Panther {R-Vehicle-Body06} - tmpl0[29] TEMPLATE "SK-Panther-Hover-TK" //anti-tank - tmpl0[28] TEMPLATE "SK-Panther-Track-TK" //anti-tank - tmpl0[27] TEMPLATE "PantherHoverPulseLas" //Anti personnel - tmpl0[26] TEMPLATE "SK-Panther-Htrk-ASGun" //Anti personnel - tmpl0[25] TEMPLATE "SK-Panther-Hover-HVC" //all-rounder - tmpl0[24] TEMPLATE "SK-Panther-Track-HVC" //all-rounder - - //3-Tiger {R-Vehicle-Body09} - tmpl0[23] TEMPLATE "SK-Tiger-Hover-TK" //anti-tank - tmpl0[22] TEMPLATE "SK-Tiger-Track-TK" //anti-tank - tmpl0[21] TEMPLATE "TigerHoverPulseLas" // Anti personnel - tmpl0[20] TEMPLATE "SK-Tiger-Track-ASCannon" // Anti personnel - tmpl0[19] TEMPLATE "TigerHoverRailGun" // all-rounder - tmpl0[18] TEMPLATE "SK-Tiger-Track-Hcannon" //all-rounder - //tmpl0[14] TEMPLATE "TigerPulseTracks" //OK - //tmpl0[13] TEMPLATE "TigerHvLaserTracks" //OK - - //================================================================= - //4-Retaliation {R-Vehicle-Body03} - - //4-Retribution {R-Vehicle-Body07} - tmpl0[17] TEMPLATE "SK-Retre-Hover-Scourge" //anti-tank - tmpl0[16] TEMPLATE "SK-Retre-Track-Scourge" //anti-tank - tmpl0[15] TEMPLATE "RetreHoverFlashLight" //Anti personnel - replace with PulseLAS?? - tmpl0[14] TEMPLATE "SK-Retre-Track-PulseLsr" //Anti personnel - tmpl0[13] TEMPLATE "SK-Retre-Hover-RailGun" //all-rounder - tmpl0[12] TEMPLATE "SK-Retre-Track-RailGun" //all-rounder - - //4-R-Wpn-Cannon-Damage07 - tmpl0[11] TEMPLATE "SK-Veng-Hover-Scourge" //anti-tank - tmpl0[10] TEMPLATE "SK-Veng-Track-Scourge" //anti-tank - tmpl0[9] TEMPLATE "SK-Veng-Hover-PulseLsr" //Anti personnel - tmpl0[8] TEMPLATE "SK-Veng-Track-HvyLaser" //Anti personnel - tmpl0[7] TEMPLATE "SK-Veng-Hover-Gauss" //all-rounder - tmpl0[6] TEMPLATE "SK-Veng-Track-Gauss" //all-rounder - - //================================================================= - //5-Wyvern {R-Vehicle-Body13} - tmpl0[5] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[4] TEMPLATE "WyvernScourgeTracks" //anti-tank - tmpl0[3] TEMPLATE "WyvernPulseTracks" //Anti personnel - tmpl0[2] TEMPLATE "WyvernHvLaserTracks" //Anti personnel - tmpl0[1] TEMPLATE "WyvernGaussTracks" // all-rounder - tmpl0[0] TEMPLATE "WyvernPlasmaCTracks" //all-rounder - - //5-Dragon {R-Vehicle-Body14} - - //Base structures - numBaseStructs INT 10 - baseStructs[0] STRUCTURESTAT "A0LightFactory" - baseStructs[1] STRUCTURESTAT "A0CommandCentre" - baseStructs[2] STRUCTURESTAT "A0ResearchFacility" - baseStructs[3] STRUCTURESTAT "A0VTolFactory1" - baseStructs[4] STRUCTURESTAT "A0PowerGenerator" - baseStructs[5] STRUCTURESTAT "A0CyborgFactory" - baseStructs[6] STRUCTURESTAT "A0LasSatCommand" - baseStructs[7] STRUCTURESTAT "A0Sat-linkCentre" - baseStructs[8] STRUCTURESTAT "A0LasSatCommand" - baseStructs[9] STRUCTURESTAT "A0ResourceExtractor" - - - - //resUnitTransporter RESEARCHSTAT "R-Cyborg-TransportU" - - /***************************************************************/ - // Array used in the slo file - DEFAULT Personality - General 1 - /***************************************************************/ - - //cheap Researches - numCheapRes[0] INT 21 - researchCheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - researchCheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - researchCheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - researchCheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - researchCheap[0][4] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - researchCheap[0][5] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - researchCheap[0][6] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - researchCheap[0][7] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - researchCheap[0][8] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - researchCheap[0][9] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - researchCheap[0][10] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - researchCheap[0][11] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - researchCheap[0][12] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - researchCheap[0][13] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - researchCheap[0][14] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - researchCheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - researchCheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - researchCheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - researchCheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - researchCheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - researchCheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numRes[0] INT 62 - - //essentials - research[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - research[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - research[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - research[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - research[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - research[0][5] RESEARCHSTAT "R-Vehicle-Body05" - research[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - research[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - research[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - research[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - research[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - research[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - research[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - research[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - research[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - research[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - research[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - research[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - research[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - research[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - research[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - research[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - research[0][22] RESEARCHSTAT "R-Vehicle-Body11" - research[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - research[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - research[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - research[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - research[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - research[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - research[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - research[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - research[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - research[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - research[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - research[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - research[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - research[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - research[0][39] RESEARCHSTAT "R-Vehicle-Body12" - research[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - research[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - research[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - research[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - research[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - research[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - research[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - research[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - research[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - research[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - research[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - research[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - research[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - research[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - research[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - research[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - research[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - research[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - research[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - research[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - research[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - research[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numRes[1] INT 47 - - //Cyborg - research[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - research[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - research[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - research[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - research[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - research[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - research[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - research[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - research[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - research[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - research[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - research[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - research[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - research[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - research[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - research[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - research[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - research[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - research[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - research[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - research[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - research[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - research[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - research[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - research[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - research[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - research[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - research[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - research[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - research[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - research[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - research[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - research[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - research[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - research[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - research[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - research[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - research[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - research[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - research[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - research[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - research[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - research[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - research[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - research[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - research[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - research[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numRes[9] INT 26 - - //VTOL fact & Propulsion, Rearming PAD, Anti AA def - research[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - research[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - research[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - research[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - research[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - research[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - research[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - research[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - research[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - research[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - research[9][10] RESEARCHSTAT "R-Vehicle-Body12" - research[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - research[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - research[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - research[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - research[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - research[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - research[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - research[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - research[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - research[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - research[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - research[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - research[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - research[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - research[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - - // ================================================================================ - // personality GENERAL 2 (VTOL) - // ================================================================================ - - //cheap Researches - numCheapResGen2[0] INT 21 - general2Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //$18 repair turret, pre-researched - general2Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" //$37 - general2Cheap[0][2] RESEARCHSTAT "R-Struc-Research-Upgrade02" //160% - general2Cheap[0][3] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - general2Cheap[0][4] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general2Cheap[0][5] RESEARCHSTAT "R-Struc-Materials01" //$37 - 135% - Reinforced Base Structure Materials - general2Cheap[0][6] RESEARCHSTAT "R-Cyborg-Metals01" //$37 - 135% - Cyborg Composite Alloys - general2Cheap[0][7] RESEARCHSTAT "R-Struc-Factory-Upgrade01" //$75 - 160% - Automated Manufacturing {factMod-powMod} - general2Cheap[0][8] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general2Cheap[0][9] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general2Cheap[0][10] RESEARCHSTAT "R-Defense-WallUpgrade01"//$37 - 135% - Improved Hardcrete - general2Cheap[0][11] RESEARCHSTAT "R-Vehicle-Body11" //$37 - Phyton , Cobra {facMod, powMod} - general2Cheap[0][12] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - general2Cheap[0][13] RESEARCHSTAT "R-Defense-WallTower02" //$46 - "Light Cannon HardPoint" {Light Cannon, HardCrete} - general2Cheap[0][14] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower - general2Cheap[0][15] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general2Cheap[0][16] RESEARCHSTAT "R-Defense-Pillbox06" //$46 - Lancer Tower {MRL, Lancer AT Rocket, Stabilized Mini-Rockets} - general2Cheap[0][17] RESEARCHSTAT "R-Vehicle-Prop-Tracks" //$75 - Tracked Propulsion - {Composite Alloys Mk2, FactMod, ResearchMod} - general2Cheap[0][18] RESEARCHSTAT "R-Defense-AASite-QuadMg1"//Hurricane AA site - general2Cheap[0][19] RESEARCHSTAT "R-Defense-MortarPit" //$37 - Mortar Pit {hardcrete,facMod} - general2Cheap[0][20] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - //used for checks - - numResGen2[0] INT 62 - //essentials - general2[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general2[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general2[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general2[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general2[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general2[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general2[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general2[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general2[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general2[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general2[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general2[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general2[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general2[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general2[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general2[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general2[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general2[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general2[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general2[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general2[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general2[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general2[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general2[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general2[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general2[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general2[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general2[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general2[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general2[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general2[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general2[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general2[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general2[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general2[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general2[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general2[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general2[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general2[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general2[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general2[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general2[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general2[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general2[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general2[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general2[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general2[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general2[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general2[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general2[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general2[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general2[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general2[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general2[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general2[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general2[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general2[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general2[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general2[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general2[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen2[1] INT 47 - - //Cyborg - general2[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general2[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general2[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general2[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general2[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general2[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general2[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general2[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general2[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general2[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general2[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general2[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general2[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general2[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general2[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general2[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general2[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general2[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general2[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general2[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general2[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general2[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general2[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general2[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general2[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general2[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general2[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general2[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general2[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general2[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general2[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general2[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general2[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general2[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general2[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general2[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general2[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general2[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general2[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general2[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general2[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general2[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general2[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general2[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general2[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general2[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general2[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen2[9] INT 26 - general2[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general2[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general2[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general2[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general2[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general2[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general2[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general2[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general2[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general2[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general2[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general2[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general2[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general2[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general2[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general2[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general2[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general2[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general2[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general2[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general2[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general2[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general2[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general2[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general2[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general2[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - // ================================================================================ - // personality GENERAL 3 (turtle) - // ================================================================================ - - - //cheap Researches - numCheapResGen3[0] INT 21 - general3Cheap[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3Cheap[0][1] RESEARCHSTAT "R-Struc-Research-Module" - general3Cheap[0][2] RESEARCHSTAT "R-Wpn-MG-Damage01" //125% - Hardened MG Bullets - general3Cheap[0][3] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //118% - Flamer Autoloader - general3Cheap[0][4] RESEARCHSTAT "R-Vehicle-Body05" //Cobra {facMod, powMod} - general3Cheap[0][5] RESEARCHSTAT "R-Vehicle-Engine01" //105% - Fuel Injection Engine - general3Cheap[0][6] RESEARCHSTAT "R-Vehicle-Metals01" //135% - Composite Alloys - general3Cheap[0][7] RESEARCHSTAT "R-Struc-RepairFacility" //repair facility {powMod - factModule-RepTurret} - - general3Cheap[0][8] RESEARCHSTAT "R-Defense-WallTower02" //Light Cannon HardPoint - general3Cheap[0][9] RESEARCHSTAT "R-Defense-WallTower01" //Heavy Machinegun Hardpoint - general3Cheap[0][10] RESEARCHSTAT "R-Defense-Tower06" //Mini-Rocket Tower {HardCrete,POD} - general3Cheap[0][11] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //{POD, HE Mini-Rockets Mk2} - general3Cheap[0][12] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer Tower - general3Cheap[0][13] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - general3Cheap[0][14] RESEARCHSTAT "R-Defense-WallTower03" //Medium cannon hardpoint - general3Cheap[0][15] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno Bunker - general3Cheap[0][16] RESEARCHSTAT "R-Defense-Wall-RotMg" //Assault Gun Hardpoint - - general3Cheap[0][17] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general3Cheap[0][18] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - general3Cheap[0][19] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - general3Cheap[0][20] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - - - numResGen3[0] INT 62 - general3[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general3[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general3[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general3[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general3[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general3[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general3[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general3[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - general3[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD - general3[0][9] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - general3[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL - general3[0][11] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general3[0][12] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general3[0][13] RESEARCHSTAT "R-Cyborg-Armor-Heat01" // (145)*/190/235/270**/315/360/405/450/495 - - - //Weapon Upgrades - general3[0][14] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - general3[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% - general3[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% - - //HardCretes & Armors - general3[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//140/(180)/220/260/300/340/380/420/460 - general3[0][18] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general3[0][19] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general3[0][20] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general3[0][21] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - general3[0][22] RESEARCHSTAT "R-Vehicle-Body11" - general3[0][23] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general3[0][24] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general3[0][25] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general3[0][26] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general3[0][27] RESEARCHSTAT "R-Cyborg-Metals05" //135/170/205/240*/(275)/310/345**/380/415 - general3[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general3[0][29] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][30] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general3[0][31] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general3[0][32] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general3[0][33] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - general3[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//140/180/(220)/260/300/340/380/420/460 - general3[0][35] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general3[0][36] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][37] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general3[0][38] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general3[0][39] RESEARCHSTAT "R-Vehicle-Body12" - general3[0][40] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general3[0][41] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general3[0][42] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general3[0][43] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general3[0][44] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general3[0][45] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general3[0][46] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general3[0][47] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - general3[0][48] RESEARCHSTAT "R-Cyborg-Armor-Heat03" //145*/190/(235)/270**/315/360/405/450/495 - - //Cyborg - general3[0][49] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general3[0][50] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general3[0][51] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - general3[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general3[0][53] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general3[0][54] RESEARCHSTAT "R-Defense-Super-Cannon"//R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general3[0][55] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general3[0][56] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general3[0][57] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general3[0][58] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general3[0][59] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general3[0][60] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general3[0][61] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen3[1] INT 47 - - //Cyborg - general3[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general3[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general3[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general3[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general3[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general3[1][5] RESEARCHSTAT "R-Defense-Super-Rocket"//"R-Wpn-RocketSlow-Accuracy03" // 110/120/(130) % - general3[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general3[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - general3[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general3[1][9] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general3[1][10] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general3[1][11] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - general3[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general3[1][13] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general3[1][14] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general3[1][15] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general3[1][16] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general3[1][17] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general3[1][18] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240* /275/310/(345**)/380/415 - general3[1][19] RESEARCHSTAT "R-Cyborg-Armor-Heat04" //145* /190/235/(270**)/315/360/405/450/495 - - //Retribution - Scourge ---------------------------------------------- - general3[1][20] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general3[1][21] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general3[1][22] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general3[1][23] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general3[1][24] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - general3[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general3[1][26] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general3[1][27] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - general3[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general3[1][29] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general3[1][30] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general3[1][31] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general3[1][32] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general3[1][33] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general3[1][34] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general3[1][35] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general3[1][36] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general3[1][37] RESEARCHSTAT "R-Cyborg-Metals08" //135/170/205/240* /275/310/345** /(380)/415 - general3[1][38] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145* /190/235/270** /315/(360)/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - general3[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general3[1][40] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general3[1][41] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general3[1][42] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general3[1][43] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - general3[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general3[1][45] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general3[1][46] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen3[9] INT 26 - general3[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general3[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general3[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general3[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general3[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general3[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general3[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general3[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general3[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general3[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general3[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general3[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general3[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general3[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general3[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general3[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general3[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general3[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general3[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general3[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general3[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general3[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general3[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general3[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general3[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general3[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - - - // ================================================================================ - // personality GENERAL 4 (cyborg) - // ================================================================================ - - - //cheap Researches - numCheapResGen4[0] INT 16 - - general4Cheap[0][0] RESEARCHSTAT "R-Wpn-MG-Damage01" //$18 - 125% - Hardened MG Bullets - general4Cheap[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF01" //$18 - 118% - Flamer Autoloader - general4Cheap[0][2] RESEARCHSTAT "R-Vehicle-Body05" //$37 - Cobra {facMod, powMod} - general4Cheap[0][3] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //$37 - 125% - HEAT Cannon Shells - general4Cheap[0][4] RESEARCHSTAT "R-Vehicle-Engine01" //$37 - 105% - Fuel Injection Engine - general4Cheap[0][5] RESEARCHSTAT "R-Vehicle-Metals01" //$56 - 135% - Composite Alloys - general4Cheap[0][6] RESEARCHSTAT "R-Struc-RepairFacility" //$75 - repair facility {powMod - factModule-RepTurret} - - general4Cheap[0][7] RESEARCHSTAT "R-Defense-WallTower02" //$46 - Light Cannon HardPoint - general4Cheap[0][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //$37 - 135% - Improved Hardcrete - //general4Cheap[0][9] RESEARCHSTAT "R-Defense-Tower06" //$75 - Mini-Rocket Tower {HardCrete,POD} - //general4Cheap[0][10] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //$75 - {POD, HE Mini-Rockets Mk2} - general4Cheap[0][9] RESEARCHSTAT "R-Defense-Pillbox06" //$46 Lancer Tower - //general4Cheap[0][12] RESEARCHSTAT "R-Defense-MRL" //$46 Mini Rocket Battery - general4Cheap[0][10] RESEARCHSTAT "R-Defense-WallTower03" //$ medium cannon hardpoint - general4Cheap[0][11] RESEARCHSTAT "R-Defense-WallTower01" //$37 - Heavy Machinegun Hardpoint - - general4Cheap[0][12] RESEARCHSTAT "R-Struc-Materials03" //*** $112 - 205% Reinforced Base Structure Materials Mk3 - general4Cheap[0][13] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" //$75 Automated Repair Facility - //general4Cheap[0][17] RESEARCHSTAT "R-Vehicle-Body11" //$75 Phyton - //general4Cheap[0][18] RESEARCHSTAT "R-Vehicle-Prop-Tracks" // - general4Cheap[0][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion - general4Cheap[0][15] RESEARCHSTAT "R-Sys-CBSensor-Tower01" //CB Tower - - - numResGen4[0] INT 53 - //standard - general4[0][0] RESEARCHSTAT "R-Sys-MobileRepairTurret01" //repair turret, pre-researched - general4[0][1] RESEARCHSTAT "R-Wpn-Flamer-ROF03" - general4[0][2] RESEARCHSTAT "R-Wpn-Flamer-Damage03" - general4[0][3] RESEARCHSTAT "R-Struc-Research-Upgrade03"// 130/160/190/(220*)/250/280/310**/340/370 - general4[0][4] RESEARCHSTAT "R-Struc-Power-Upgrade01b" // 150-01*/(175-01b)/200-01c/230-02**/260-03/290-03a - - //Cobra & Hover --------------------- - general4[0][5] RESEARCHSTAT "R-Vehicle-Body05" - general4[0][6] RESEARCHSTAT "R-Vehicle-Prop-Hover" //Hover - general4[0][7] RESEARCHSTAT "R-Defense-WallTower01" //HMG - //general4[0][8] RESEARCHSTAT "R-Defense-Tower06" //POD ** - general4[0][8] RESEARCHSTAT "R-Wpn-Flame2" //Inferno {damage04} - //general4[0][10] RESEARCHSTAT "R-Defense-MRL" //MRL ** - general4[0][9] RESEARCHSTAT "R-Defense-WallTower03" //MEDCann - - //Cyborg Upgrades - general4[0][10] RESEARCHSTAT "R-Cyborg-Metals04" // 135/170/205/(240*)/275/310/345**/380/415 - general4[0][11] RESEARCHSTAT "R-Cyborg-Armor-Heat03" // 145*/190/(235)/270**/315/360/405/450/495 - - - //Weapon Upgrades - general4[0][12] RESEARCHSTAT "R-Wpn-MG-Damage02" //125/(150)/175/200/225/250/275/300/325 % - //general4[0][15] RESEARCHSTAT "R-Wpn-Rocket-Damage02" //150% ** - //general4[0][16] RESEARCHSTAT "R-Wpn-Rocket-ROF02" //143% ** - - //HardCretes & Armors - //general4[0][17] RESEARCHSTAT "R-Vehicle-Armor-Heat02"//** 140/(180)/220/260/300/340/380/420/460 - general4[0][13] RESEARCHSTAT "R-Struc-Materials03" // 135/170/(205)/240/275/310/345* /370/405 - general4[0][14] RESEARCHSTAT "R-Defense-WallUpgrade03" // 135/170/(205)/240/275/305/340* /375/405/440/475/510 - //* Research-Upgarde-08; - - //Research and power upgrades - general4[0][15] RESEARCHSTAT "R-Struc-Research-Upgrade05"// 30/160/190/220*/(250)/280/310**/340/370 - general4[0][16] RESEARCHSTAT "R-Struc-Power-Upgrade01c" // 150-01*/175-01b/(200-01c)/230-02**/260-03/290-03a - - //Phyton - Heavy Cannon, Lancer, Assault Gun, Inferno -------------------- - //general4[0][22] RESEARCHSTAT "R-Vehicle-Body11" //** - general4[0][17] RESEARCHSTAT "R-Defense-WallTower04" //HeavyCann {damage04} - general4[0][18] RESEARCHSTAT "R-Defense-Pillbox06" //Lancer - general4[0][19] RESEARCHSTAT "R-Defense-RotMG" //AssGun - general4[0][20] RESEARCHSTAT "R-Defense-HvyFlamer" //Inferno - Bunker - - //Cyborg Upgrades - general4[0][21] RESEARCHSTAT "R-Cyborg-Metals06" //135/170/205/240*/275/(310)/345**/380/415 - //general4[0][28] RESEARCHSTAT "R-Cyborg-Armor-Heat02" //145*/(190)/235/270**/315/360/405/450/495 - - //Weapon Upgrades - general4[0][22] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][23] RESEARCHSTAT "R-Wpn-Flamer-ROF02" //118/(143)/182 % - general4[0][24] RESEARCHSTAT "R-Wpn-MG-ROF01" //(118)/143/182 % - general4[0][25] RESEARCHSTAT "R-Wpn-Flamer-Damage04" //125/150/175/(200)/225/250/275/300/325 % - general4[0][26] RESEARCHSTAT "R-Wpn-MG-Damage04" //125/150/175/(200)/225/250/275/300/325 % - - //HardCretes & Armors - //general4[0][34] RESEARCHSTAT "R-Vehicle-Armor-Heat03"//**140/180/(220)/260/300/340/380/420/460 - general4[0][27] RESEARCHSTAT "R-Struc-Materials04"//135/170/205/(240)/275/310/345*/370/405 - general4[0][28] RESEARCHSTAT "R-Defense-WallUpgrade04"//135/170/205/(240)/275/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][29] RESEARCHSTAT "R-Struc-Research-Upgrade07"// 30/160/190/220*/250/280/(310**)/340/370 - general4[0][30] RESEARCHSTAT "R-Struc-Power-Upgrade02" // 150-01*/175-01b/200-01c/(230-02**)/260-03/290-03a - - //Mantis-Scorpion - HVC, Assault Cannon------------------ - general4[0][31] RESEARCHSTAT "R-Vehicle-Body12" - general4[0][32] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" //HVC {damage05} - general4[0][33] RESEARCHSTAT "R-Defense-Wall-VulcanCan" //AssCann {damage01/ROF03} - - //Weapon Upgrades - general4[0][34] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" //(110)/120 % - general4[0][35] RESEARCHSTAT "R-Wpn-Cannon-ROF04" //111/125/143/(167)/200/250 % - general4[0][36] RESEARCHSTAT "R-Wpn-MG-ROF02" //118/(143)/182 % - general4[0][37] RESEARCHSTAT "R-Wpn-MG-Damage06" //125/150/175/200/225/(250)/275/300/325 % - general4[0][38] RESEARCHSTAT "R-Wpn-Flamer-Damage06" //125/150/175/200/225/(250)/275/300/325 % - - //Cyborg Upgrades - general4[0][39] RESEARCHSTAT "R-Cyborg-Metals07" //135/170/205/240*/275/310/(345**)/380/415 - general4[0][40] RESEARCHSTAT "R-Cyborg-Armor-Heat06" //145*/190/235/270**/315/(360)/405/450/495 - - //Cyborg - general4[0][41] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" //Super Heavy Gunner - general4[0][42] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" //Super Auto Cannon Cyborg - general4[0][43] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" //Super HPV Cyborg - - //HardCretes & Armors - //general4[0][52] RESEARCHSTAT "R-Vehicle-Armor-Heat05"//140/180/220/260/(300)/340/380/420/460 - general4[0][44] RESEARCHSTAT "R-Struc-Materials05"//135/170/205/240/(275)/310/345*/370/405 - general4[0][45] RESEARCHSTAT "R-Defense-Super-Cannon"//"R-Defense-WallUpgrade05"//135/170/205/240/(275)/305/340* /375/405/440/475/510 - - //Research and Power upgrades - general4[0][46] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220*/250/280/310**/(340)/370 - general4[0][47] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01*/175-01b/200-01c/230-02**/(260-03)/290-03a - - //Leopard - Panther - Needle, Pulse Laser, Tank Killer------------------------------------------- - general4[0][48] RESEARCHSTAT "R-Vehicle-Body06" //Panther - general4[0][49] RESEARCHSTAT "R-Defense-GuardTower-Rail1" //Neelde - general4[0][50] RESEARCHSTAT "R-Defense-WallTower-PulseLas" //Pulse Laser - general4[0][51] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - general4[0][52] RESEARCHSTAT "R-Defense-WallTower-HvyA-Trocket" //Tank Killer - - numResGen4[1] INT 41 - - //Cyborg - general4[1][0] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" // Super Tank-Killer Cyborg - general4[1][1] RESEARCHSTAT "R-Cyborg-Hvywpn-PulseLsr" //Super Pulse Laser Cyborg - general4[1][2] RESEARCHSTAT "R-Cyborg-Hvywpn-RailGunner" // Super Rail Gunner - - //Weapon Upgrades - general4[1][3] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" // 125/(150)/175/200/225/250 % - general4[1][4] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" // (118)/143/182 % - general4[1][5] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" // (110)/120/130 % - general4[1][6] RESEARCHSTAT "R-Wpn-Rail-ROF01" // (118)/143/182 % - general4[1][7] RESEARCHSTAT "R-Wpn-MG-Damage07" // 125/150/175/200/225/250/(275)/300/325 % - - //Tiger - Rail Gun---------------------------------------------------- - //general4[1][8] RESEARCHSTAT "R-Vehicle-Body09" //Tiger - general4[1][8] RESEARCHSTAT "R-Defense-WallTower-Rail2" //Rail Gun - - //Research and Power upgrades - general4[1][9] RESEARCHSTAT "R-Struc-Research-Upgrade08"// 30/160/190/220* /250/280/310** /340/(370) - general4[1][10] RESEARCHSTAT "R-Struc-Power-Upgrade03" // 150-01* /175-01b/200-01c/230-02** /260-03/(290-03a) - - //HardCretes & Armors - //general4[1][12] RESEARCHSTAT "R-Vehicle-Armor-Heat06"//140/180/220/260/300/(340)/380/420/460 - general4[1][11] RESEARCHSTAT "R-Struc-Materials06" // 135/170/205/240/275/(310)/345* /370/405 - general4[1][12] RESEARCHSTAT "R-Defense-WallUpgrade06" // 135/170/205/240/275/(305)/340* /375/405/440/475/510 - - //Weapon Upgrades - general4[1][13] RESEARCHSTAT "R-Wpn-Cannon-Damage01" //(125)/150/175 % - general4[1][14] RESEARCHSTAT "R-Wpn-Energy-Damage01" //(125)/150/175 % - general4[1][15] RESEARCHSTAT "R-Wpn-Energy-ROF01" //(118)/143/182 % - - - //Cyborg Upgrades - general4[1][16] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345**/380/(415) - general4[1][17] RESEARCHSTAT "R-Cyborg-Armor-Heat07" //145* /190/235/270**/315/360/(405)/450/495 - - //Retribution - Scourge ---------------------------------------------- - general4[1][18] RESEARCHSTAT "R-Vehicle-Body07" //Retribution - general4[1][19] RESEARCHSTAT "R-Defense-WallTower-A-Tmiss" //Scourge - - //Weapon Upgrades - general4[1][20] RESEARCHSTAT "R-Wpn-Missile-Damage01" //(125)/150/175 % - general4[1][21] RESEARCHSTAT "R-Wpn-Missile-ROF01" //(118)/143/182 % - general4[1][22] RESEARCHSTAT "R-Wpn-Missile-Accuracy01" //(110)/120/182 % - - //Vengeance - Heavy Laser, Gauss Cannon ---------------------------------------------- - //general4[1][25] RESEARCHSTAT "R-Vehicle-Body10" //Vengeance - general4[1][23] RESEARCHSTAT "R-Defense-HeavyLas" //Heavy Laser - general4[1][24] RESEARCHSTAT "R-Defense-WallTower-Rail3" //Gauss Cannon - - //HardCretes & Armors - //general4[1][28] RESEARCHSTAT "R-Vehicle-Armor-Heat07"//140/180/220/260/300/340/(380)/420/460 - general4[1][25] RESEARCHSTAT "R-Struc-Materials07"//135/170/205/240/275/310/(345*)/370/405 - general4[1][26] RESEARCHSTAT "R-Defense-WallUpgrade07"//135/170/205/240/275/305/(340*)/375/405/440/475/510 - - //Weapon Upgrades - general4[1][27] RESEARCHSTAT "R-Wpn-Energy-Damage03" //125/150/(175) % - general4[1][28] RESEARCHSTAT "R-Wpn-Energy-ROF03" //118/143/(182) % - general4[1][29] RESEARCHSTAT "R-Wpn-Energy-Accuracy01" //110/110 % - general4[1][30] RESEARCHSTAT "R-Wpn-Rail-ROF03" // 118/143/(182) % - general4[1][31] RESEARCHSTAT "R-Wpn-Rail-Accuracy01" // 110/110 % - - //Cyborg - general4[1][32] RESEARCHSTAT "R-Cyborg-Hvywpn-A-T" //Super Scourge Cyborg - - //Cyborg Upgrades - general4[1][33] RESEARCHSTAT "R-Cyborg-Metals09" //135/170/205/240* /275/310/345** /380/415 - general4[1][34] RESEARCHSTAT "R-Cyborg-Armor-Heat09" //145* /190/235/270** /315/360/405/450/495 - - //Wyvern - Plasma Cannon ------------------------------------------------- - //general4[1][39] RESEARCHSTAT "R-Vehicle-Body13" //Wyvern - general4[1][35] RESEARCHSTAT "R-Defense-PlasmaCannon" //Plasma Caanon - - //Laser Satellite - general4[1][36] RESEARCHSTAT "R-Wpn-LasSat" //LaserSat - - //Fortresses - general4[1][37] RESEARCHSTAT "R-Defense-Super-Missile" //Missile Fortress - general4[1][38] RESEARCHSTAT "R-Defense-MassDriver" //Mass Driver Fortress - - - //HardCretes & Armors - //general4[1][44] RESEARCHSTAT "R-Vehicle-Armor-Heat09"//140/180/220/260/300/340/380/420/(460) - general4[1][39] RESEARCHSTAT "R-Struc-Materials09"//135/170/205/240/275/310/345* /370/405 - general4[1][40] RESEARCHSTAT "R-Defense-WallUpgrade12"//135/170/205/240/275/305/340* /375/405/440/475/510 - - /****************************/ - /* VTOL Stuff */ - /****************************/ - - numResGen4[9] INT 26 - general4[9][0] RESEARCHSTAT "R-Vehicle-Prop-Hover" - general4[9][1] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" - general4[9][2] RESEARCHSTAT "R-Defense-AASite-QuadBof" //Cyclone AA Site - general4[9][3] RESEARCHSTAT "R-Wpn-AAGun-ROF03" //AA ROF - general4[9][4] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" //AA Accuracy - - //Scorpion - Bug - general4[9][5] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion Body + Bug - - //Lancer - HPV - general4[9][6] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lamcer - general4[9][7] RESEARCHSTAT "R-Wpn-Cannon4AMk1" //HPV - - //Rearming upgrade - VTOL Strike Turret - general4[9][8] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" //VTOL Strike Turret,VTOL Strike Tower detects approaching enemies - general4[9][9] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" - - //Mantis - Phosphor Bomb Bay - Heap Bomb Bay - general4[9][10] RESEARCHSTAT "R-Vehicle-Body12" - general4[9][11] RESEARCHSTAT "R-Wpn-Bomb03" //Phosphor BB - general4[9][12] RESEARCHSTAT "R-Wpn-Bomb02" //Heap BB - - //Rearming upgrade - AA def - general4[9][13] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" //Whirlwind AA Site - general4[9][14] RESEARCHSTAT "R-Wpn-AAGun-ROF04" //AA ROF - general4[9][15] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" //AA Accuracy - general4[9][16] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade04" - - //Retaliation - Scourge Missle - general4[9][17] RESEARCHSTAT "R-Vehicle-Body03" // - general4[9][18] RESEARCHSTAT "R-Wpn-Missile2A-T" //AT - - //Retribution - Thermite BB - general4[9][19] RESEARCHSTAT "R-Vehicle-Body07" // - general4[9][20] RESEARCHSTAT "R-Wpn-Bomb04" // - - //Rearming upgrade - AA def - general4[9][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - general4[9][22] RESEARCHSTAT "R-Defense-SamSite1" //Avenger SAM Site - general4[9][23] RESEARCHSTAT "R-Wpn-Missile-Damage03" //Avenger Damage - general4[9][24] RESEARCHSTAT "R-Wpn-Missile-ROF03" //Avenger ROF - general4[9][25] RESEARCHSTAT "R-Wpn-Missile-Accuracy02" //Avenger ROF - -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/rules.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/rules.slo deleted file mode 100644 index 7e6775af3..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/rules.slo +++ /dev/null @@ -1,273 +0,0 @@ -// -// Skirmish Base Script. -// -// contains the rules for starting and ending a game. -// as well as warning messages. -// alex lee. pumpkin studios 99. -// - -public STRUCTURESTAT command; -public STRUCTURESTAT factory; -public STRUCTURESTAT wall; -public STRUCTURESTAT cornerWall; -public STRUCTURESTAT oilDerrick; -public STRUCTURESTAT powerGen; -public STRUCTURESTAT research; -public STRUCTURESTAT commandrelay; -public STRUCTURESTAT cybfac; -public STRUCTURESTAT vtolfac; - -//////// -// starting technologies. -public int numCleanTech, numBaseTech, numDefTech, numBaseComp; -public RESEARCHSTAT defTech[50]; - -// research topics -public int numBaseRes; -public RESEARCHSTAT baseRes[10]; - -// Other Stuff -private int count; -private int playnum; -private bool gamewon,gameLost; - -// Base Under Attack -private STRUCTURE hitStruc; -private BASEOBJ attackerObj; -private int t; -public SOUND attackSnd1; - -public INTMESSAGE endMsg, winMsg; - -public CONSTRUCT CyborgSpade; -public REPAIR CyborgRepair; - -// ///////////////////////////////////////////////////////////////// - -trigger endConditions(every, 100); - -// ///////////////////////////////////////////////////////////////// -//this event is called once the game has initialised itself - - -event initialisedEvent(CALL_GAMEINIT) -{ - //set up the reticule buttons - addReticuleButton(OPTIONS); - addReticuleButton(CANCEL); - addReticuleButton(BUILD); - addReticuleButton(MANUFACTURE); - addReticuleButton(RESEARCH); - addReticuleButton(INTELMAP); - addReticuleButton(DESIGN); - - playnum = 0; - while (playnum < 8) - { - enableStructure(command ,playnum); //make structures available to build - enableStructure(factory ,playnum); -// enableStructure(wall ,playnum); -// enableStructure(cornerWall ,playnum); - enableStructure(oilDerrick ,playnum); - enableStructure(powerGen ,playnum); - enableStructure(research ,playnum); - - setStructureLimits(factory, 5, playnum); // set structure limits - setStructureLimits(powerGen,8, playnum); - setStructureLimits(research,5, playnum); - setStructureLimits(command, 1, playnum); - setStructureLimits(commandrelay,1, playnum); - setStructureLimits(cybfac, 5, playnum); - setStructureLimits(vtolfac, 5, playnum); - playnum = playnum+ 1; - } - - applyLimitSet(); // set limit options -} - -event initialisedEventTwo(CALL_GAMEINIT) -{ - - playnum = 0; - while (playnum < 8) - { - count = 0; - while (count < numBaseRes) - { - enableResearch(baseRes[count], playnum); - count = count +1; - } - - // enable cyborgs components that can't be enabled with research - // making cyborg templates stay unavailable for AI - makeComponentAvailable(CyborgSpade, playnum); - makeComponentAvailable(CyborgRepair, playnum); - - if(multiPlayerBaseType == CAMP_CLEAN) - { - setPowerLevel(1300,playnum); - count = 0; - while (count < numCleanTech) - { - - completeResearch(defTech[count], playnum); - count = count +1; - } - } - else if(multiPlayerBaseType == CAMP_BASE) - { - setPowerLevel(2500,playnum); - count = 0; - while (count < numBaseTech) - { - completeResearch(defTech[count], playnum); - count = count +1; - } - - } - else - { - - setPowerLevel(2500,playnum); - count = 0; - while (count < numDefTech) - { - completeResearch(defTech[count], playnum); - count = count +1; - } - } - - playnum = playnum+ 1; - } -} - - - -// ///////////////////////////////////////////////////////////////// -// END CONDITIONS -event checkEndConditions (endConditions) -{ - // Losing Conditions - if( ( not anyDroidsLeft(selectedPlayer)) - and ( not anyFactoriesLeft(selectedPlayer)) - ) - { - gameLost = TRUE; - - /* If teams enabled check if all team members have lost */ - if(multiPlayerGameType == SKIRMISH and multiPlayerAlliancesType == ALLIANCES_TEAMS) - { - playnum = 0; - while (playnum < multiPlayerMaxPlayers) - { - if((playnum != selectedPlayer) - and allianceExistsBetween(selectedPlayer , playnum)) - { - if(anyDroidsLeft(playnum) or anyFactoriesLeft(playnum)) - { - gameLost = FALSE; //someone from our team still alive - playnum = multiPlayerMaxPlayers; //jump out - } - } - playnum = playnum + 1; - } - - } - - if(gameLost) - { - gameOverMessage(endMsg, MISS_MSG, 0, FALSE); - setEventTrigger(checkEndConditions, inactive); - } - } - - // Winning Conditions - gamewon = TRUE; - - /* Skirmish */ - if(multiPlayerGameType == SKIRMISH) - { - // check if all enemies defeated - playnum = 0; - while (playnum < multiPlayerMaxPlayers) - { - if((playnum != selectedPlayer) - and (not allianceExistsBetween(selectedPlayer , playnum)) //checking enemy player - ) - { - if(anyDroidsLeft(playnum) or anyFactoriesLeft(playnum)) - { - gamewon = FALSE; //one of the enemies still alive - playnum = multiPlayerMaxPlayers; //jump out - } - } - playnum = playnum + 1; - } - } - else /* All other game types */ - { - // Check if all AIs were defeated - count = 0; - while (count < multiPlayerMaxPlayers) - { - if ( (count != selectedPlayer) and not(isHumanPlayer(count)) ) - { - if( anyDroidsLeft(count) or anyFactoriesLeft(count) ) - { - gamewon = FALSE; //some of the AIs still alive - } - } - count = count + 1; - } - - if(gamewon == TRUE) - { - gamewon = FALSE; - if(dominatingAlliance()) //if all humans are allied - { - gamewon = TRUE; - } - } - } - - if(gamewon == TRUE) - { - gameOverMessage(winMsg, MISS_MSG, 0, TRUE); - setEventTrigger(checkEndConditions, inactive); - } -} - -// ///////////////////////////////////////////////////////////////// -// WARNING MESSAGES -// Base Under Attack -event baseHit(CALL_STRUCT_ATTACKED, selectedPlayer, ref hitStruc, ref attackerObj) -{ - if (t >= 10) - { - t=0; - if (hitStruc != NULLOBJECT) - { - playSoundPos(attackSnd1, selectedPlayer, hitStruc.x, hitStruc.y, hitStruc.z); //show position if still alive - } - else - { - playSound(attackSnd1, selectedPlayer); - } - } -} - -event everySec(every, 10) -{ - t=t+1; -} - -//go to where the structure being attacked is on CTRL B -event seeBaseHit(CALL_MISSION_END) -{ - if (hitStruc!=NULLOBJECT) - { - centreView(hitStruc); - t=0; //flag known about! - } -} - diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/rules.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/rules.vlo deleted file mode 100644 index 2ad6cc227..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/rules.vlo +++ /dev/null @@ -1,95 +0,0 @@ -// -// variable value file for skirmish games. -// contains the basic requirements for sk game. -// alex lee. pumpkin 99. -// -script "rules.slo" -run -{ - -endMsg INTMESSAGE "END" -winMsg INTMESSAGE "WIN" - -//structures -command STRUCTURESTAT "A0CommandCentre" -factory STRUCTURESTAT "A0LightFactory" -wall STRUCTURESTAT "A0HardcreteMk1Wall" -cornerWall STRUCTURESTAT "A0HardcreteMk1CWall" -oilDerrick STRUCTURESTAT "A0ResourceExtractor" -powerGen STRUCTURESTAT "A0PowerGenerator" -research STRUCTURESTAT "A0ResearchFacility" -commandrelay STRUCTURESTAT "A0ComDroidControl" -cybfac STRUCTURESTAT "A0CyborgFactory" -vtolfac STRUCTURESTAT "A0VTolFactory1" - -// Technologies -numCleanTech int 5 // do x for clean -numBaseTech int 20 // do x for base -numDefTech int 42 // do x for defensive - -defTech[0] RESEARCHSTAT "R-Vehicle-Prop-Wheels" -defTech[1] RESEARCHSTAT "R-Sys-Spade1Mk1" -defTech[2] RESEARCHSTAT "R-Vehicle-Body01" -defTech[3] RESEARCHSTAT "R-Comp-SynapticLink" -defTech[4] RESEARCHSTAT "R-Cyborg-Legs01" - -defTech[5] RESEARCHSTAT "R-Wpn-MG1Mk1" -defTech[6] RESEARCHSTAT "R-Defense-HardcreteWall" -defTech[7] RESEARCHSTAT "R-Vehicle-Prop-Wheels" -defTech[8] RESEARCHSTAT "R-Sys-Spade1Mk1" -defTech[9] RESEARCHSTAT "R-Struc-Factory-Cyborg" -defTech[10] RESEARCHSTAT "R-Cyborg-Wpn-MG" -defTech[11] RESEARCHSTAT "R-Defense-Pillbox01" -defTech[12] RESEARCHSTAT "R-Defense-Tower01" -defTech[13] RESEARCHSTAT "R-Vehicle-Body01" -defTech[14] RESEARCHSTAT "R-Sys-Engineering01" -defTech[15] RESEARCHSTAT "R-Struc-CommandRelay" -defTech[16] RESEARCHSTAT "R-Vehicle-Prop-Halftracks" -defTech[17] RESEARCHSTAT "R-Comp-CommandTurret01" -defTech[18] RESEARCHSTAT "R-Sys-Sensor-Turret01" -defTech[19] RESEARCHSTAT "R-Wpn-Flamer01Mk1" - -defTech[20] RESEARCHSTAT "R-Vehicle-Body05" -defTech[21] RESEARCHSTAT "R-Struc-Research-Module" -defTech[22] RESEARCHSTAT "R-Struc-PowerModuleMk1" -defTech[23] RESEARCHSTAT "R-Struc-Factory-Module" -defTech[24] RESEARCHSTAT "R-Struc-RepairFacility" -defTech[25] RESEARCHSTAT "R-Sys-MobileRepairTurret01" -defTech[26] RESEARCHSTAT "R-Vehicle-Engine01" -defTech[27] RESEARCHSTAT "R-Cyborg-Wpn-Cannon" -defTech[28] RESEARCHSTAT "R-Cyborg-Wpn-Flamer" -defTech[29] RESEARCHSTAT "R-Wpn-MG3Mk1" -defTech[30] RESEARCHSTAT "R-Wpn-Cannon1Mk1" -defTech[31] RESEARCHSTAT "R-Wpn-Mortar01Lt" -defTech[32] RESEARCHSTAT "R-Defense-Pillbox05" -defTech[33] RESEARCHSTAT "R-Defense-TankTrap01" -defTech[34] RESEARCHSTAT "R-Defense-WallTower02" -defTech[35] RESEARCHSTAT "R-Sys-Sensor-Tower01" -defTech[36] RESEARCHSTAT "R-Defense-Pillbox04" -defTech[37] RESEARCHSTAT "R-Wpn-MG2Mk1" -defTech[38] RESEARCHSTAT "R-Wpn-Rocket05-MiniPod" -defTech[39] RESEARCHSTAT "R-Wpn-MG-Damage01" -defTech[40] RESEARCHSTAT "R-Wpn-Rocket-Damage01" -defTech[41] RESEARCHSTAT "R-Defense-WallTower01" - - -///////////////////////////////////////////////////////////////////////// -// Available Research Topics. - -numBaseRes int 3 // do x for base - -baseRes[0] RESEARCHSTAT "R-Sys-Sensor-Turret01" -baseRes[1] RESEARCHSTAT "R-Wpn-MG1Mk1" -baseRes[2] RESEARCHSTAT "R-Sys-Engineering01" - - -CyborgSpade CONSTRUCT "CyborgSpade" //cyborg construction component -CyborgRepair REPAIR "CyborgRepair" //cyborg repair component - - -///////////////////////////////////////////////////////////////////////// -// Other Guff. - -/* Base Under Attack */ -attackSnd1 SOUND "pcv337.ogg" -} diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/sk2tech.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/sk2tech.vlo deleted file mode 100644 index a51b641dc..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/sk2tech.vlo +++ /dev/null @@ -1,132 +0,0 @@ -script "skTech.slo" -run -{ - -//ALWAYS MAKE THIS THE SAME AS THE INDEX OF THE LAST ENTRY IN THE camTech[] array -numCamTech int 115 - -initialPowerCl int 1000 -initialPowerBa int 2000 -initialPowerDe int 3000 - -camTech [0] RESEARCHSTAT "R-Comp-CommandTurret01" -camTech [1] RESEARCHSTAT "R-Comp-SynapticLink" -camTech [2] RESEARCHSTAT "R-Cyborg-Legs01" -camTech [3] RESEARCHSTAT "R-Cyborg-Metals01" -camTech [4] RESEARCHSTAT "R-Cyborg-Metals02" -camTech [5] RESEARCHSTAT "R-Cyborg-Metals03" -camTech [6] RESEARCHSTAT "R-Cyborg-Wpn-Cannon" -camTech [7] RESEARCHSTAT "R-Cyborg-Wpn-Flamer" -camTech [8] RESEARCHSTAT "R-Cyborg-Wpn-MG" -camTech [9] RESEARCHSTAT "R-Cyborg-Wpn-Rocket" -camTech [10] RESEARCHSTAT "R-Defense-HardcreteWall" -camTech [11] RESEARCHSTAT "R-Defense-MortarPit" -camTech [12] RESEARCHSTAT "R-Defense-MRL" -camTech [13] RESEARCHSTAT "R-Defense-Pillbox01" -camTech [14] RESEARCHSTAT "R-Defense-Pillbox04" -camTech [15] RESEARCHSTAT "R-Defense-Pillbox05" -camTech [16] RESEARCHSTAT "R-Defense-Pillbox06" -camTech [17] RESEARCHSTAT "R-Defense-TankTrap01" -camTech [18] RESEARCHSTAT "R-Defense-Tower01" -camTech [19] RESEARCHSTAT "R-Defense-Tower06" -camTech [20] RESEARCHSTAT "R-Defense-WallTower01" -camTech [21] RESEARCHSTAT "R-Defense-WallTower02" -camTech [22] RESEARCHSTAT "R-Defense-WallTower03" -camTech [23] RESEARCHSTAT "R-Defense-WallTower04" -camTech [24] RESEARCHSTAT "R-Defense-WallTower06" -camTech [25] RESEARCHSTAT "R-Defense-WallUpgrade01" -camTech [26] RESEARCHSTAT "R-Defense-WallUpgrade02" -camTech [27] RESEARCHSTAT "R-Defense-WallUpgrade03" -camTech [28] RESEARCHSTAT "R-Struc-CommandRelay" -camTech [29] RESEARCHSTAT "R-Struc-Factory-Cyborg" -camTech [30] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade01" -camTech [31] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade02" -camTech [32] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade03" -camTech [33] RESEARCHSTAT "R-Struc-Factory-Module" -camTech [34] RESEARCHSTAT "R-Struc-Factory-Upgrade01" -camTech [35] RESEARCHSTAT "R-Struc-Factory-Upgrade02" -camTech [36] RESEARCHSTAT "R-Struc-Factory-Upgrade03" -camTech [37] RESEARCHSTAT "R-Struc-Materials01" -camTech [38] RESEARCHSTAT "R-Struc-Materials02" -camTech [39] RESEARCHSTAT "R-Struc-Materials03" -camTech [40] RESEARCHSTAT "R-Struc-PowerModuleMk1" -camTech [41] RESEARCHSTAT "R-Struc-RepairFacility" -camTech [42] RESEARCHSTAT "R-Struc-Research-Module" -camTech [43] RESEARCHSTAT "R-Struc-Research-Upgrade01" -camTech [44] RESEARCHSTAT "R-Struc-Research-Upgrade02" -camTech [45] RESEARCHSTAT "R-Struc-Research-Upgrade03" -camTech [46] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" -camTech [47] RESEARCHSTAT "R-Struc-RprFac-Upgrade02" -camTech [48] RESEARCHSTAT "R-Struc-RprFac-Upgrade03" -camTech [49] RESEARCHSTAT "R-Sys-CBSensor-Tower01" -camTech [50] RESEARCHSTAT "R-Sys-Engineering01" -camTech [51] RESEARCHSTAT "R-Sys-MobileRepairTurret01" -camTech [52] RESEARCHSTAT "R-Sys-Sensor-Tower01" -camTech [53] RESEARCHSTAT "R-Sys-Sensor-Turret01" -camTech [54] RESEARCHSTAT "R-Sys-Sensor-Upgrade01" -camTech [55] RESEARCHSTAT "R-Sys-Spade1Mk1" -camTech [56] RESEARCHSTAT "R-Vehicle-Body01" -camTech [57] RESEARCHSTAT "R-Vehicle-Body05" -camTech [58] RESEARCHSTAT "R-Vehicle-Body11" -camTech [59] RESEARCHSTAT "R-Vehicle-Engine01" -camTech [60] RESEARCHSTAT "R-Vehicle-Engine02" -camTech [61] RESEARCHSTAT "R-Vehicle-Engine03" -camTech [62] RESEARCHSTAT "R-Vehicle-Metals01" -camTech [63] RESEARCHSTAT "R-Vehicle-Metals02" -camTech [64] RESEARCHSTAT "R-Vehicle-Metals03" -camTech [65] RESEARCHSTAT "R-Vehicle-Prop-Halftracks" -camTech [66] RESEARCHSTAT "R-Vehicle-Prop-Hover" -camTech [67] RESEARCHSTAT "R-Vehicle-Prop-Tracks" -camTech [68] RESEARCHSTAT "R-Vehicle-Prop-Wheels" -camTech [69] RESEARCHSTAT "R-Wpn-Cannon-Damage01" -camTech [70] RESEARCHSTAT "R-Wpn-Cannon-Damage02" -camTech [71] RESEARCHSTAT "R-Wpn-Cannon-Damage03" -camTech [72] RESEARCHSTAT "R-Wpn-Cannon1Mk1" -camTech [73] RESEARCHSTAT "R-Wpn-Cannon2Mk1" -camTech [74] RESEARCHSTAT "R-Wpn-Cannon3Mk1" -camTech [75] RESEARCHSTAT "R-Wpn-Flamer-Damage01" -camTech [76] RESEARCHSTAT "R-Wpn-Flamer-Damage02" -camTech [77] RESEARCHSTAT "R-Wpn-Flamer-Damage03" -camTech [78] RESEARCHSTAT "R-Wpn-Flamer-ROF01" -camTech [79] RESEARCHSTAT "R-Wpn-Flamer01Mk1" -camTech [80] RESEARCHSTAT "R-Wpn-MG-Damage01" -camTech [81] RESEARCHSTAT "R-Wpn-MG-Damage02" -camTech [82] RESEARCHSTAT "R-Wpn-MG-Damage03" -//camTech [83] RESEARCHSTAT "R-Wpn-MG-Damage04" -camTech [83] RESEARCHSTAT "R-Defense-HvyMor" -camTech [84] RESEARCHSTAT "R-Wpn-MG-ROF01" -camTech [85] RESEARCHSTAT "R-Wpn-MG1Mk1" -camTech [86] RESEARCHSTAT "R-Wpn-MG2Mk1" -camTech [87] RESEARCHSTAT "R-Wpn-MG3Mk1" -camTech [88] RESEARCHSTAT "R-Wpn-Mortar-Damage01" -camTech [89] RESEARCHSTAT "R-Wpn-Mortar-Damage02" -camTech [90] RESEARCHSTAT "R-Wpn-Mortar-Damage03" -camTech [91] RESEARCHSTAT "R-Wpn-Mortar01Lt" -camTech [92] RESEARCHSTAT "R-Wpn-Rocket-Damage01" -camTech [93] RESEARCHSTAT "R-Wpn-Rocket-Damage02" -camTech [94] RESEARCHSTAT "R-Wpn-Rocket-Damage03" -camTech [95] RESEARCHSTAT "R-Wpn-Rocket-ROF01" -camTech [96] RESEARCHSTAT "R-Wpn-Rocket-ROF02" -camTech [97] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" -camTech [98] RESEARCHSTAT "R-Wpn-Rocket02-MRL" -camTech [99] RESEARCHSTAT "R-Wpn-Rocket05-MiniPod" -camTech [100] RESEARCHSTAT "R-Wpn-RocketSlow-Damage01" -camTech [101] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" -camTech [102] RESEARCHSTAT "R-Wpn-RocketSlow-Damage03" - -//additional completed research -camTech [103] RESEARCHSTAT "R-Vehicle-Body04" -camTech [104] RESEARCHSTAT "R-Vehicle-Body08" -camTech [105] RESEARCHSTAT "R-Wpn-Mortar02Hvy" -//camTech [106] RESEARCHSTAT "R-Wpn-Rocket06-IDF" -camTech [106] RESEARCHSTAT "R-Wpn-AAGun03" -camTech [107] RESEARCHSTAT "R-Sys-Sensor-Tower02" -camTech [108] RESEARCHSTAT "R-Vehicle-Prop-VTOL" -camTech [109] RESEARCHSTAT "R-Struc-VTOLFactory" -camTech [110] RESEARCHSTAT "R-Struc-VTOLPad" -camTech [111] RESEARCHSTAT "R-Wpn-Bomb01" -camTech [112] RESEARCHSTAT "R-Defense-AASite-QuadMg1" -camTech [113] RESEARCHSTAT "R-Cyborg-Sys-ComEng" -camTech [114] RESEARCHSTAT "R-Cyborg-Sys-Mechanic" -camTech [115] RESEARCHSTAT "R-Comp-CommandTurret02" -} \ No newline at end of file diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/sk3tech.vlo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/sk3tech.vlo deleted file mode 100644 index ee610ccf7..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/sk3tech.vlo +++ /dev/null @@ -1,292 +0,0 @@ -script "skTech.slo" -run -{ -//ALWAYS MAKE THIS THE SAME AS THE INDEX OF THE LAST ENTRY IN THE camTech[] array -numCamTech int 253 -//ALWAYS MAKE THIS THE ONE MORE THAN THE INDEX OF THE LAST ENTRY IN THE camTech[] array -numCamTechB int 17 - -initialPowerCl int 2000 -initialPowerBa int 3000 -initialPowerDe int 4000 - -// tech level three -camTech [0] RESEARCHSTAT "R-Wpn-RocketSlow-ROF03" - -// tech level all -camTech [1] RESEARCHSTAT "R-Defense-HardcreteWall" -camTech [2] RESEARCHSTAT "R-Sys-MobileRepairTurret01" -camTech [3] RESEARCHSTAT "R-Sys-Sensor-Tower01" -camTech [4] RESEARCHSTAT "R-Sys-Sensor-Turret01" -camTech [5] RESEARCHSTAT "R-Sys-Sensor-Upgrade01" -camTech [6] RESEARCHSTAT "R-Sys-Sensor-Upgrade02" -camTech [7] RESEARCHSTAT "R-Vehicle-Body09" -camTech [8] RESEARCHSTAT "R-Vehicle-Prop-VTOL" -camTech [9] RESEARCHSTAT "R-Wpn-Cannon-Accuracy02" -camTech [10] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" -camTech [11] RESEARCHSTAT "R-Wpn-Rocket03-HvAT" -camTech [12] RESEARCHSTAT "R-Wpn-Rocket-Accuracy02" -camTech [13] RESEARCHSTAT "R-Wpn-Rocket-ROF03" -camTech [14] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy03" -//tech level one -camTech [15] RESEARCHSTAT "R-Comp-CommandTurret01" -camTech [16] RESEARCHSTAT "R-Comp-SynapticLink" -camTech [17] RESEARCHSTAT "R-Cyborg-Metals01" -camTech [18] RESEARCHSTAT "R-Cyborg-Metals02" -camTech [19] RESEARCHSTAT "R-Cyborg-Wpn-Cannon" -camTech [20] RESEARCHSTAT "R-Cyborg-Wpn-Flamer" -camTech [21] RESEARCHSTAT "R-Cyborg-Wpn-MG" -camTech [22] RESEARCHSTAT "R-Cyborg-Wpn-Rocket" -camTech [23] RESEARCHSTAT "R-Defense-Pillbox01" -camTech [24] RESEARCHSTAT "R-Defense-Pillbox04" -camTech [25] RESEARCHSTAT "R-Defense-Pillbox05" -camTech [26] RESEARCHSTAT "R-Defense-Pillbox06" -camTech [27] RESEARCHSTAT "R-Defense-TankTrap01" -camTech [28] RESEARCHSTAT "R-Defense-Tower01" -camTech [29] RESEARCHSTAT "R-Defense-Tower06" -camTech [30] RESEARCHSTAT "R-Defense-WallTower02" -camTech [31] RESEARCHSTAT "R-Defense-WallTower03" -camTech [32] RESEARCHSTAT "R-Defense-WallTower04" -camTech [33] RESEARCHSTAT "R-Defense-WallUpgrade01" -camTech [34] RESEARCHSTAT "R-Struc-CommandRelay" -camTech [35] RESEARCHSTAT "R-Struc-Factory-Cyborg" -camTech [36] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade01" -camTech [37] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade02" -camTech [38] RESEARCHSTAT "R-Struc-Factory-Module" -camTech [39] RESEARCHSTAT "R-Struc-Factory-Upgrade01" -camTech [40] RESEARCHSTAT "R-Struc-Factory-Upgrade02" -camTech [41] RESEARCHSTAT "R-Struc-Materials01" -camTech [42] RESEARCHSTAT "R-Struc-Materials02" -camTech [43] RESEARCHSTAT "R-Struc-PowerModuleMk1" -camTech [44] RESEARCHSTAT "R-Struc-RepairFacility" -camTech [45] RESEARCHSTAT "R-Struc-Research-Module" -camTech [46] RESEARCHSTAT "R-Struc-Research-Upgrade01" -camTech [47] RESEARCHSTAT "R-Struc-Research-Upgrade02" -camTech [48] RESEARCHSTAT "R-Struc-RprFac-Upgrade01" -camTech [49] RESEARCHSTAT "R-Struc-RprFac-Upgrade02" -camTech [50] RESEARCHSTAT "R-Sys-Spade1Mk1" -camTech [51] RESEARCHSTAT "R-Vehicle-Body01" -camTech [52] RESEARCHSTAT "R-Vehicle-Body04" -camTech [53] RESEARCHSTAT "R-Vehicle-Body05" -camTech [54] RESEARCHSTAT "R-Vehicle-Body08" -camTech [55] RESEARCHSTAT "R-Vehicle-Body11" -camTech [56] RESEARCHSTAT "R-Vehicle-Body12" -camTech [57] RESEARCHSTAT "R-Vehicle-Engine01" -camTech [58] RESEARCHSTAT "R-Vehicle-Engine02" -camTech [59] RESEARCHSTAT "R-Vehicle-Metals01" -camTech [60] RESEARCHSTAT "R-Vehicle-Metals02" -camTech [61] RESEARCHSTAT "R-Vehicle-Prop-Halftracks" -camTech [62] RESEARCHSTAT "R-Vehicle-Prop-Hover" -camTech [63] RESEARCHSTAT "R-Vehicle-Prop-Tracks" -camTech [64] RESEARCHSTAT "R-Vehicle-Prop-Wheels" -camTech [65] RESEARCHSTAT "R-Wpn-Cannon1Mk1" -camTech [66] RESEARCHSTAT "R-Wpn-Cannon2Mk1" -camTech [67] RESEARCHSTAT "R-Wpn-Cannon3Mk1" -camTech [68] RESEARCHSTAT "R-Wpn-Cannon-Damage01" -camTech [69] RESEARCHSTAT "R-Wpn-Cannon-Damage02" -camTech [70] RESEARCHSTAT "R-Wpn-Flamer01Mk1" -camTech [71] RESEARCHSTAT "R-Wpn-Flamer-Damage01" -camTech [72] RESEARCHSTAT "R-Wpn-MG1Mk1" -camTech [73] RESEARCHSTAT "R-Wpn-MG-Damage01" -camTech [74] RESEARCHSTAT "R-Wpn-MG-Damage02" -camTech [75] RESEARCHSTAT "R-Wpn-MG-Damage03" -camTech [76] RESEARCHSTAT "R-Wpn-Mortar01Lt" -camTech [77] RESEARCHSTAT "R-Wpn-Mortar-Damage01" -camTech [78] RESEARCHSTAT "R-Wpn-Mortar-Damage02" -camTech [79] RESEARCHSTAT "R-Wpn-Rocket05-MiniPod" -camTech [80] RESEARCHSTAT "R-Wpn-Rocket-Accuracy01" -camTech [81] RESEARCHSTAT "R-Wpn-Rocket-Damage01" -camTech [82] RESEARCHSTAT "R-Wpn-Rocket-Damage02" -camTech [83] RESEARCHSTAT "R-Wpn-Rocket-ROF01" -camTech [84] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy01" -camTech [85] RESEARCHSTAT "R-Wpn-RocketSlow-Damage01" -camTech [86] RESEARCHSTAT "R-Wpn-RocketSlow-Damage02" -// tech level one-two -camTech [87] RESEARCHSTAT "R-Cyborg-Legs01" -camTech [88] RESEARCHSTAT "R-Cyborg-Metals03" -camTech [89] RESEARCHSTAT "R-Defense-MortarPit" -camTech [90] RESEARCHSTAT "R-Defense-MRL" -camTech [91] RESEARCHSTAT "R-Defense-WallTower01" -camTech [92] RESEARCHSTAT "R-Defense-WallTower06" -camTech [93] RESEARCHSTAT "R-Defense-WallUpgrade02" -camTech [94] RESEARCHSTAT "R-Defense-WallUpgrade03" -camTech [95] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade03" -camTech [96] RESEARCHSTAT "R-Struc-Factory-Upgrade03" -camTech [97] RESEARCHSTAT "R-Struc-Materials03" -camTech [98] RESEARCHSTAT "R-Struc-Research-Upgrade03" -camTech [99] RESEARCHSTAT "R-Struc-RprFac-Upgrade03" -camTech [100] RESEARCHSTAT "R-Sys-Engineering01" -camTech [101] RESEARCHSTAT "R-Vehicle-Engine03" -camTech [102] RESEARCHSTAT "R-Vehicle-Metals03" -camTech [103] RESEARCHSTAT "R-Wpn-AAGun03" -camTech [104] RESEARCHSTAT "R-Wpn-Cannon-Accuracy01" -camTech [105] RESEARCHSTAT "R-Wpn-Cannon-Damage03" -camTech [106] RESEARCHSTAT "R-Wpn-Flamer-Damage02" -camTech [107] RESEARCHSTAT "R-Wpn-Flamer-Damage03" -camTech [108] RESEARCHSTAT "R-Wpn-Flamer-ROF01" -camTech [109] RESEARCHSTAT "R-Wpn-MG2Mk1" -camTech [110] RESEARCHSTAT "R-Wpn-MG3Mk1" -camTech [111] RESEARCHSTAT "R-Wpn-MG-ROF01" -camTech [112] RESEARCHSTAT "R-Wpn-Mortar02Hvy" -camTech [113] RESEARCHSTAT "R-Wpn-Mortar-Acc01" -camTech [114] RESEARCHSTAT "R-Wpn-Mortar-Damage03" -camTech [115] RESEARCHSTAT "R-Wpn-Mortar-ROF01" -camTech [116] RESEARCHSTAT "R-Wpn-Rocket02-MRL" -camTech [117] RESEARCHSTAT "R-Wpn-Rocket-Damage03" -camTech [118] RESEARCHSTAT "R-Wpn-Rocket-ROF02" -camTech [119] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy02" -camTech [120] RESEARCHSTAT "R-Wpn-RocketSlow-Damage03" -// tech level two -camTech [121] RESEARCHSTAT "R-Cyborg-Armor-Heat01" -camTech [122] RESEARCHSTAT "R-Cyborg-Metals04" -camTech [123] RESEARCHSTAT "R-Cyborg-Metals05" -camTech [124] RESEARCHSTAT "R-Cyborg-Wpn-RotMG-Grd" -camTech [125] RESEARCHSTAT "R-Defense-AASite-QuadBof" -camTech [126] RESEARCHSTAT "R-Defense-AASite-QuadMg1" -camTech [127] RESEARCHSTAT "R-Defense-AASite-QuadRotMg" -camTech [128] RESEARCHSTAT "R-Defense-Emplacement-HPVcannon" -camTech [129] RESEARCHSTAT "R-Defense-Howitzer" -camTech [130] RESEARCHSTAT "R-Defense-HvyHowitzer" -camTech [131] RESEARCHSTAT "R-Defense-HvyMor" -camTech [132] RESEARCHSTAT "R-Defense-IDFRocket" -camTech [133] RESEARCHSTAT "R-Defense-RotCannon" -camTech [134] RESEARCHSTAT "R-Defense-RotMG" -camTech [135] RESEARCHSTAT "R-Defense-RotMor" -camTech [136] RESEARCHSTAT "R-Defense-Wall-RotMg" -camTech [137] RESEARCHSTAT "R-Defense-WallTower-HvyFlamer" -camTech [138] RESEARCHSTAT "R-Defense-WallUpgrade04" -camTech [139] RESEARCHSTAT "R-Defense-WallUpgrade05" -camTech [140] RESEARCHSTAT "R-Defense-Wall-VulcanCan" -camTech [141] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade04" -camTech [142] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade05" -camTech [143] RESEARCHSTAT "R-Struc-Factory-Upgrade04" -camTech [144] RESEARCHSTAT "R-Struc-Factory-Upgrade05" -camTech [145] RESEARCHSTAT "R-Struc-Materials04" -camTech [146] RESEARCHSTAT "R-Struc-Materials05" -camTech [147] RESEARCHSTAT "R-Struc-Research-Upgrade04" -camTech [148] RESEARCHSTAT "R-Struc-Research-Upgrade05" -camTech [149] RESEARCHSTAT "R-Struc-RprFac-Upgrade04" -camTech [150] RESEARCHSTAT "R-Struc-RprFac-Upgrade05" -camTech [151] RESEARCHSTAT "R-Struc-VTOLFactory" -camTech [152] RESEARCHSTAT "R-Struc-VTOLFactory-Upgrade01" -camTech [153] RESEARCHSTAT "R-Struc-VTOLFactory-Upgrade02" -camTech [154] RESEARCHSTAT "R-Struc-VTOLPad" -camTech [155] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade01" -camTech [156] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade02" -camTech [157] RESEARCHSTAT "R-Sys-Sensor-Tower02" -camTech [158] RESEARCHSTAT "R-Sys-VTOLCBS-Turret01" -camTech [159] RESEARCHSTAT "R-Vehicle-Armor-Heat01" -camTech [160] RESEARCHSTAT "R-Vehicle-Body02" -camTech [161] RESEARCHSTAT "R-Vehicle-Body06" -camTech [162] RESEARCHSTAT "R-Vehicle-Engine04" -camTech [163] RESEARCHSTAT "R-Vehicle-Engine05" -camTech [164] RESEARCHSTAT "R-Vehicle-Metals04" -camTech [165] RESEARCHSTAT "R-Vehicle-Metals05" -camTech [166] RESEARCHSTAT "R-Wpn-AAGun02" -camTech [167] RESEARCHSTAT "R-Wpn-AAGun04" -camTech [168] RESEARCHSTAT "R-Wpn-AAGun-Accuracy01" -camTech [169] RESEARCHSTAT "R-Wpn-AAGun-Damage01" -camTech [170] RESEARCHSTAT "R-Wpn-AAGun-Damage02" -camTech [171] RESEARCHSTAT "R-Wpn-AAGun-ROF01" -camTech [172] RESEARCHSTAT "R-Wpn-AAGun-ROF02" -camTech [173] RESEARCHSTAT "R-Wpn-Bomb01" -camTech [174] RESEARCHSTAT "R-Wpn-Bomb02" -camTech [175] RESEARCHSTAT "R-Wpn-Bomb-Accuracy01" -camTech [176] RESEARCHSTAT "R-Wpn-Cannon4AMk1" -camTech [177] RESEARCHSTAT "R-Wpn-Cannon5" -camTech [178] RESEARCHSTAT "R-Wpn-Cannon-Damage04" -camTech [179] RESEARCHSTAT "R-Wpn-Cannon-Damage05" -camTech [180] RESEARCHSTAT "R-Wpn-Cannon-ROF01" -camTech [181] RESEARCHSTAT "R-Wpn-Cannon-ROF02" -camTech [182] RESEARCHSTAT "R-Wpn-Flame2" -camTech [183] RESEARCHSTAT "R-Wpn-Flamer-Damage04" -camTech [184] RESEARCHSTAT "R-Wpn-Flamer-ROF02" -camTech [185] RESEARCHSTAT "R-Wpn-Howitzer-Accuracy01" -camTech [186] RESEARCHSTAT "R-Wpn-Howitzer-Damage01" -camTech [187] RESEARCHSTAT "R-Wpn-Howitzer-Damage02" -camTech [188] RESEARCHSTAT "R-Wpn-HowitzerMk1" -camTech [189] RESEARCHSTAT "R-Wpn-Howitzer-ROF01" -camTech [190] RESEARCHSTAT "R-Wpn-Howitzer-ROF02" -camTech [191] RESEARCHSTAT "R-Wpn-HvyHowitzer" -camTech [192] RESEARCHSTAT "R-Wpn-MG-ROF02" -camTech [193] RESEARCHSTAT "R-Wpn-Mortar3" -camTech [194] RESEARCHSTAT "R-Wpn-Mortar-Damage04" -camTech [195] RESEARCHSTAT "R-Wpn-Mortar-Damage05" -camTech [196] RESEARCHSTAT "R-Wpn-Mortar-ROF02" -camTech [197] RESEARCHSTAT "R-Wpn-Rocket06-IDF" -camTech [198] RESEARCHSTAT "R-Wpn-Rocket-Damage04" -camTech [199] RESEARCHSTAT "R-Wpn-Rocket-Damage05" -camTech [200] RESEARCHSTAT "R-Wpn-RocketSlow-Damage04" -camTech [201] RESEARCHSTAT "R-Wpn-RocketSlow-Damage05" -camTech [202] RESEARCHSTAT "R-Wpn-RocketSlow-ROF01" -camTech [203] RESEARCHSTAT "R-Wpn-RocketSlow-ROF02" -//tech level two-three -camTech [204] RESEARCHSTAT "R-Cyborg-Armor-Heat02" -camTech [205] RESEARCHSTAT "R-Cyborg-Armor-Heat03" -camTech [206] RESEARCHSTAT "R-Cyborg-Metals06" -camTech [207] RESEARCHSTAT "R-Defense-Pillbox-RotMG" -camTech [208] RESEARCHSTAT "R-Defense-WallTower-HPVcannon" -camTech [209] RESEARCHSTAT "R-Defense-WallUpgrade06" -camTech [210] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade06" -camTech [211] RESEARCHSTAT "R-Struc-Factory-Upgrade06" -camTech [212] RESEARCHSTAT "R-Struc-Materials06" -camTech [213] RESEARCHSTAT "R-Struc-Power-Upgrade01" -camTech [214] RESEARCHSTAT "R-Struc-Power-Upgrade01b" -camTech [215] RESEARCHSTAT "R-Struc-Power-Upgrade01c" -camTech [216] RESEARCHSTAT "R-Struc-Research-Upgrade06" -camTech [217] RESEARCHSTAT "R-Struc-RprFac-Upgrade06" -camTech [218] RESEARCHSTAT "R-Struc-VTOLFactory-Upgrade03" -camTech [219] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade03" -camTech [220] RESEARCHSTAT "R-Sys-CBSensor-Tower01" -camTech [221] RESEARCHSTAT "R-Sys-CBSensor-Turret01" -camTech [222] RESEARCHSTAT "R-Sys-Engineering02" -camTech [223] RESEARCHSTAT "R-Sys-VTOLCBS-Tower01" -camTech [224] RESEARCHSTAT "R-Sys-VTOLStrike-Tower01" -camTech [225] RESEARCHSTAT "R-Sys-VTOLStrike-Turret01" -camTech [226] RESEARCHSTAT "R-Vehicle-Armor-Heat02" -camTech [227] RESEARCHSTAT "R-Vehicle-Armor-Heat03" -camTech [228] RESEARCHSTAT "R-Vehicle-Engine06" -camTech [229] RESEARCHSTAT "R-Vehicle-Metals06" -camTech [230] RESEARCHSTAT "R-Wpn-AAGun-Accuracy02" -camTech [231] RESEARCHSTAT "R-Wpn-AAGun-Damage03" -camTech [232] RESEARCHSTAT "R-Wpn-AAGun-ROF03" -camTech [233] RESEARCHSTAT "R-Wpn-Bomb03" -camTech [234] RESEARCHSTAT "R-Wpn-Bomb-Accuracy02" -camTech [235] RESEARCHSTAT "R-Wpn-Cannon-Damage06" -camTech [236] RESEARCHSTAT "R-Wpn-Cannon-ROF03" -camTech [237] RESEARCHSTAT "R-Wpn-Flamer-Damage05" -camTech [238] RESEARCHSTAT "R-Wpn-Flamer-Damage06" -camTech [239] RESEARCHSTAT "R-Wpn-Flamer-ROF03" -camTech [240] RESEARCHSTAT "R-Wpn-Howitzer03-Rot" -camTech [241] RESEARCHSTAT "R-Wpn-Howitzer-Accuracy02" -camTech [242] RESEARCHSTAT "R-Wpn-Howitzer-Damage03" -camTech [243] RESEARCHSTAT "R-Wpn-Howitzer-ROF03" -camTech [244] RESEARCHSTAT "R-Wpn-MG4" -camTech [245] RESEARCHSTAT "R-Wpn-MG-ROF03" -camTech [246] RESEARCHSTAT "R-Wpn-Mortar-Acc02" -camTech [247] RESEARCHSTAT "R-Wpn-Mortar-Damage06" -camTech [248] RESEARCHSTAT "R-Wpn-Mortar-ROF03" -camTech [249] RESEARCHSTAT "R-Wpn-Rocket07-Tank-Killer" -camTech [250] RESEARCHSTAT "R-Wpn-Rocket-Damage06" -camTech [251] RESEARCHSTAT "R-Defense-HvyFlamer" -camTech [252] RESEARCHSTAT "R-Wpn-RocketSlow-Damage06" -camTech [253] RESEARCHSTAT "R-Cyborg-Sys-ComEng" - -camTechB [0] RESEARCHSTAT "R-Cyborg-Sys-Mechanic" -camTechB [1] RESEARCHSTAT "R-Cyborg-Wpn-Grenade" -camTechB [2] RESEARCHSTAT "R-Cyborg-Wpn-Thermite" -camTechB [3] RESEARCHSTAT "R-Cyborg-Transport" -camTechB [4] RESEARCHSTAT "R-Sys-MobileRepairTurretHvy" -camTechB [5] RESEARCHSTAT "R-Defense-Cannon6" -camTechB [6] RESEARCHSTAT "R-Wpn-Cannon6TwinAslt" -camTechB [7] RESEARCHSTAT "R-Cyborg-Hvywpn-Acannon" -camTechB [8] RESEARCHSTAT "R-Cyborg-Hvywpn-HPV" -camTechB [9] RESEARCHSTAT "R-Cyborg-Hvywpn-Mcannon" -camTechB [10] RESEARCHSTAT "R-Cyborg-Hvywpn-TK" -camTechB [11] RESEARCHSTAT "R-Defense-Super-Rocket" -camTechB [12] RESEARCHSTAT "R-Defense-Super-Cannon" -camTechB [13] RESEARCHSTAT "R-Defense-WallTower-QuadRotAA" -camTechB [14] RESEARCHSTAT "R-Defense-WallTower-DoubleAAgun" -camTechB [15] RESEARCHSTAT "R-Comp-CommandTurret02" -camTechB [16] RESEARCHSTAT "R-Comp-CommandTurret03" -} \ No newline at end of file diff --git a/data/mods/multiplay/dydo-ai/multiplay/skirmish/sktech.slo b/data/mods/multiplay/dydo-ai/multiplay/skirmish/sktech.slo deleted file mode 100644 index 3d1003dda..000000000 --- a/data/mods/multiplay/dydo-ai/multiplay/skirmish/sktech.slo +++ /dev/null @@ -1,172 +0,0 @@ -// technology auto enabler. - -public int initialPowerCl,initialPowerBa,initialPowerDe,numCamTech,numCamTechB,count,playnum; -public RESEARCHSTAT camTech[254]; -public RESEARCHSTAT camTechB[17]; - -event setTechPower(CALL_GAMEINIT) -{ - playnum=0; - while (playnum < 8) - { - if(multiPlayerBaseType == CAMP_CLEAN) - { - setPowerLevel(initialPowerCl,playnum); - } - else if(multiPlayerBaseType == CAMP_BASE) - { - setPowerLevel(initialPowerBa,playnum); - } - else - { - setPowerLevel(initialPowerDe,playnum); - } - playnum = playnum + 1; - } -} - -event tech0(CALL_GAMEINIT) -{ - count = 0; - playnum = 0; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } -} - -event tech1(CALL_GAMEINIT) -{ - count = 0; - playnum = 1; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - -} - -event tech2(CALL_GAMEINIT) -{ - count = 0; - playnum = 2; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - -} - -event tech3(CALL_GAMEINIT) -{ - count = 0; - playnum = 3; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - - -} - -event tech4(CALL_GAMEINIT) -{ - count = 0; - playnum = 4; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - - -} - -event tech5(CALL_GAMEINIT) -{ - count = 0; - playnum = 5; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - -} - -event tech6(CALL_GAMEINIT) -{ - count = 0; - playnum = 6; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - -} - -event tech7(CALL_GAMEINIT) -{ - count = 0; - playnum = 7; - while (count <= numCamTech) - { - completeResearch(camTech[count], playnum); - count = count +1; - } - count = 0; - while (count < numCamTechB) - { - completeResearch(camTechB[count], playnum); - count = count +1; - } - -} diff --git a/data/mods/multiplay/dydo-ai/stats/assignweapons.txt b/data/mods/multiplay/dydo-ai/stats/assignweapons.txt deleted file mode 100644 index 088fb647c..000000000 --- a/data/mods/multiplay/dydo-ai/stats/assignweapons.txt +++ /dev/null @@ -1,319 +0,0 @@ -ASPOTTER,Cyb-Hvywpn-HPV,NULL,NULL,6 -ATESTVEHICLE,Cannon2A-TMk1,NULL,NULL,6 -ATESTVTOL,Rocket-VTOL-BB,NULL,NULL,6 -BabaBusCan,BusCannon,NULL,NULL,7 -BabaFireCan,BusCannon,NULL,NULL,7 -BabaFireTruck,BabaFlame,NULL,NULL,7 -BabaJeep,BJeepMG,NULL,NULL,7 -BaBaPeople,BaBaMG,NULL,NULL,7 -BabaRKJeep,BabaRocket,NULL,NULL,7 -BarbarianBuggy,BuggyMG,NULL,NULL,7 -BarbarianRKBuggy,BabaRocket,NULL,NULL,7 -BarbarianTrike,bTrikeMG,NULL,NULL,7 -CO-H-COM-H,CommandTurret1,NULL,NULL,2 -CO-H-Command-Track,CommandTurret1,NULL,NULL,2 -CO-H-How105-Tracks,Howitzer105Mk1,NULL,NULL,2 -CO-H-How150-Tracks,Howitzer150Mk1,NULL,NULL,2 -CO-H-HPVCannon-Tracks,Cannon4AUTOMk1,NULL,NULL,2 -CO-H-HvyCan-Tracks,Cannon375mmMk1,NULL,NULL,2 -CO-H-QuadBofAA-T,AAGun2Mk1,NULL,NULL,2 -CO-H-QuadRotAA-T,QuadRotAAGun,NULL,NULL,2 -CO-H-Rkt-BB-T,Rocket-BB,NULL,NULL,2 -CO-H-RotCan-Track,Cannon5VulcanMk1,NULL,NULL,2 -CO-H-RotHow-Track,Howitzer03-Rot,NULL,NULL,2 -CO-L-Bomb1-VTOL,Bomb1-VTOL-LtHE,NULL,NULL,2 -CO-L-Rocket-LtA-T-VTOL,Rocket-VTOL-LtA-T,NULL,NULL,2 -CO-L-RotMG-VTOL,MG4ROTARY-VTOL,NULL,NULL,2 -CO-M-Bomb1-VTOL,Bomb1-VTOL-LtHE,NULL,NULL,2 -CO-M-Bomb2-VTOL,Bomb2-VTOL-HvHE,NULL,NULL,2 -CO-M-HMG-T,MG3Mk1,NULL,NULL,2 -CO-M-HPVCannon-Tracks,Cannon4AUTOMk1,NULL,NULL,2 -CO-M-HVAT-Hover,Rocket-HvyA-T,NULL,NULL,2 -CO-M-HVAT-V,Rocket-VTOL-HvyA-T,NULL,NULL,2 -CO-M-HvFlame-Track,Flame2,NULL,NULL,2 -CO-M-HvMortar-T,Mortar2Mk1,NULL,NULL,2 -CO-M-LTAT-Hover,Rocket-LtA-T,NULL,NULL,2 -CO-M-MedCan-Tracks,Cannon2A-TMk1,NULL,NULL,2 -CO-M-Rocket-HvyA-T-Track,Rocket-HvyA-T,NULL,NULL,2 -CO-M-Rocket-LtA-T-T,Rocket-LtA-T,NULL,NULL,2 -CO-M-ROTMG-T,MG4ROTARYMk1,NULL,NULL,2 -CO-M-RotMortar-T,Mortar3ROTARYMk1,NULL,NULL,2 -CO-M-RR-HT,Rocket-IDF,NULL,NULL,2 -CobraComHalftrack,CommandTurret1,NULL,NULL,6 -CobraFlameTracks,Flame1Mk1,NULL,NULL,6 -CobraHMGHalfTrack,MG3Mk1,NULL,NULL,4 -CobraHvyCnTrks,Cannon375mmMk1,NULL,NULL,6 -CobraHvyMortarHalftrack,Mortar2Mk1,NULL,NULL,6 -CobraLtA-Thalftrack,Rocket-LtA-T,NULL,NULL,6 -CobraLtCnTrks,Cannon1Mk1,NULL,NULL,4 -CobraMedCnTrks,Cannon2A-TMk1,NULL,NULL,6 -CobraMortarHalfTrack,Mortar1Mk1,NULL,NULL,4 -CobraMRLHalftrack,Rocket-MRL,NULL,NULL,6 -Cyb-Atmiss-GROUND,Cyb-Wpn-Atmiss,NULL,NULL,0 -Cyb-Cannon-GROUND,CyborgCannon,NULL,NULL,0 -Cyb-Chain-GROUND,CyborgChaingun,NULL,NULL,0 -Cyb-Flamer-GROUND,CyborgFlamer01,NULL,NULL,0 -Cyb-Gren,Cyb-Wpn-Grenade,NULL,NULL,5 -Cyb-Hvy-A-T,Cyb-Hvywpn-A-T,NULL,NULL,5 -Cyb-Hvy-Acannon,Cyb-Hvywpn-Acannon,NULL,NULL,5 -Cyb-Hvy-HPV,Cyb-Hvywpn-HPV,NULL,NULL,5 -Cyb-Hvy-Mcannon,Cyb-Hvywpn-Mcannon,NULL,NULL,5 -Cyb-Hvy-PulseLsr,Cyb-Hvywpn-PulseLsr,NULL,NULL,5 -Cyb-Hvy-RailGunner,Cyb-Hvywpn-RailGunner,NULL,NULL,5 -Cyb-Hvy-TK,Cyb-Hvywpn-TK,NULL,NULL,5 -Cyb-Laser1-GROUND,Cyb-Wpn-Laser,NULL,NULL,0 -Cyb-Rail1-GROUND,Cyb-Wpn-Rail1,NULL,NULL,0 -Cyb-Rocket-GROUND,CyborgRocket,NULL,NULL,0 -Cyb-RotMG-GROUND,CyborgRotMG,NULL,NULL,0 -Cyb-Thermite,Cyb-Wpn-Thermite,NULL,NULL,5 -CyborgCannon01Grd,CyborgCannon,NULL,NULL,5 -CyborgChain01Ground,CyborgChaingun,NULL,NULL,5 -CyborgFlamer01Grd,CyborgFlamer01,NULL,NULL,5 -CyborgRkt01Ground,CyborgRocket,NULL,NULL,5 -CyborgRotMgGround,CyborgRotMG,NULL,NULL,5 -MP-Cyb-ATmiss-GRD,Cyb-Wpn-Atmiss,NULL,NULL,5 -MP-Cyb-Laser1-GRD,Cyb-Wpn-Laser,NULL,NULL,5 -MP-Cyb-Needle-GRD,Cyb-Wpn-Rail1,NULL,NULL,5 -NP-H-HvyCannon-Hover,Cannon375mmMk1,NULL,NULL,1 -NP-H-HvyCannon-Tracks,Cannon375mmMk1,NULL,NULL,1 -NP-H-MdCannon-Tracks,Cannon2A-TMk1,NULL,NULL,1 -NP-L-HMG-Halftrack,MG3Mk1,NULL,NULL,1 -NP-L-LtAT-Halftrack,Rocket-LtA-T,NULL,NULL,1 -NP-L-LtCannon-Halftrack,Cannon1Mk1,NULL,NULL,1 -NP-L-MRLS-Halftrack,Rocket-MRL,NULL,NULL,1 -NP-L-RocketPod-Wheels,Rocket-Pod,NULL,NULL,1 -NP-M-BB-Halftrack,Rocket-BB,NULL,NULL,1 -NP-M-Command-Halftrack,CommandTurret1,NULL,NULL,1 -NP-M-Command-Track,CommandTurret1,NULL,NULL,1 -NP-M-HvyMortar-Halftrack,Mortar2Mk1,NULL,NULL,1 -NP-M-LitCannon-Halftrack,Cannon1Mk1,NULL,NULL,1 -NP-M-LtAT-Hover,Rocket-LtA-T,NULL,NULL,1 -NP-M-LtMortar-Halftrack,Mortar1Mk1,NULL,NULL,1 -NP-M-MdCannon-Halftrack,Cannon2A-TMk1,NULL,NULL,1 -NP-M-MdCannon-Tracks,Cannon2A-TMk1,NULL,NULL,1 -NP-M-MG3-Hover,MG3Mk1,NULL,NULL,1 -NX-Cyb-Miss-JUMP,NX-CyborgMiss,NULL,NULL,3 -NX-Cyb-PulseLas-JUMP,NX-CyborgPulseLas,NULL,NULL,3 -NX-Cyb-Rail1-JUMP,NX-Cyb-Rail1,NULL,NULL,3 -NX-H-HvMiss-Hover,Missile-HvySAM,NULL,NULL,3 -NX-H-Rail2-VTOL,RailGun2-VTOL,NULL,NULL,3 -NX-H-Rail3-Hover,RailGun3Mk1,NULL,NULL,3 -NX-L-Flash-Hover,Laser3BEAMMk1,NULL,NULL,3 -NX-L-Link-Hov,NEXUSlink,NULL,NULL,3 -NX-L-Missile-A-T-VTOL,Missile-VTOL-AT,NULL,NULL,3 -NX-L-Missile-MdArt-Hover,Missile-MdArt,NULL,NULL,3 -NX-L-PulseLas-VTOL,Laser2PULSE-VTOL,NULL,NULL,3 -NX-L-Rail1-VTOL,RailGun1-VTOL,NULL,NULL,3 -NX-M-Bomb2-VTOL,Bomb2-VTOL-HvHE,NULL,NULL,3 -NX-M-Bomb4-VTOL,Bomb4-VTOL-HvyINC,NULL,NULL,3 -NX-M-Com-Hover,CommandTurret1,NULL,NULL,3 -NX-M-HvSam-Hover,Missile-HvySAM,NULL,NULL,3 -NX-M-Link-Hover,NEXUSlink,NULL,NULL,3 -NX-M-Missile-A-T-Hover,Missile-A-T,NULL,NULL,3 -NX-M-PulseLas-Hover,Laser2PULSEMk1,NULL,NULL,3 -NX-M-Rail2-Hover,RailGun2Mk1,NULL,NULL,3 -P0cam3PyAsltGnTrk,MG4ROTARYMk1,NULL,NULL,3 -P0cam3PyFlakHT,AAGun2Mk1,NULL,NULL,3 -P0cam3PyHPVcanTrk,Cannon4AUTOMk1,NULL,NULL,3 -P0cam3PyHvyATTrk,Rocket-HvyA-T,NULL,NULL,3 -P0CobraFlameTracks,Flame1Mk1,NULL,NULL,2 -P0CobraHvyMGHtrack,MG3Mk1,NULL,NULL,2 -P0CobraLtATRktHtrack,Rocket-LtA-T,NULL,NULL,2 -P0CobraMedCnTrks,Cannon2A-TMk1,NULL,NULL,2 -P0PythonComTracks,CommandTurret1,NULL,NULL,2 -P0PythonHvyCnTrks,Cannon375mmMk1,Cannon375mmMk1,NULL,2 -P6-L-Bomb1-V,Bomb1-VTOL-LtHE,NULL,NULL,6 -P6-L-LTAT-V,Rocket-VTOL-LtA-T,NULL,NULL,6 -P6-M-QMG1-HT,QuadMg1AAGun,NULL,NULL,6 -PythonComTracks,CommandTurret1,NULL,NULL,6 -PythonHvyCnTrks,Cannon375mmMk1,NULL,NULL,6 -PythonLtCnTrks,Cannon1Mk1,NULL,NULL,6 -PythonMedCnTrks,Cannon2A-TMk1,NULL,NULL,6 -SK-Bug-Hover-HMG,MG3Mk1,NULL,NULL,6 -SK-Bug-VTOL-BB,Rocket-VTOL-BB,NULL,NULL,6 -SK-Bug-VTOL-CLBomb,Bomb1-VTOL-LtHE,NULL,NULL,6 -SK-Cobra-Hover-BB,Rocket-BB,NULL,NULL,6 -SK-Cobra-Hover-HMG,MG3Mk1,NULL,NULL,6 -SK-Cobra-Hover-Lancer,Rocket-LtA-T,NULL,NULL,6 -SK-Cobra-Track-HVC,Cannon4AUTOMk1,NULL,NULL,6 -SK-Cobra-Track-TK,Rocket-HvyA-T,NULL,NULL,6 -Sk-CobraBBHover,Rocket-BB,NULL,NULL,6 -SK-Leopard-Hover-Needle,RailGun1Mk1,NULL,NULL,6 -SK-Leopard-HTrk-ASGun,MG4ROTARYMk1,NULL,NULL,6 -SK-Leopard-Htrk-Needle,RailGun1Mk1,NULL,NULL,6 -SK-Leopard-Track-Lancer,Rocket-LtA-T,NULL,NULL,6 -SK-Leopard-VTOL-BB,Rocket-VTOL-BB,NULL,NULL,6 -SK-Leopard-VTOL-PhosBomb,Bomb3-VTOL-LtINC,NULL,NULL,6 -SK-Mantis-Hover-Hcannon,Cannon375mmMk1,NULL,NULL,6 -SK-Mantis-Hover-HVC,Cannon4AUTOMk1,NULL,NULL,6 -SK-Mantis-VTOL-BB,Rocket-VTOL-BB,NULL,NULL,6 -SK-Panther-Hover-HVC,Cannon4AUTOMk1,NULL,NULL,6 -SK-Panther-Hover-TK,Rocket-HvyA-T,NULL,NULL,6 -SK-Panther-Htrk-ASGun,MG4ROTARYMk1,NULL,NULL,6 -SK-Panther-Htrk-BB,Rocket-BB,NULL,NULL,6 -SK-Panther-Track-HVC,Cannon4AUTOMk1,NULL,NULL,6 -SK-Panther-Track-RailGun,RailGun2Mk1,NULL,NULL,6 -SK-Panther-Track-TK,Rocket-HvyA-T,NULL,NULL,6 -SK-Panther-VTOL-BB,Rocket-VTOL-BB,NULL,NULL,6 -SK-Panther-VTOL-Phosbomb,Bomb3-VTOL-LtINC,NULL,NULL,6 -SK-Panther-VTOL-Thermite,Bomb4-VTOL-HvyINC,NULL,NULL,6 -SK-Panther-VTOL-TK,Rocket-VTOL-HvyA-T,NULL,NULL,6 -SK-Python-Hover-Hcannon,Cannon375mmMk1,NULL,NULL,6 -SK-Python-Hover-Lancer,Rocket-LtA-T,NULL,NULL,6 -SK-Python-Hover-Mcannon,Cannon2A-TMk1,NULL,NULL,6 -SK-Python-Track-Hcannon,Cannon375mmMk1,NULL,NULL,6 -Sk-PythonHvCanTrack,Cannon375mmMk1,NULL,NULL,6 -SK-Retal-Track-Needle,RailGun1Mk1,NULL,NULL,6 -SK-Retal-VTOL-Phosbomb,Bomb3-VTOL-LtINC,NULL,NULL,6 -SK-Retre-Hover-RailGun,RailGun2Mk1,NULL,NULL,6 -SK-Retre-Hover-Scourge,Missile-A-T,NULL,NULL,6 -SK-Retre-Htrk-Pepper,Mortar3ROTARYMk1,NULL,NULL,6 -SK-Retre-Track-FlashLight,Laser3BEAMMk1,NULL,NULL,6 -SK-Retre-Track-PulseLsr,Laser2PULSEMk1,NULL,NULL,6 -SK-Retre-Track-RailGun,RailGun2Mk1,NULL,NULL,6 -SK-Retre-Track-Scourge,Missile-A-T,NULL,NULL,6 -SK-Retre-VTOL-PulseLsr,Laser2PULSE-VTOL,NULL,NULL,6 -SK-Retre-VTOL-Scourge,Missile-VTOL-AT,NULL,NULL,6 -SK-Retre-VTOL-Thermite,Bomb4-VTOL-HvyINC,NULL,NULL,6 -SK-Scorp-Hover-ASGUN,MG4ROTARYMk1,NULL,NULL,6 -SK-Scorp-Hover-BB,Rocket-BB,NULL,NULL,6 -SK-Scorp-Hover-Bombard,Mortar2Mk1,NULL,NULL,6 -SK-Scorp-Hover-Lancer,Rocket-LtA-T,NULL,NULL,6 -SK-Scorp-Hover-Mcannon,Cannon2A-TMk1,NULL,NULL,6 -SK-Scorpion-VTOL-BB,Rocket-VTOL-BB,NULL,NULL,6 -SK-Scorpion-VTOL-Hbomb,Bomb2-VTOL-HvHE,NULL,NULL,6 -SK-Tiger-Hover-ASCannon,Cannon5VulcanMk1,NULL,NULL,6 -SK-Tiger-Hover-Gauss,RailGun3Mk1,NULL,NULL,6 -SK-Tiger-Hover-Hcannon,Cannon375mmMk1,NULL,NULL,6 -SK-Tiger-Hover-HVC,Cannon4AUTOMk1,NULL,NULL,6 -SK-Tiger-Hover-Scourge,Missile-A-T,NULL,NULL,6 -SK-Tiger-Hover-TK,Rocket-HvyA-T,NULL,NULL,6 -SK-Tiger-Track-ASCannon,Cannon5VulcanMk1,NULL,NULL,6 -SK-Tiger-Track-Gauss,RailGun3Mk1,NULL,NULL,6 -SK-Tiger-Track-Hcannon,Cannon375mmMk1,NULL,NULL,6 -SK-Tiger-Track-HVC,Cannon4AUTOMk1,NULL,NULL,6 -SK-Tiger-Track-Scourge,Missile-A-T,NULL,NULL,6 -SK-Tiger-Track-TK,Rocket-HvyA-T,NULL,NULL,6 -SK-Veng-Hover-Gauss,RailGun3Mk1,NULL,NULL,6 -SK-Veng-Hover-PulseLsr,Laser2PULSEMk1,NULL,NULL,6 -SK-Veng-Hover-Scourge,Missile-A-T,NULL,NULL,6 -SK-Veng-Track-C6TwinAslt,Cannon6TwinAslt,NULL,NULL,6 -SK-Veng-Track-Gauss,RailGun3Mk1,NULL,NULL,6 -SK-Veng-Track-HvyLaser,HeavyLaser,NULL,NULL,6 -SK-Veng-Track-PulseLsr,Laser2PULSEMk1,NULL,NULL,6 -SK-Veng-Track-Scourge,Missile-A-T,NULL,NULL,6 -SuperTank,Superweapon,NULL,NULL,6 -SuperTank2,Superweapon2,NULL,NULL,6 -Transporter,MG3-VTOL,NULL,NULL,5 -ViperBBWheels,Rocket-BB,NULL,NULL,6 -ViperFlameWheels,Flame1Mk1,NULL,NULL,4 -ViperHMGHalftrack,MG3Mk1,NULL,NULL,6 -ViperHMGTracks,MG3Mk1,NULL,NULL,6 -ViperLtA-Twheels,Rocket-LtA-T,NULL,NULL,6 -ViperLtCannonTracks,Cannon1Mk1,NULL,NULL,4 -ViperLtCannonWheels,Cannon1Mk1,NULL,NULL,4 -ViperLtCannonHTracks,Cannon1Mk1,NULL,NULL,4 -ViperLtMGWheels,MG1Mk1,NULL,NULL,0 -ViperMedCnTrks,Cannon2A-TMk1,NULL,NULL,6 -ViperMG01Wheels,MG1Mk1,NULL,NULL,6 -ViperMG02Halftrack,MG2Mk1,NULL,NULL,6 -ViperMG02Wheels,MG2Mk1,NULL,NULL,6 -ViperMRLWheels,Rocket-MRL,NULL,NULL,6 -ViperPODWheels,Rocket-Pod,NULL,NULL,6 -ViperHMGWheels,MG3Mk1,NULL,NULL,6 -Scourge-Mantis-H,Missile-A-T,NULL,NULL,6 -TK-Mantis-H,Rocket-HvyA-T,NULL,NULL,6 -CobraHMGTracks,MG3Mk1,NULL,NULL,6 -A-Viper-Wheels-MG,MG1Mk1,NULL,NULL,6 -A-Viper-Wheels-TMG,MG2Mk1,NULL,NULL,6 -A-Viper-Wheels-HMG,MG3Mk1,NULL,NULL,6 -A-Cobra-Wheels-HMG,MG3Mk1,NULL,NULL,6 -A-Cobra-Hover-HMG,MG3Mk1,NULL,NULL,6 -A-Cobra-Hover-MC,Cannon2A-TMk1,NULL,NULL,6 -A-Scorp-Hover-MC,Cannon2A-TMk1,NULL,NULL,6 -A-Python-Hover-MC,Cannon2A-TMk1,NULL,NULL,6 -A-Python-Hover-HC,Cannon375mmMk1,NULL,NULL,6 -A-Python-Trk-HC,Cannon375mmMk1,NULL,NULL,6 -A-Tiger-Trk-HC,Cannon375mmMk1,NULL,NULL,6 -A-Tiger-Trk-Needle,RailGun1Mk1,NULL,NULL,6 -A-Retrib-Trk-Needle,RailGun1Mk1,NULL,NULL,6 -A-Veng-Trk-Needle,RailGun1Mk1,NULL,NULL,6 -A-Veng-Trk-Rail,RailGun2Mk1,NULL,NULL,6 -A-Veng-Trk-Guass,RailGun3Mk1,NULL,NULL,6 -A-Veng-Trk-Scourge,Missile-A-T,NULL,NULL,6 -A-Mantis-Trk-Rail,RailGun2Mk1,NULL,NULL,6 -A-Mantis-Trk-Pulse,Laser2PULSEMk1,NULL,NULL,6 -V-Bug-ClusterBomb,Bomb1-VTOL-LtHE,NULL,NULL,6 -V-Bug-BB,Rocket-VTOL-BB,NULL,NULL,6 -V-Bug-Lancer,Rocket-VTOL-LtA-T,NULL,NULL,6 -V-Bug-HPV,Cannon4AUTO-VTOL,NULL,NULL,6 -V-Scor-ClusterBomb,Bomb1-VTOL-LtHE,NULL,NULL,6 -V-Scor-BB,Rocket-VTOL-BB,NULL,NULL,6 -V-Scor-Lancer,Rocket-VTOL-LtA-T,NULL,NULL,6 -V-Scor-HPV,Cannon4AUTO-VTOL,NULL,NULL,6 -A-Python-Trk-Lancer,Rocket-LtA-T,NULL,NULL,6 -A-Mantis-Trk-Lancer,Rocket-LtA-T,NULL,NULL,6 -A-Veng-Trk-TK,Rocket-HvyA-T,NULL,NULL,6 -V-Mantis-Lancer,Rocket-VTOL-LtA-T,NULL,NULL,6 -V-Mantis-HPV,Cannon4AUTO-VTOL,NULL,NULL,6 -A-Viper-Trk-MG,MG1Mk1,NULL,NULL,6 -A-Viper-Trk-TMG,MG2Mk1,NULL,NULL,6 -A-Viper-Trk-HMG,MG3Mk1,NULL,NULL,6 -A-Cobra-Trk-HMG,MG3Mk1,NULL,NULL,6 -A-Scorp-Trk-MC,Cannon2A-TMk1,NULL,NULL,6 -Cobra-Hover-HC,Cannon375mmMk1,NULL,NULL,6 -H-Scorp-Trk-Lancer,Rocket-LtA-T,NULL,NULL,6 -H-Scorp-Trk-HC,Cannon375mmMk1,NULL,NULL,6 -H-Scorp-VTOL-Lancer,Rocket-VTOL-LtA-T,NULL,NULL,6 -H-Scorp-VTOL-BB,Rocket-VTOL-BB,NULL,NULL,6 -Viper-Trk-Com,CommandTurret1,NULL,NULL,6 -Cobra-Trk-Com,CommandTurret1,NULL,NULL,6 -Scorp-Trk-Com,CommandTurret1,NULL,NULL,6 -Mantis-Trk-Com,CommandTurret1,NULL,NULL,6 -CobraTrkLancer,Rocket-LtA-T,NULL,NULL,6 -MantisTrkHC,Cannon375mmMk1,NULL,NULL,6 -MantisTKTracks,Rocket-HvyA-T,NULL,NULL,6 -ScorpTrkHMG,MG3Mk1,NULL,NULL,6 -CobraBBTracks,Rocket-BB,NULL,NULL,6 -ScorpBBTracks,Rocket-BB,NULL,NULL,6 -MantisBBTracks,Rocket-BB,NULL,NULL,6 -MantisScourgeTracks,Missile-A-T,NULL,NULL,6 -ViperTrkLancer,Rocket-LtA-T,NULL,NULL,6 -CobraPODHTracks,Rocket-Pod,NULL,NULL,6 -CobraPODTracks,Rocket-Pod,NULL,NULL,6 -CobraMRLTracks,Rocket-MRL,NULL,NULL,6 -CobraInfernoHTracks,Flame2,NULL,NULL,6 -PythonHoverHVC,Cannon4AUTOMk1,NULL,NULL,6 -PythonScourgeTracks,Missile-A-T,NULL,NULL,6 -PythonGaussTracks,RailGun3Mk1,NULL,NULL,6 -PythonPulseTracks,Laser2PULSEMk1,NULL,NULL,6 -TigerPulseTracks,Laser2PULSEMk1,NULL,NULL,6 -TigerHvLaserTracks,HeavyLaser,NULL,NULL,6 -WyvernGaussTracks,RailGun3Mk1,NULL,NULL,6 -WyvernPulseTracks,Laser2PULSEMk1,NULL,NULL,6 -WyvernHvLaserTracks,HeavyLaser,NULL,NULL,6 -ViperLtMGHalfTracks,MG1Mk1,NULL,NULL,6 -ViperFlameHalfTracks,Flame1Mk1,NULL,NULL,6 -PythonMedCanTracks,Cannon2A-TMk1,NULL,NULL,6 -PythonTKTracks,Rocket-HvyA-T,NULL,NULL,6 -CobraInfernoHover,Flame2,NULL,NULL,6 -CobraMedCnHTrks,Cannon2A-TMk1,NULL,NULL,6 -PythonHoverInferno,Flame2,NULL,NULL,6 -PhytonHoverAssGun,MG4ROTARYMk1,NULL,NULL,6 -PhytonHTrackAssGun,MG4ROTARYMk1,NULL,NULL,6 -ScorpHTrackHMG,MG1Mk1,NULL,NULL,6 -MantisHoverAC,Cannon5VulcanMk1,NULL,NULL,6 -LeopardHoverPulseLas,Laser2PULSEMk1,NULL,NULL,6 -PantherHoverPulseLas,Laser2PULSEMk1,NULL,NULL,6 -TigerHoverPulseLas,Laser2PULSEMk1,NULL,NULL,6 -TigerHoverRailGun,RailGun2Mk1,NULL,NULL,6 -WyvernScourgeTracks,Missile-A-T,NULL,NULL,6 -WyvernPlasmaCTracks,Laser4-PlasmaCannon,NULL,NULL,6 -RetreHoverFlashLight,Laser3BEAMMk1,NULL,NULL,6 -ViperPODHalfTracks,Rocket-Pod,NULL,NULL,6 -ViperMRLHalfTracks,Rocket-MRL,NULL,NULL,6 -SK-Mantis-VTOL-PBB,Bomb3-VTOL-LtINC,NULL,NULL,6 -SK-Mantis-VTOL-HBB,Bomb2-VTOL-HvHE,NULL,NULL,6 -SK-Retre-VTOL-HBB,Bomb2-VTOL-HvHE,NULL,NULL,6 -SK-Retal-VTOL-Scourge,Missile-VTOL-AT,NULL,NULL,6 -ZNULLDESIGN,ZNULLWEAPON,ZNULLWEAPON,ZNULLWEAPON,0 diff --git a/data/mods/multiplay/dydo-ai/stats/body.txt b/data/mods/multiplay/dydo-ai/stats/body.txt deleted file mode 100644 index b000dc663..000000000 --- a/data/mods/multiplay/dydo-ai/stats/body.txt +++ /dev/null @@ -1,49 +0,0 @@ -Body key,Unused,Size,Build power,Build points,Weight,Body points,Body model,Unused,Weapon slots,Engine power,AFRK,AFRH,AREK,AREH,ALEK,ALEH,ARIK,ARIH,ATOK,ATOH,ABOK,ABOH,Flame model,Designable -ZNULLBODY,Level All,LIGHT,0,0,0,0,MIBNKBOD.PIE,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -TransporterBody,Level All,MEDIUM,325,637,250,200,drcytran.pie,100,1,2000,20,9,20,9,20,9,20,9,20,9,20,9,0,0 -Superbody,Level All,HEAVY,10,10,2700,9000,DRHBOD11.PIE,500,1,40000,999,999,999,999,999,999,999,999,999,999,999,999,0,0 -FireBody,Level One,LIGHT,4,75,3000,200,EXFIRE.PIE,50,1,4000,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -CybRotMgGrd,Level All,LIGHT,21,75,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgRkt1Ground,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgFlamerGrd,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgChain1Ground,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgCannonGrd,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CybNXRail1Jmp,Level All,LIGHT,25,95,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 -CybNXPulseLasJmp,Level All,LIGHT,25,95,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 -CybNXMissJmp,Level All,LIGHT,25,95,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 -CybFlamer01CGrd,Level All,LIGHT,21,75,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Hvybod-TK,Level Two,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-RailGunner,Level Three,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-PulseLsr,Level Three,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-Mcannon,Level Two,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-HPV,Level Two,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-Acannon,Level Two,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-A-T,Level Three,LIGHT,50,205,250,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Bod-Thermite,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Rail1,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Mechanic,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Las1,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Grenade,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-ComEng,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Atmiss,Level All,LIGHT,25,95,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -BusBody,Level One,LIGHT,4,75,2000,200,EXSCHOOL.PIE,50,1,4000,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -Body9REC,Level All,HEAVY,71,420,3300,225,DRHBOD09.PIE,500,1,18000,22,15,22,15,22,15,22,15,22,15,22,15,fxvtl09.pie,1 -Body8MBT,Level All,MEDIUM,39,250,1500,125,DRMBOD08.PIE,250,1,15000,12,12,12,12,12,12,12,12,12,12,12,12,fxvtl5to8.pie,1 -Body7ABT,Level Three,MEDIUM,100,600,1500,200,DRMBOD07.PIE,250,1,15000,24,20,24,20,24,20,24,20,24,20,24,20,fxvtl5to8.pie,1 -Body6SUPP,Level Two-Three,MEDIUM,57,300,2500,145,DRMBOD06.PIE,250,1,13000,18,9,18,9,18,9,18,9,18,9,18,9,fxvtl5to8.pie,1 -Body5REC,Level All,MEDIUM,46,250,2000,130,DRMBOD05.PIE,250,1,15000,15,6,15,6,15,6,15,6,15,6,15,6,fxvtl5to8.pie,1 -Body4ABT,Level All,LIGHT,25,100,450,55,DRLBOD04.PIE,100,1,5000,8,8,8,8,8,8,8,8,8,8,8,8,fxvtl04.pie,1 -Body3MBT,Level Three,LIGHT,68,400,450,100,DRLBOD03.PIE,100,1,5000,20,15,20,15,20,15,20,15,20,15,20,15,fxvtl2and3.pie,1 -Body2SUP,Level All,LIGHT,41,220,750,85,DRLBOD02.PIE,100,1,4000,12,6,12,6,12,6,12,6,12,6,12,6,fxvtl2and3.pie,1 -Body1REC,Level All,LIGHT,30,150,600,65,DRLBOD01.PIE,100,1,5000,10,4,10,4,10,4,10,4,10,4,10,4,fxvtl01.pie,1 -Body14SUP,Level Three,HEAVY,182,1000,6000,350,DRHBOD14.PIE,500,2,30000,30,30,30,30,30,30,30,30,30,30,30,30,fxvtl12.pie,1 -Body13SUP,Level Three,HEAVY,156,900,5000,350,DRMBOD13.PIE,500,1,25000,28,28,28,28,28,28,28,28,28,28,28,28,fxvtl12.pie,1 -Body12SUP,Level All,HEAVY,52,350,2100,180,DRHBOD12.PIE,500,1,20000,18,18,18,18,18,18,18,18,18,18,18,18,fxvtl12.pie,1 -Body11ABT,Level All,HEAVY,60,350,2700,200,DRHBOD11.PIE,500,1,20000,20,9,20,9,20,9,20,9,20,9,20,9,fxvtl11.pie,1 -Body10MBT,Level Three,HEAVY,130,800,2500,300,DRHBOD10.PIE,500,1,23000,28,25,28,25,28,25,28,25,28,25,28,25,fxvtl10.pie,1 -B4body-sml-trike01,Level One,LIGHT,2,65,675,80,extrike.PIE,35,1,2100,1,1,1,1,1,1,1,1,1,1,1,1,0,0 -B3bodyRKbuggy01,Level One,LIGHT,3,80,900,100,exbugRK.PIE,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 -B3body-sml-buggy01,Level One,LIGHT,3,80,900,100,exbuggy.PIE,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 -B2RKJeepBody,Level One,LIGHT,4,75,900,120,EXjeepRK.PIE,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -B2JeepBody,Level One,LIGHT,4,75,900,120,EXjeep.PIE,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -B1BaBaPerson01,Level All,HEAVY,1,20,100,29,EXBLOKE.PIE,50,1,125,1,1,1,1,1,1,1,1,1,1,1,1,0,0 diff --git a/data/mods/multiplay/dydo-ai/stats/templates.txt b/data/mods/multiplay/dydo-ai/stats/templates.txt deleted file mode 100644 index 6bfaf631f..000000000 --- a/data/mods/multiplay/dydo-ai/stats/templates.txt +++ /dev/null @@ -1,365 +0,0 @@ -ConstructionDroid,140,Body1REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,0,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -BarbarianTrike,139,B4body-sml-trike01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BarbarianBuggy,150,B3body-sml-buggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BaBaPeople,158,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -ViperLtCannonWheels,177,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperLtCannonHTracks,178,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BabaJeep,194,B2JeepBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ConstructorDroid,249,Body1REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,5,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -ViperLtCannonTracks,257,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMedCnTrks,263,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraLtCnTrks,266,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMedCnTrks,267,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHvyCnTrks,268,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonLtCnTrks,269,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonHvyCnTrks,271,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperFlameWheels,274,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperSensorWheels,275,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -BabaRKJeep,276,B2RKJeepBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BarbarianRKBuggy,277,B3bodyRKbuggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Transporter,278,TransporterBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,V-Tol,ZNULLREPAIR,TRANSPORTER,DefaultSensor1Mk1,1 -BabaBusCan,289,BusBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BabaFireCan,290,FireBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-RocketPod-Wheels,311,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-MRLS-Halftrack,312,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-HMG-Halftrack,313,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-LtAT-Halftrack,314,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-Sensor-Wheels,315,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -NP-M-Command-Halftrack,316,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-Sensor-Wheels,317,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -NP-M-MdCannon-Halftrack,318,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-MdCannon-Tracks,319,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-LtMortar-Halftrack,320,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-HvyMortar-Halftrack,321,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-BB-Halftrack,322,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-H-MdCannon-Tracks,323,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-H-HvyCannon-Tracks,324,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cyb-Chain-GROUND,325,CyborgChain1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CO-H-How105-Tracks,328,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-How150-Tracks,329,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-HvyCan-Tracks,330,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-MedCan-Tracks,336,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Sensor-T,337,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -CyborgFlamer01Grd,341,CyborgFlamerGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CyborgRkt01Ground,342,CyborgRkt1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CyborgCannon01Grd,343,CyborgCannonGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CyborgChain01Ground,344,CyborgChain1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CobraMortarHalfTrack,346,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHMGHalfTrack,347,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Con-T,350,Body6SUPP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -BabaFireTruck,354,FireBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BabaPickUp,355,B2RKJeepBody,ZNULLBRAIN,Spade1Mk1,ZNULLECM,7,ZNULLPROP,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -NX-M-Rail2-Hover,363,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-PulseLas-VTOL,365,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Missile-A-T-VTOL,366,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Sens-Hov,369,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -NX-M-Missile-A-T-Hover,371,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-M-Com-Hover,376,Body7ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-Cyb-Rail1-JUMP,377,CybNXRail1Jmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 -NX-Cyb-PulseLas-JUMP,378,CybNXPulseLasJmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 -NX-Cyb-Miss-JUMP,379,CybNXMissJmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 -SuperTank,380,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-LitCannon-Halftrack,381,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-M-Con-Hover,382,Body7ABT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,0 -SuperTank2,383,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-L-Repair-Hover,384,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,LightRepair1,DROID,NavGunSensor,0 -ATESTVEHICLE,387,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ZNULLDESIGN,389,ZNULLBODY,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,ZNULLPROP,ZNULLREPAIR,ZNULLDROID,ZNULLSENSOR,0 -NP-M-LtAT-Hover,391,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-H-HvyCannon-Hover,392,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-MG3-Hover,393,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ATESTVTOL,394,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ASPOTTER,395,Cyb-Hvybod-HPV,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -NP-M-CON-HalfTrack,397,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -NP-M-CON-Track,398,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -NP-M-Repair-HalfTrack,399,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -NP-M-Command-Track,400,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-CBS-Halftrack,402,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,Sys-CBTurret01,0 -NP-L-LtCannon-Halftrack,403,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Repair-T,405,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -CO-M-Vstrike-T,407,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,Sys-VstrikeTurret01,0 -CO-M-VTOLCBS-T,408,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,Sys-VTOLCBTurret01,0 -CO-H-Command-Track,410,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HMG-T,411,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-LTAT-Hover,412,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HPVCannon-Tracks,413,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Rocket-LtA-T-T,415,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Rocket-HvyA-T-Track,417,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-RotCan-Track,418,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-HPVCannon-Tracks,419,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-Rkt-BB-T,420,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HvMortar-T,421,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-RotMortar-T,422,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-RotHow-Track,423,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-L-Rocket-LtA-T-VTOL,424,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-COM-H,425,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-L-RotMG-VTOL,426,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Bomb1-VTOL,427,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Bomb2-VTOL,428,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-QuadBofAA-T,429,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-QuadRotAA-T,430,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-M-Link-Hover,431,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-CBS-Hover,432,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,Sys-CBTurret01,0 -NX-M-Strike-Hover,433,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,Sys-VstrikeTurret01,0 -NX-M-VTOLCBS-Hover,434,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,Sys-VTOLCBTurret01,0 -NX-M-PulseLas-Hover,437,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-Rail3-Hover,438,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Flash-Hover,439,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Missile-MdArt-Hover,440,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-HvMiss-Hover,441,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Rail1-VTOL,443,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-Rail2-VTOL,444,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -Cyb-Flamer-GROUND,446,CyborgFlamerGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Cannon-GROUND,447,CyborgCannonGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Rocket-GROUND,448,CyborgRkt1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-RotMG-GROUND,449,CybRotMgGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -BaBaCivilian,451,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,0 -ViperRepairWheels,452,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,LightRepair1,DROID,DefaultSensor1Mk1,0 -ViperRepairHalftrack,453,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,LightRepair1,DROID,DefaultSensor1Mk1,0 -ViperMG01Wheels,454,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMG02Wheels,455,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMG02Halftrack,456,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperHMGHalftrack,457,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperHMGTracks,458,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperLtA-Twheels,459,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperPODWheels,460,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMRLWheels,461,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperBBWheels,462,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraSpadeTracks,463,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -CobraSensorHalftrack,464,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -CobraFlameTracks,466,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHvyMortarHalftrack,467,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraComHalftrack,468,Body5REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraLtA-Thalftrack,469,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMRLHalftrack,470,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonComTracks,471,Body11ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonMedCnTrks,472,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0PythonHvyCnTrks,481,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraSpadeTracks,482,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -P0CobraFlameTracks,483,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraMedCnTrks,484,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HvFlame-Track,495,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-RR-HT,496,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-CBS-T,497,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,Sys-CBTurret01,0 -CO-M-ROTMG-T,498,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HVAT-V,499,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraLtATRktHtrack,500,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraHvyMGHtrack,501,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0PythonComTracks,502,Body11ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HVAT-Hover,503,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraRepairTrks,504,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -CO-L-Bomb1-VTOL,505,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cyb-Atmiss-GROUND,506,Cyb-Bod-Atmiss,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Laser1-GROUND,508,Cyb-Bod-Las1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Rail1-GROUND,509,Cyb-Bod-Rail1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -P6-L-LTAT-V,510,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P6-L-Bomb1-V,511,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P6-M-QMG1-HT,512,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3CobCONTrk,513,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -P0cam3PyHvyATTrk,514,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3PyHPVcanTrk,515,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3PyFlakHT,516,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3PyAsltGnTrk,517,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-M-Bomb4-VTOL,518,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-M-HvSam-Hover,519,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Link-Hov,520,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-M-Bomb2-VTOL,521,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -CyborgRotMgGround,522,CybRotMgGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Sk-PythonHvCanTrack,523,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Sk-CobraBBHover,524,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MP-Cyb-Laser1-GRD,525,Cyb-Bod-Las1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -MP-Cyb-ATmiss-GRD,526,Cyb-Bod-Atmiss,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -SK-Cobra-Hover-HMG,527,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Hover-BB,528,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Hover-Lancer,529,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Hover-Mcannon,530,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Hover-Hcannon,531,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Hover-Lancer,532,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Track-Hcannon,533,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Track-HVC,534,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Track-TK,535,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Bug-Hover-HMG,536,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-ASGUN,537,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-Mcannon,538,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-Bombard,539,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-Lancer,540,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-BB,541,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-Hover-Hcannon,542,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-Hover-HVC,543,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-Track-Lancer,544,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-HTrk-ASGun,545,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Track-HVC,546,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Hover-HVC,547,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Track-TK,548,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Hover-TK,549,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Htrk-ASGun,550,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Htrk-BB,551,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-Hcannon,552,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-Hcannon,553,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-HVC,554,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-HVC,555,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-TK,556,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-TK,557,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-ASCannon,558,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-ASCannon,559,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-Htrk-Needle,561,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-Hover-Needle,562,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Track-RailGun,564,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-Scourge,565,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-Scourge,566,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-Gauss,567,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-Gauss,568,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retal-Track-Needle,569,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-PulseLsr,570,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-FlashLight,571,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Htrk-Pepper,572,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-RailGun,573,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Hover-RailGun,574,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-Scourge,575,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Hover-Scourge,576,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-Gauss,577,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Hover-Gauss,578,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-PulseLsr,579,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Hover-PulseLsr,580,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-Scourge,581,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Hover-Scourge,582,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Bug-Hover-Sensor,583,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -SK-Bug-Hover-Repair,584,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Leopard-Hover-Sensor,585,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -SK-Leopard-Hover-Repair,586,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Panther-Track-Repair,587,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Retal-Hover-Repair,588,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Retal-Hover-Sensor,589,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -SK-Bug-VTOL-CLBomb,590,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Bug-VTOL-BB,591,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorpion-VTOL-BB,592,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorpion-VTOL-Hbomb,593,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-VTOL-BB,594,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-VTOL-BB,595,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-VTOL-PhosBomb,596,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-Thermite,597,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-BB,598,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-Phosbomb,599,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-TK,600,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retal-VTOL-Phosbomb,601,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-Thermite,602,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-PulseLsr,603,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-Scourge,604,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MP-Cyb-Needle-GRD,608,Cyb-Bod-Rail1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Thermite,609,Cyb-Bod-Thermite,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Gren,610,Cyb-Bod-Grenade,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-ComEng,611,Cyb-Bod-ComEng,ZNULLBRAIN,CyborgSpade,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_CONSTRUCT,DefaultSensor1Mk1,0 -Cyb-Mechanic,612,Cyb-Bod-Mechanic,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,CyborgRepair,CYBORG_REPAIR,DefaultSensor1Mk1,0 -Cyb-Hvy-Mcannon,613,Cyb-Hvybod-Mcannon,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-Acannon,614,Cyb-Hvybod-Acannon,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-PulseLsr,619,Cyb-Hvybod-PulseLsr,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-TK,617,Cyb-Hvybod-TK,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-HPV,618,Cyb-Hvybod-HPV,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-RailGunner,620,Cyb-Hvybod-RailGunner,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-A-T,621,Cyb-Hvybod-A-T,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -SK-Veng-Track-C6TwinAslt,622,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-HvyLaser,623,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHRepairHover,625,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,HeavyRepair,DROID,DefaultSensor1Mk1,0 -ViperHMGWheels,626,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Scourge-Mantis-H,627,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHMGTracks,628,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Wheels-MG,629,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Wheels-TMG,630,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Wheels-HMG,631,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Wheels-HMG,632,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Hover-HMG,633,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Hover-MC,634,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Scorp-Hover-MC,635,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Hover-MC,636,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Hover-HC,637,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Trk-HC,638,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Tiger-Trk-HC,639,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Tiger-Trk-Needle,640,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Retrib-Trk-Needle,641,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Needle,642,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Rail,643,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Guass,644,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Scourge,645,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Mantis-Trk-Pulse,646,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Mantis-Trk-Rail,647,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-ClusterBomb,648,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-BB,649,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-Lancer,650,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-HPV,651,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-ClusterBomb,652,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-BB,653,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-Lancer,654,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-HPV,655,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Trk-Lancer,656,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Mantis-Trk-Lancer,657,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-TK,658,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Mantis-Lancer,659,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Mantis-HPV,660,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Rep-Cobra-Trk,661,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -A-Rep-Mantis-Trk,662,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,HeavyRepair,DROID,DefaultSensor1Mk1,0 -A-Viper-Trk-MG,663,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Trk-TMG,664,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Trk-HMG,665,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Trk-HMG,666,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Scorp-Trk-MC,667,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TK-Mantis-H,684,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cobra-Hover-HC,685,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-Trk-Lancer,687,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-Trk-HC,688,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-VTOL-Lancer,689,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-VTOL-BB,689,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Viper-Trk-Com,690,Body1REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cobra-Trk-Com,691,Body5REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Scorp-Trk-Com,692,Body8MBT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraTrkLancer,693,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisTrkHC,694,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisTKTracks,695,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpTrkHMG,696,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpRepairTrk,697,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -ScorpHRepairHover,698,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,HeavyRepair,DROID,DefaultSensor1Mk1,0 -CobraHoverTruck,699,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -ScorpHoverTruck,700,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -MantisHoverTruck,701,Body12SUP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -CobraBBTracks,702,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpBBTracks,703,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisBBTracks,704,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Mantis-Trk-Com,705,Body12SUP,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisScourgeTracks,706,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperTrkLancer,707,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraPODHTracks,708,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraPODTracks,709,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMRLTracks,710,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraInfernoHTracks,711,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonHoverHVC,712,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonScourgeTracks,713,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonGaussTracks,714,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonPulseTracks,715,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TigerPulseTracks,717,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TigerHvLaserTracks,718,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernGaussTracks,719,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernPulseTracks,720,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernHvLaserTracks,721,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperLtMGHalfTracks,722,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperFlameHalfTracks,723,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonMedCanTracks,724,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonTKTracks,725,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraInfernoHover,726,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMedCnHTrks,727,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonHoverInferno,728,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PhytonHoverAssGun,729,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PhytonHTrackAssGun,730,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpHTrackHMG,731,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisHoverAC,732,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -LeopardHoverPulseLas,733,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PantherHoverPulseLas,734,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TigerHoverPulseLas,735,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TigerHoverRailGun,736,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernPlasmaCTracks,737,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernScourgeTracks,738,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -RetreHoverFlashLight,739,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperPODHalfTracks,740,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMRLHalfTracks,741,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-VTOL-PBB,742,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-VTOL-HBB,743,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-HBB,744,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retal-VTOL-Scourge,745,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 diff --git a/data/mods/multiplay/makefile.win32 b/data/mods/multiplay/makefile.win32 index 282c73a49..f7a2812ab 100644 --- a/data/mods/multiplay/makefile.win32 +++ b/data/mods/multiplay/makefile.win32 @@ -6,8 +6,7 @@ include $(top_srcdir)/makerules/common.mk DYDOAILIST = \ multiplay \ images \ - messages \ - stats + messages DYDOAIARCHIVE = dydo-ai.wz diff --git a/data/mods/multiplay/ntw/audio/multi/lasstrk.ogg b/data/mods/multiplay/ntw/audio/multi/lasstrk.ogg index 908510f56..44c6cc0ae 100644 Binary files a/data/mods/multiplay/ntw/audio/multi/lasstrk.ogg and b/data/mods/multiplay/ntw/audio/multi/lasstrk.ogg differ diff --git a/data/mods/multiplay/ntw/components/weapons/mine_vis.pie b/data/mods/multiplay/ntw/components/weapons/mine_vis.pie new file mode 100644 index 000000000..d4b2b21b7 --- /dev/null +++ b/data/mods/multiplay/ntw/components/weapons/mine_vis.pie @@ -0,0 +1,34 @@ +PIE 3 +TYPE 0 +TEXTURE 0 page-17-droid-weapons.png 0 0 +LEVELS 1 +LEVEL 1 +POINTS 17 + 5 1 8 + -3 4 6 + -5 1 8 + -6 4 0 + -9 1 0 + -5 1 -8 + -3 4 -6 + 5 1 -8 + 3 4 -6 + 0 4 0 + 9 1 0 + 3 4 6 + 6 4 0 + 12 1 12 + 12 1 -12 + -12 1 -12 + -12 1 12 +POLYGONS 10 + 200 4 11 1 2 0 196 156 176 156 176 176 196 176 + 200 4 1 3 4 2 13 180 0 180 0 191 13 191 + 200 4 3 6 5 4 13 180 0 180 0 191 13 191 + 200 4 6 8 7 5 0 180 13 180 13 191 0 191 + 200 4 8 12 10 7 0 180 13 180 13 191 0 191 + 200 4 11 12 8 9 141 51 145 59 141 67 136 59 + 200 4 3 1 11 9 127 59 131 51 141 51 136 59 + 200 4 8 6 3 9 141 67 131 67 127 59 136 59 + 200 4 12 11 0 10 0 180 13 180 13 191 0 191 + 200 4 13 14 15 16 180 28 165 28 165 43 180 43 \ No newline at end of file diff --git a/data/mods/multiplay/ntw/components/weapons/minevis.pie b/data/mods/multiplay/ntw/components/weapons/minevis.pie deleted file mode 100644 index 6c504dfc9..000000000 --- a/data/mods/multiplay/ntw/components/weapons/minevis.pie +++ /dev/null @@ -1,34 +0,0 @@ -PIE 2 -TYPE 200 -TEXTURE 0 page-17-droid-weapons.png 256 256 -LEVELS 1 -LEVEL 1 -POINTS 17 - 5 1 8 - -3 4 6 - -5 1 8 - -6 4 0 - -9 1 0 - -5 1 -8 - -3 4 -6 - 5 1 -8 - 3 4 -6 - 0 4 0 - 9 1 0 - 3 4 6 - 6 4 0 - 12 1 12 - 12 1 -12 - -12 1 -12 - -12 1 12 -POLYGONS 10 - 200 4 11 1 2 0 196 156 176 156 176 176 196 176 - 200 4 1 3 4 2 13 180 0 180 0 191 13 191 - 200 4 3 6 5 4 13 180 0 180 0 191 13 191 - 200 4 6 8 7 5 0 180 13 180 13 191 0 191 - 200 4 8 12 10 7 0 180 13 180 13 191 0 191 - 200 4 11 12 8 9 141 51 145 59 141 67 136 59 - 200 4 3 1 11 9 127 59 131 51 141 51 136 59 - 200 4 8 6 3 9 141 67 131 67 127 59 136 59 - 200 4 12 11 0 10 0 180 13 180 13 191 0 191 - 200 4 13 14 15 16 180 28 165 28 165 43 180 43 diff --git a/data/mods/multiplay/ntw/doc/readme.txt b/data/mods/multiplay/ntw/doc/readme.txt index d757a4afa..77e942f57 100644 --- a/data/mods/multiplay/ntw/doc/readme.txt +++ b/data/mods/multiplay/ntw/doc/readme.txt @@ -16,49 +16,48 @@ Thanks to everyone for licensing their work GPL2+ so it could be compiled into t =============== Credits =============== NTW Mod: - Compiled and Made by Delphinio - jurgfrnd@aol.com + Compiled and Made by Delphinio - jurgfrnd@aol.com New Team War Map 1 (New_TeamWar): - Made by LPC_Actinia - Idea by GOD-Lordy + Made by LPC_Actinia + Idea by GOD-Lordy New Team War Map 2 (NTW_ver2): - Made by Delphinio - jurgfrnd@aol.com - + Made by Delphinio - jurgfrnd@aol.com + Idea by GOD-Lordy -------- Based on work by -------- -Walls / Gates(.pie files): - Elric - elrictheslayer@neo.rr.com - GrimMoroe - grimandmandy@hotmail.com +Walls: + Elric - elrictheslayer@neo.rr.com + GrimMoroe - grimandmandy@hotmail.com 1.12 Patch: - Stratadrake - strata_ranger@hotmail.com and http://en.wikipedia.org/wiki/User:Stratadrake + Stratadrake - strata_ranger@hotmail.com and http://en.wikipedia.org/wiki/User:Stratadrake -Nuclear Reactor & Cooling Tower Script / Ai Boost: - Kevin - kevin@etmalec.net and irc://irc.freenode.net/ as Kevin` - Speedy - http://capszwo.de/ +Nuclear Reactor & Cooling Tower Script: + Kevin - kevin@etmalec.net and irc://irc.freenode.net/ as Kevin` LiveOrDie / LOD Mod: - RSGod - stevenpardons@msn.com - NIKER - irc://irc.gamesurge.net/#warzoneeliteforce and http://wef.warzone2100.de/ + RSGod - stevenpardons@msn.com + NIKER - irc://irc.gamesurge.net/#warzoneeliteforce and http://wef.warzone2100.de/ NTW Mod Image: - Pychnight - war455@hotmail.com + Pychnight - war455@hotmail.com -AI - Aivolution: - Troman - temp@online.de or ICQ: 82378034 +AI - GK: + Troman - temp@online.de or ICQ: 82378034 -Fish, Dolphin, Whale Bodys (not the Textures): - Mertens - http://forums.wz2100.net +Fish, Dolphin, Whale Bodys (.pie Files, not .png): + Mertens - http://forums.wz2100.net -Factory Textures - Mysteryem - http://www.mysterymayhem.co.uk +Factory, Power & Button Textures + Mysteryem - http://www.mysterymayhem.co.uk Camo Textures - Black Project - http://forums.wz2100.net + Black Project - http://forums.wz2100.net The Rest is made/remade by me: - Delphinio - jurgfrnd@aol.com + Delphinio - jurgfrnd@aol.com =============== Special Thanks to =============== @@ -72,4 +71,4 @@ For a bit more "instant" tech/game talk, there is also an IRC-Channel called #warzone2100 on freenode. Due the fact that the most "official" guys live in europe, you may meet us there around late afternoon (CET) with a little luck. -But there are also some other nice guys which can may help you. +But there are also some other nice guys which can may help you. \ No newline at end of file diff --git a/data/mods/multiplay/ntw/images/frontend0.png b/data/mods/multiplay/ntw/images/frontend0.png index 3a7b55caa..dba22c473 100644 Binary files a/data/mods/multiplay/ntw/images/frontend0.png and b/data/mods/multiplay/ntw/images/frontend0.png differ diff --git a/data/mods/multiplay/ntw/images/frontend2.png b/data/mods/multiplay/ntw/images/frontend2.png new file mode 100644 index 000000000..875da8cb1 Binary files /dev/null and b/data/mods/multiplay/ntw/images/frontend2.png differ diff --git a/data/mods/multiplay/ntw/images/frontend3.png b/data/mods/multiplay/ntw/images/frontend3.png new file mode 100644 index 000000000..80e451860 Binary files /dev/null and b/data/mods/multiplay/ntw/images/frontend3.png differ diff --git a/data/mods/multiplay/ntw/images/frontend4.png b/data/mods/multiplay/ntw/images/frontend4.png new file mode 100644 index 000000000..581dc19c9 Binary files /dev/null and b/data/mods/multiplay/ntw/images/frontend4.png differ diff --git a/data/mods/multiplay/ntw/images/intfac0.png b/data/mods/multiplay/ntw/images/intfac0.png new file mode 100644 index 000000000..7ac7715a8 Binary files /dev/null and b/data/mods/multiplay/ntw/images/intfac0.png differ diff --git a/data/mods/multiplay/ntw/images/intfac1.png b/data/mods/multiplay/ntw/images/intfac1.png new file mode 100644 index 000000000..c25faff33 Binary files /dev/null and b/data/mods/multiplay/ntw/images/intfac1.png differ diff --git a/data/mods/multiplay/ntw/images/intfac2.png b/data/mods/multiplay/ntw/images/intfac2.png new file mode 100644 index 000000000..9b8a2426e Binary files /dev/null and b/data/mods/multiplay/ntw/images/intfac2.png differ diff --git a/data/mods/multiplay/ntw/images/intfac4.png b/data/mods/multiplay/ntw/images/intfac4.png new file mode 100644 index 000000000..f7ddf3098 Binary files /dev/null and b/data/mods/multiplay/ntw/images/intfac4.png differ diff --git a/data/mods/multiplay/ntw/images/intfac5.png b/data/mods/multiplay/ntw/images/intfac5.png new file mode 100644 index 000000000..b92930089 Binary files /dev/null and b/data/mods/multiplay/ntw/images/intfac5.png differ diff --git a/data/mods/multiplay/ntw/messages/strings/names.txt b/data/mods/multiplay/ntw/messages/strings/names.txt index 2ba1b743b..daf47bb8f 100644 --- a/data/mods/multiplay/ntw/messages/strings/names.txt +++ b/data/mods/multiplay/ntw/messages/strings/names.txt @@ -38,7 +38,7 @@ RailGun1-VTOL "VTOL Needle Gun" QuadRotAAGun "Whirlwind AA Turret" QuadMg1AAGun "Hurricane AA Turret" PlasmiteFlamer "Plasmite Flamer" -PlasmaHeavy "*NEXUS Plasma Cannon*" +PlasmaHeavy "Plasma Artillery" NX-CyborgPulseLas "*NEXUS Pulse Laser Cyborg*" NX-CyborgMiss "*NEXUS Scourge Cyborg*" NX-CyborgChaingun "*NEXUS Assault Gunner*" @@ -136,6 +136,9 @@ AAGunLaserVTOL "VTOL Tank Killer Laser" scv-Hvywpn-HPV "Scavenger Grenadier" EMP-Trap "EMP Tank Traps" AAS-weapon "Anti Aircraft Shield-Weapon" +GS-weapon "Anti Ground Shield-Weapon" +LasSat2 "Laser Satellite" +Incenediary-Mo "Incendiary Mortar" // Commander systems ZNULLBRAIN "*Z NULL BRAIN*" @@ -556,8 +559,8 @@ R-Cyborg-Wpn-Thermite "Thermite Flame Cyborg" R-Cyborg-Wpn-Grenade "Plasma Sniper Cyborg" R-Cyborg-Sys-ComEng "Combat Engineer Cyborg" R-Cyborg-Sys-Mechanic "Mechanic Cyborg" -R-Wpn-Howitzer-Incenediary "Incenediary Howitzer Artillery" -R-Defense-Howitzer-Incenediary "Incenediary Howitzer Artillery Site" +R-Wpn-Howitzer-Incenediary "Incendiary Howitzer Artillery" +R-Defense-Howitzer-Incenediary "Incendiary Howitzer Artillery Site" R-Wpn-Plasmite-Flamer "Plasmite Flamer" R-Defense-PlasmiteFlamer "Plasmite Flamer Bunker" R-Wpn-Mortar-Incenediary "Super Twin Cannon" @@ -954,7 +957,7 @@ R-Wpn-HvyLaser "Heavy Pulse Laser" R-Defense-HeavyLas "Heavy Pulse Laser Bunker" R-Sys-Sensor-WSTower "Wide Spectrum Sensor Tower" R-Sys-Sensor-UpLink "Satellite Uplink Center" -R-Wpn-LasSat "Mini Nuclear Missile Silo" +R-Wpn-LasSat "Mini Nuclear Missile Silo (Demolish, if you want the Laser Satellite)" R-Wpn-PlasmaCannon "Plasma Cannon" R-Cyborg-Hvywpn-PulseLsr "Super Pulse Laser Cyborg" R-Cyborg-Hvywpn-RailGunner "Super Rail Gun Cyborg" @@ -1006,8 +1009,17 @@ R-Defense-A0BaBaHorizontalWall "Scavenger Horizontal Wall" R-Defense-A0BaBaMortarPit "Scavenger Mortar Pit" R-Defense-A0BaBaRocketPit "Scavenger Pod Rockets Site" R-Defense-A0CannonTower "Scavenger Light Cannon Tower" +R-Wpn-GShield "Anti Ground Shield" +R-Defense-Plas-Art "Plasma Artillery Site" +R-Wpn-Plas-Art "Plasma Artillery" +R-Wpn-Incenediary-Mortar "Incendiary Mortar" +R-Defense-Incenediary-Mortar-Pit "Incendiary Mortar Pit" +R-Wpn-Laser-Sat "Laser Satellite (Demolish, if you want the Mini Nuclear Missile Silo)" // Structures +Laser-Sat "Laser Satellite (Demolish, if you want the Mini Nuclear Missile Silo)" +Incenediary-Mortar-Pit "Incendiary Mortar Pit" +GShield "Anti Ground Shield" GateGround "Gate Vertical" GateGround_h "Gate Horizontal" GateStake "Gate Door Vertical" @@ -1041,7 +1053,7 @@ A0CyborgFactory "Cyborg Factory" A0FacMod1 "Factory Module" A0HardcreteMk1CWall "Hardcrete Corner Wall" A0HardcreteMk1Wall "Hardcrete Wall" -A0LasSatCommand "Mini Nuclear Missile Silo" +A0LasSatCommand "Mini Nuclear Missile Silo (Demolish, if you want the Laser Satellite)" A0LightFactory "Scavenger Factory" A0PowerGenerator "Scavenger Power Generator" A0PowMod1 "Power Module" @@ -1107,7 +1119,7 @@ NX-ANTI-SATSite "Missile Silo" NX-CruiseSite "Missile Silo" NX-Emp-MedArtMiss-Pit "*NX-Emp-MedArtMiss-Pit*" NX-Emp-MultiArtMiss-Pit "*NX-Emp-MultiArtMiss-Pit*" -NX-Emp-Plasma-Pit "*NX-Emp-Plasma-Pit*" +NX-Emp-Plasma-Pit "Plasma Artillery Site" NX-Tower-ATMiss "*NX-Tower-ATMiss*" NX-Tower-PulseLas "*NX-Tower-PulseLas*" NX-Tower-Rail1 "*NX-Tower-Rail1*" diff --git a/data/mods/multiplay/ntw/multiplay/script/cam2tech.vlo b/data/mods/multiplay/ntw/multiplay/script/cam2tech.vlo index df1079265..63c58b723 100644 --- a/data/mods/multiplay/ntw/multiplay/script/cam2tech.vlo +++ b/data/mods/multiplay/ntw/multiplay/script/cam2tech.vlo @@ -6,8 +6,8 @@ run numCamTech int 114 initialPowerCl int 1000 -initialPowerBa int 2000 -initialPowerDe int 3000 +initialPowerBa int 1500 +initialPowerDe int 2000 camTech [0] RESEARCHSTAT "R-Comp-CommandTurret01" camTech [1] RESEARCHSTAT "R-Comp-SynapticLink" diff --git a/data/mods/multiplay/ntw/multiplay/script/cam3tech.vlo b/data/mods/multiplay/ntw/multiplay/script/cam3tech.vlo index eb5e7f81b..719a926c6 100644 --- a/data/mods/multiplay/ntw/multiplay/script/cam3tech.vlo +++ b/data/mods/multiplay/ntw/multiplay/script/cam3tech.vlo @@ -4,14 +4,14 @@ run //ALWAYS MAKE THIS THE SAME AS THE INDEX OF THE LAST ENTRY IN THE cam Tech[] array numCamTech int 252 //ALWAYS MAKE THIS THE ONE MORE THAN THE INDEX OF THE LAST ENTRY IN THE cam Tech[] array -numCamTechB int 13 +numCamTechB int 12 initialPowerCl int 2000 initialPowerBa int 3000 initialPowerDe int 4000 //tech level three -camTech [0] RESEARCHSTAT "R-Struc-Research-Upgrade09" +camTech [0] RESEARCHSTAT "R-Wpn-Incenediary-Mortar" //tech level all camTech [1] RESEARCHSTAT "R-Defense-HardcreteWall" @@ -134,7 +134,7 @@ camTech [115] RESEARCHSTAT "R-Wpn-Mortar-ROF01" camTech [116] RESEARCHSTAT "R-Wpn-Rocket02-MRL" camTech [117] RESEARCHSTAT "R-Wpn-Rocket-Damage03" camTech [118] RESEARCHSTAT "R-Wpn-Rocket-ROF02" -camTech [119] RESEARCHSTAT "R-Struc-Research-Upgrade07" +camTech [119] RESEARCHSTAT "R-Defense-Incenediary-Mortar-Pit" camTech [120] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy02" //tech level two @@ -284,5 +284,4 @@ camTechB [8] RESEARCHSTAT "R-Wpn-MG5" camTechB [9] RESEARCHSTAT "R-Wpn-Cannon-Damage07" camTechB [10] RESEARCHSTAT "R-Wpn-Cannon-Damage08" camTechB [11] RESEARCHSTAT "R-Wpn-Cannon-Damage09" -camTechB [12] RESEARCHSTAT "R-Struc-Research-Upgrade08" } diff --git a/data/mods/multiplay/ntw/multiplay/script/multilim.slo b/data/mods/multiplay/ntw/multiplay/script/multilim.slo index b54a317e1..ef67677f4 100644 --- a/data/mods/multiplay/ntw/multiplay/script/multilim.slo +++ b/data/mods/multiplay/ntw/multiplay/script/multilim.slo @@ -14,6 +14,7 @@ public STRUCTURESTAT repair; public STRUCTURESTAT vtolfact; public STRUCTURESTAT vtolpad; public STRUCTURESTAT lassat; +public STRUCTURESTAT lassat2; event initialisedEvent(init) { @@ -27,4 +28,5 @@ event initialisedEvent(init) setStructureLimits(vtolpad, 50, 0); setStructureLimits(oilDerrick, 30, 0); setStructureLimits(lassat, 1, 0); + setStructureLimits(lassat2, 1, 0); } diff --git a/data/mods/multiplay/ntw/multiplay/script/multilim.vlo b/data/mods/multiplay/ntw/multiplay/script/multilim.vlo index 5c24c1fd9..d8f5b0f1b 100644 --- a/data/mods/multiplay/ntw/multiplay/script/multilim.vlo +++ b/data/mods/multiplay/ntw/multiplay/script/multilim.vlo @@ -20,4 +20,5 @@ repair STRUCTURESTAT "A0RepairCentre3" vtolfact STRUCTURESTAT "A0VTolFactory1" vtolpad STRUCTURESTAT "A0VtolPad" lassat STRUCTURESTAT "A0LasSatCommand" +lassat2 STRUCTURESTAT "Laser-Sat" } diff --git a/data/mods/multiplay/ntw/multiplay/script/multiplay.slo b/data/mods/multiplay/ntw/multiplay/script/multiplay.slo index 2eea3f0e9..b845ebe7f 100644 --- a/data/mods/multiplay/ntw/multiplay/script/multiplay.slo +++ b/data/mods/multiplay/ntw/multiplay/script/multiplay.slo @@ -20,6 +20,7 @@ public STRUCTURESTAT NuclearReactor1; public STRUCTURESTAT CoolingTower1; public STRUCTURESTAT look; public STRUCTURESTAT shield; +public STRUCTURESTAT shield2; public STRUCTURESTAT command2; //////// @@ -243,6 +244,7 @@ event initialisedEvent(CALL_GAMEINIT) setStructureLimits(CoolingTower1, 4,playnum); setStructureLimits(look, 1, playnum); setStructureLimits(shield, 1, playnum); + setStructureLimits(shield2, 1, playnum); setStructureLimits(command2, 1, playnum); //----------------------------------------- @@ -411,7 +413,7 @@ event initialisedEventTwo(CALL_GAMEINIT) if(multiPlayerBaseType == CAMP_CLEAN) { - setPowerLevel(1300,playnum); + setPowerLevel(750,playnum); count = 0; while (count < numCleanTech) { @@ -422,7 +424,7 @@ event initialisedEventTwo(CALL_GAMEINIT) } else if(multiPlayerBaseType == CAMP_BASE) { - setPowerLevel(2500,playnum); + setPowerLevel(1000,playnum); count = 0; while (count < numBaseTech) { @@ -434,7 +436,7 @@ event initialisedEventTwo(CALL_GAMEINIT) else { - setPowerLevel(2500,playnum); + setPowerLevel(1250,playnum); count = 0; while (count < numDefTech) { diff --git a/data/mods/multiplay/ntw/multiplay/script/multiplay.vlo b/data/mods/multiplay/ntw/multiplay/script/multiplay.vlo index 7170370aa..1244fb512 100644 --- a/data/mods/multiplay/ntw/multiplay/script/multiplay.vlo +++ b/data/mods/multiplay/ntw/multiplay/script/multiplay.vlo @@ -29,6 +29,7 @@ NuclearReactor1 STRUCTURESTAT "NuclearReactor" CoolingTower1 STRUCTURESTAT "CoolingTower" look STRUCTURESTAT "LookOutTower" shield STRUCTURESTAT "AAShield" +shield2 STRUCTURESTAT "GShield" command2 STRUCTURESTAT "A0CommandCentreDEL" // Technologies diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player0.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player0.vlo index 965081dae..15396b195 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player0.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player0.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -233,10 +233,3 @@ run DebugMsg[13] TEXTSTRING "Debug_msg_14" //BASE: Base attacked. Defending. DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player1.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player1.vlo index c8f388b9d..a2ca548ad 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player1.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player1.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player2.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player2.vlo index bb91599bb..62da82daa 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player2.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player2.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player3.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player3.vlo index 44dcc7f5b..197f8e943 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player3.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player3.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player4.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player4.vlo index 645461634..97d886f82 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player4.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player4.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player5.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player5.vlo index 6f3f09d8b..202e99fe7 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player5.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player5.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player6.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player6.vlo index e18d69b64..db7ff47f0 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player6.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player6.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/player7.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/player7.vlo index 879388106..6fee36398 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/player7.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/player7.vlo @@ -72,8 +72,8 @@ run //AA numVtolDefStr INT 2 - vtolDefStruct[0] STRUCTURESTAT "P0-AASite-SAM1" - vtolDefStruct[1] STRUCTURESTAT "P0-AASite-SAM2" + vtolDefStruct[0] STRUCTURESTAT "WallTower-QuadRotAAGun" + vtolDefStruct[1] STRUCTURESTAT "WallTower-QuadRotAAGun" //Combat Templates numTemplates INT 12 @@ -234,9 +234,3 @@ run DebugMsg[14] TEXTSTRING "Debug_msg_15" //BASE: Agressive defence. } - - - - - - diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/rules.slo b/data/mods/multiplay/ntw/multiplay/skirmish/rules.slo index 2eea3f0e9..b845ebe7f 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/rules.slo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/rules.slo @@ -20,6 +20,7 @@ public STRUCTURESTAT NuclearReactor1; public STRUCTURESTAT CoolingTower1; public STRUCTURESTAT look; public STRUCTURESTAT shield; +public STRUCTURESTAT shield2; public STRUCTURESTAT command2; //////// @@ -243,6 +244,7 @@ event initialisedEvent(CALL_GAMEINIT) setStructureLimits(CoolingTower1, 4,playnum); setStructureLimits(look, 1, playnum); setStructureLimits(shield, 1, playnum); + setStructureLimits(shield2, 1, playnum); setStructureLimits(command2, 1, playnum); //----------------------------------------- @@ -411,7 +413,7 @@ event initialisedEventTwo(CALL_GAMEINIT) if(multiPlayerBaseType == CAMP_CLEAN) { - setPowerLevel(1300,playnum); + setPowerLevel(750,playnum); count = 0; while (count < numCleanTech) { @@ -422,7 +424,7 @@ event initialisedEventTwo(CALL_GAMEINIT) } else if(multiPlayerBaseType == CAMP_BASE) { - setPowerLevel(2500,playnum); + setPowerLevel(1000,playnum); count = 0; while (count < numBaseTech) { @@ -434,7 +436,7 @@ event initialisedEventTwo(CALL_GAMEINIT) else { - setPowerLevel(2500,playnum); + setPowerLevel(1250,playnum); count = 0; while (count < numDefTech) { diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/rules.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/rules.vlo index 7170370aa..1244fb512 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/rules.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/rules.vlo @@ -29,6 +29,7 @@ NuclearReactor1 STRUCTURESTAT "NuclearReactor" CoolingTower1 STRUCTURESTAT "CoolingTower" look STRUCTURESTAT "LookOutTower" shield STRUCTURESTAT "AAShield" +shield2 STRUCTURESTAT "GShield" command2 STRUCTURESTAT "A0CommandCentreDEL" // Technologies diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/sk2tech.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/sk2tech.vlo index 6c1357ef1..8f6266d83 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/sk2tech.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/sk2tech.vlo @@ -6,8 +6,8 @@ run numCamTech int 114 initialPowerCl int 1000 -initialPowerBa int 2000 -initialPowerDe int 3000 +initialPowerBa int 1500 +initialPowerDe int 2000 camTech [0] RESEARCHSTAT "R-Comp-CommandTurret01" camTech [1] RESEARCHSTAT "R-Comp-SynapticLink" diff --git a/data/mods/multiplay/ntw/multiplay/skirmish/sk3tech.vlo b/data/mods/multiplay/ntw/multiplay/skirmish/sk3tech.vlo index c14ebfd6f..f4f5d225d 100644 --- a/data/mods/multiplay/ntw/multiplay/skirmish/sk3tech.vlo +++ b/data/mods/multiplay/ntw/multiplay/skirmish/sk3tech.vlo @@ -4,14 +4,14 @@ run //ALWAYS MAKE THIS THE SAME AS THE INDEX OF THE LAST ENTRY IN THE cam Tech[] array numCamTech int 252 //ALWAYS MAKE THIS THE ONE MORE THAN THE INDEX OF THE LAST ENTRY IN THE cam Tech[] array -numCamTechB int 13 +numCamTechB int 12 initialPowerCl int 2000 initialPowerBa int 3000 initialPowerDe int 4000 //tech level three -camTech [0] RESEARCHSTAT "R-Struc-Research-Upgrade09" +camTech [0] RESEARCHSTAT "R-Wpn-Incenediary-Mortar" //tech level all camTech [1] RESEARCHSTAT "R-Defense-HardcreteWall" @@ -134,7 +134,7 @@ camTech [115] RESEARCHSTAT "R-Wpn-Mortar-ROF01" camTech [116] RESEARCHSTAT "R-Wpn-Rocket02-MRL" camTech [117] RESEARCHSTAT "R-Wpn-Rocket-Damage03" camTech [118] RESEARCHSTAT "R-Wpn-Rocket-ROF02" -camTech [119] RESEARCHSTAT "R-Struc-Research-Upgrade07" +camTech [119] RESEARCHSTAT "R-Defense-Incenediary-Mortar-Pit" camTech [120] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy02" //tech level two @@ -284,5 +284,4 @@ camTechB [8] RESEARCHSTAT "R-Wpn-MG5" camTechB [9] RESEARCHSTAT "R-Wpn-Cannon-Damage07" camTechB [10] RESEARCHSTAT "R-Wpn-Cannon-Damage08" camTechB [11] RESEARCHSTAT "R-Wpn-Cannon-Damage09" -camTechB [12] RESEARCHSTAT "R-Struc-Research-Upgrade08" } diff --git a/data/mods/multiplay/ntw/stats/body.txt b/data/mods/multiplay/ntw/stats/body.txt index 094ef49b2..24f11781f 100644 --- a/data/mods/multiplay/ntw/stats/body.txt +++ b/data/mods/multiplay/ntw/stats/body.txt @@ -42,8 +42,8 @@ Body3MBT,Level Three,LIGHT,100,400,450,100,DRLBOD03.PIE,100,1,5000,20,15,20,15,2 Body5REC,Level All,MEDIUM,50,250,2000,130,DRMBOD05.PIE,250,1,15000,18,6,18,6,18,6,18,6,18,6,18,6,fxvtl5to8.Pie,1 Body8MBT,Level All,MEDIUM,40,250,1500,125,DRMBOD08.PIE,250,1,15000,12,12,12,12,12,12,12,12,12,12,12,12,fxvtl5to8.Pie,1 SEBody2,Level All,MEDIUM,50,300,1200,130,SEbod2.pie,250,1,15000,9,17,9,17,9,17,9,17,9,17,9,17,fxvtl5to8.Pie,1 -SABody2,Level All,MEDIUM,60,330,1950,138,SAbod2.pie,250,1,17000,11,17,11,17,11,17,11,17,11,17,11,17,fxvtl5to8.Pie,1 -Body6SUPP,Level Two-Three,MEDIUM,60,400,2500,145,DRMBOD06.PIE,250,1,17000,18,12,18,12,18,12,18,12,18,12,18,12,fxvtl5to8.Pie,1 +SABody2,Level All,MEDIUM,60,330,1950,145,SAbod2.pie,250,1,17000,11,17,11,17,11,17,11,17,11,17,11,17,fxvtl5to8.Pie,1 +Body6SUPP,Level Two-Three,MEDIUM,60,400,2500,155,DRMBOD06.PIE,250,1,17000,18,12,18,12,18,12,18,12,18,12,18,12,fxvtl5to8.Pie,1 Body7ABT,Level Three,MEDIUM,150,600,1500,200,DRMBOD07.PIE,250,1,15000,25,20,25,20,25,20,25,20,25,20,25,20,fxvtl5to8.Pie,1 Body11ABT,Level All,HEAVY,70,350,2700,200,DRHBOD11.PIE,500,1,20000,25,9,25,9,25,9,25,9,25,9,25,9,fxvtl11.Pie,1 Body12SUP,Level All,HEAVY,60,350,2100,180,DRHBOD12.PIE,500,1,20000,18,18,18,18,18,18,18,18,18,18,18,18,fxvtl12.Pie,1 @@ -56,5 +56,5 @@ Body14SUP,Level Three,HEAVY,300,1000,4250,400,DRHBOD14.PIE,500,1,30000,35,35,35, B3bodyRKbuggy01,Level One,LIGHT,3,80,900,100,exbugRK.Pie,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 B2RKJeepBody,Level One,LIGHT,4,75,900,120,EXjeepRK.Pie,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 B1BaBaPerson01,Level All,LIGHT,1,5,100,29,EXBLOKE.PIE,50,1,125,1,1,1,1,1,1,1,1,1,1,1,1,0,0 -Cyb-Bod-MineSweep,Level All,LIGHT,30,125,150,90,cybdstdi.pie,100,1,500,10,4,10,4,10,4,10,4,10,4,10,4,0,0 -Cyb-Bod-ComEng2,Level All,LIGHT,30,125,150,90,cybd_std.pie,100,1,500,10,4,10,4,10,4,10,4,10,4,10,4,0,0 +Cyb-Bod-MineSweep,Level All,LIGHT,1,1,150,90,cybd_stdi.pie,100,1,500,12,8,12,8,12,8,12,8,12,8,12,8,0,0 +Cyb-Bod-ComEng2,Level All,LIGHT,1,1,150,90,cybd_std.pie,100,1,500,12,8,12,8,12,8,12,8,12,8,12,8,0,0 diff --git a/data/mods/multiplay/ntw/stats/features.txt b/data/mods/multiplay/ntw/stats/features.txt index efcb62664..23505d75a 100644 --- a/data/mods/multiplay/ntw/stats/features.txt +++ b/data/mods/multiplay/ntw/stats/features.txt @@ -1,4 +1,4 @@ -ContaMine,1,1,1,9999,9999,minevis.pie,BOULDER,1,0,1 +ContaMine,1,1,1,9999,9999,mine_vis.pie,BOULDER,1,0,1 Crate,1,1,0,20,50,MICAPSUL.pie,GENERIC ARTEFACT,1,0,0 OilResource,1,1,0,0,0,mislick.pie,OIL RESOURCE,1,1,0 Boulder1,1,1,0,0,0,mibould1.pie,BOULDER,1,0,1 diff --git a/data/mods/multiplay/ntw/stats/functions.txt b/data/mods/multiplay/ntw/stats/functions.txt index a33f57b99..b79b7e50a 100644 --- a/data/mods/multiplay/ntw/stats/functions.txt +++ b/data/mods/multiplay/ntw/stats/functions.txt @@ -1,5 +1,5 @@ Production,FacProd1,LIGHT,7 -Production,FacMod1,LIGHT,10 +Production,FacMod1,LIGHT,8 Production,BaBaFacProd,LIGHT,10 Research Upgrade,Struc-Research-Upgrade01,40 Research Upgrade,Struc-Research-Upgrade02,70 @@ -16,31 +16,31 @@ Power Generator,BaBaPowGen,400,55,0,0,0,0 Power Generator,PowerModule,0,35,0,0,0,0 Resource,Resource,12500 Production Upgrade,Struc-Factory-Upgrade01,1,0,0,10 -Production Upgrade,Struc-Factory-Upgrade02,1,0,0,30 -Production Upgrade,Struc-Factory-Upgrade03,1,0,0,50 -Production Upgrade,Struc-Factory-Upgrade04,1,0,0,80 -Production Upgrade,Struc-Factory-Upgrade05,1,0,0,110 -Production Upgrade,Struc-Factory-Upgrade06,1,0,0,140 -Production Upgrade,Struc-Factory-Cyborg-Upgrade01,0,1,0,60 -Production Upgrade,Struc-Factory-Cyborg-Upgrade02,0,1,0,90 -Production Upgrade,Struc-Factory-Cyborg-Upgrade03,0,1,0,120 -Production Upgrade,Struc-Factory-Cyborg-Upgrade04,0,1,0,150 -Production Upgrade,Struc-Factory-Cyborg-Upgrade05,0,1,0,180 -Production Upgrade,Struc-Factory-Cyborg-Upgrade06,0,1,0,210 -Production Upgrade,Struc-VTOLFactory-Upgrade01,0,0,1,30 -Production Upgrade,Struc-VTOLFactory-Upgrade02,0,0,1,60 -Production Upgrade,Struc-VTOLFactory-Upgrade03,0,0,1,90 -Production Upgrade,Struc-VTOLFactory-Upgrade04,0,0,1,120 -Production Upgrade,Struc-VTOLFactory-Upgrade05,0,0,1,150 -Production Upgrade,Struc-VTOLFactory-Upgrade06,0,0,1,180 +Production Upgrade,Struc-Factory-Upgrade02,1,0,0,20 +Production Upgrade,Struc-Factory-Upgrade03,1,0,0,30 +Production Upgrade,Struc-Factory-Upgrade04,1,0,0,70 +Production Upgrade,Struc-Factory-Upgrade05,1,0,0,100 +Production Upgrade,Struc-Factory-Upgrade06,1,0,0,130 +Production Upgrade,Struc-Factory-Cyborg-Upgrade01,0,1,0,10 +Production Upgrade,Struc-Factory-Cyborg-Upgrade02,0,1,0,20 +Production Upgrade,Struc-Factory-Cyborg-Upgrade03,0,1,0,30 +Production Upgrade,Struc-Factory-Cyborg-Upgrade04,0,1,0,70 +Production Upgrade,Struc-Factory-Cyborg-Upgrade05,0,1,0,100 +Production Upgrade,Struc-Factory-Cyborg-Upgrade06,0,1,0,130 +Production Upgrade,Struc-VTOLFactory-Upgrade01,0,0,1,20 +Production Upgrade,Struc-VTOLFactory-Upgrade02,0,0,1,40 +Production Upgrade,Struc-VTOLFactory-Upgrade03,0,0,1,60 +Production Upgrade,Struc-VTOLFactory-Upgrade04,0,0,1,90 +Production Upgrade,Struc-VTOLFactory-Upgrade05,0,0,1,120 +Production Upgrade,Struc-VTOLFactory-Upgrade06,0,0,1,150 Production Upgrade,Struc-Factory-Upgrade07,1,0,0,185 Production Upgrade,Struc-Factory-Upgrade08,1,0,0,230 Production Upgrade,Struc-Factory-Upgrade09,1,0,0,275 -Production Upgrade,Struc-Factory-Cyborg-Upgrade07,0,1,0,240 -Production Upgrade,Struc-Factory-Cyborg-Upgrade08,0,1,0,270 -Production Upgrade,Struc-Factory-Cyborg-Upgrade09,0,1,0,300 -Production Upgrade,Struc-VTOLFactory-Upgrade07,0,0,1,210 -Production Upgrade,Struc-VTOLFactory-Upgrade08,0,0,1,240 +Production Upgrade,Struc-Factory-Cyborg-Upgrade07,0,1,0,185 +Production Upgrade,Struc-Factory-Cyborg-Upgrade08,0,1,0,230 +Production Upgrade,Struc-Factory-Cyborg-Upgrade09,0,1,0,275 +Production Upgrade,Struc-VTOLFactory-Upgrade07,0,0,1,200 +Production Upgrade,Struc-VTOLFactory-Upgrade08,0,0,1,235 Production Upgrade,Struc-VTOLFactory-Upgrade09,0,0,1,270 Weapon Upgrade,Wpn-Cannon-Accuracy01,CANNON,0,10,10,0,0,0,0 Weapon Upgrade,Wpn-Cannon-Damage01,CANNON,0,0,0,30,10,0,10 @@ -199,9 +199,9 @@ Structure Upgrade,Struc-Materials08,270,240,0 Structure Upgrade,Struc-Materials09,305,270,0 Structure Upgrade,Struc-Materials10,340,300,0 Structure Upgrade,Sys-Resistance-Upgrade0,0,0,10 -WallDefence Upgrade,Defense-WallUpgrade01,5,20 -WallDefence Upgrade,Defense-WallUpgrade02,35,40 -WallDefence Upgrade,Defense-WallUpgrade03,65,60 +WallDefence Upgrade,Defense-WallUpgrade01,15,25 +WallDefence Upgrade,Defense-WallUpgrade02,35,45 +WallDefence Upgrade,Defense-WallUpgrade03,55,65 WallDefence Upgrade,Defense-WallUpgrade04,100,100 WallDefence Upgrade,Defense-WallUpgrade05,130,130 WallDefence Upgrade,Defense-WallUpgrade06,160,160 @@ -289,7 +289,7 @@ VehicleRepair Upgrade,Sys-Autorepair-Vehicle-Upgrade02,20 VehicleSensor Upgrade,Sys-Sensor-Upgrade01,0,25 VehicleSensor Upgrade,Sys-Sensor-Upgrade02,0,40 VehicleSensor Upgrade,Sys-Sensor-Upgrade03,0,60 -ReArm,ReArm,1 +ReArm,ReArm,5 ReArm Upgrade,ReArmUpgrade,1 ReArm Upgrade,Struc-VTOLPad-Upgrade01,30 ReArm Upgrade,Struc-VTOLPad-Upgrade02,60 @@ -298,4 +298,4 @@ ReArm Upgrade,Struc-VTOLPad-Upgrade04,120 ReArm Upgrade,Struc-VTOLPad-Upgrade05,150 ReArm Upgrade,Struc-VTOLPad-Upgrade06,180 WallDefence Upgrade,Defense-WallUpgrade13,450,420 -Production Upgrade,Struc-Factory-Cyborg-Upgrade-extra,0,1,0,250 +Production Upgrade,Struc-Factory-Cyborg-Upgrade-extra,0,1,0,150 diff --git a/data/mods/multiplay/ntw/stats/research/multiplayer/prresearch.txt b/data/mods/multiplay/ntw/stats/research/multiplayer/prresearch.txt index 7a68cdf55..d45d524b6 100644 --- a/data/mods/multiplay/ntw/stats/research/multiplayer/prresearch.txt +++ b/data/mods/multiplay/ntw/stats/research/multiplayer/prresearch.txt @@ -92,7 +92,7 @@ R-Struc-RepairFacility,R-Sys-MobileRepairTurret01,109 R-Struc-RepairFacility,R-Struc-Factory-Module,109 R-Wpn-Cannon4AMk1,R-Wpn-Cannon-ROF01,109 R-Wpn-Cannon4AMk1,R-Wpn-Cannon3Mk1,109 -R-Wpn-Cannon4AMk1,R-Wpn-Cannon-Damage09,109 +R-Wpn-Cannon4AMk1,R-Wpn-Cannon-Damage08,109 R-Wpn-Cannon3Mk1,R-Wpn-Cannon-Damage06,109 R-Wpn-Cannon3Mk1,R-Wpn-Cannon2Mk1,109 R-Wpn-Rocket06-IDF,R-Wpn-Rocket02-MRL,109 @@ -144,7 +144,7 @@ R-Defense-Tower01,R-Defense-HardcreteWall,109 R-Defense-Tower06,R-Defense-HardcreteWall,109 R-Defense-Tower06,R-Wpn-Rocket03-HvAT,109 R-Defense-Pillbox01,R-Defense-HardcreteWall,109 -R-Defense-Pillbox01,R-Wpn-MG-Damage01,109 +R-Defense-Pillbox01,R-Wpn-MG2Mk1,109 R-Defense-Pillbox04,R-Defense-HardcreteWall,109 R-Defense-Pillbox04,R-Wpn-Cannon1Mk1,109 R-Defense-Pillbox05,R-Defense-HardcreteWall,109 @@ -188,6 +188,7 @@ R-Wpn-Cannon-Accuracy01,R-Struc-Research-Upgrade01,109 R-Sys-SpyTurret,R-Sys-Engineering03,109 R-Sys-SpyTurret,R-Struc-Research-Upgrade08,109 R-Sys-SpyTurret,R-Sys-Sensor-WSTower,109 +R-Sys-SpyTurret,R-Vehicle-Body10,109 R-Wpn-HvyHowitzer,R-Wpn-Howitzer-Damage02,109 R-Wpn-HvyHowitzer,R-Wpn-HowitzerMk1,109 R-Wpn-Rocket-ROF01,R-Wpn-Rocket-Damage02,109 @@ -254,6 +255,7 @@ R-Defense-MortarPit,R-Wpn-Mortar01Lt,109 R-Defense-Wall-RotMg,R-Wpn-MG4,109 R-Defense-Wall-RotMg,R-Wpn-MG3Mk1,109 R-Defense-Wall-VulcanCan,R-Wpn-Cannon5,109 +R-Defense-Wall-VulcanCan,R-Defense-WallTower02,109 R-Defense-WallTower-PulseLas,R-Wpn-Laser01,109 R-Defense-WallTower-Rail2,R-Wpn-RailGun02,109 R-Cyborg-Metals04,R-Cyborg-Metals03,109 @@ -292,8 +294,6 @@ R-Wpn-Rocket07-Tank-Killer,R-Wpn-RocketSlow-Accuracy02,109 R-Wpn-Rocket07-Tank-Killer,R-Wpn-RocketSlow-Damage04,109 R-Defense-HvyFlamer,R-Wpn-Flame2,109 R-Defense-HvyFlamer,R-Defense-Pillbox05,109 -R-Defense-SamSite1,R-Wpn-Missile-LtSAM,109 -R-Defense-SamSite2,R-Wpn-Missile-HvSAM,109 R-Defense-HvyHowitzer,R-Defense-Howitzer,109 R-Defense-HvyHowitzer,R-Wpn-HvyHowitzer,109 R-Defense-MRL,R-Wpn-Rocket02-MRL,109 @@ -446,7 +446,7 @@ R-Wpn-Energy-ROF02,R-Wpn-Energy-ROF01,109 R-Wpn-Energy-ROF03,R-Wpn-Energy-ROF02,109 R-Wpn-Missile-Accuracy01,R-Wpn-Missile-Damage01,109 R-Wpn-Missile-Accuracy02,R-Wpn-Missile-Accuracy01,109 -R-Wpn-Missile-Damage01,R-Wpn-Missile-LtSAM,109 +R-Wpn-Missile-Damage01,R-Wpn-Missile2A-T,109 R-Wpn-Missile-Damage02,R-Wpn-Missile-Damage01,109 R-Wpn-Missile-Damage03,R-Wpn-Missile-Damage02,109 R-Wpn-Mortar-Damage04,R-Wpn-Mortar02Hvy,109 @@ -519,10 +519,6 @@ R-Wpn-Howitzer-ROF01,R-Wpn-HvyHowitzer,109 R-Wpn-Howitzer-ROF02,R-Wpn-Howitzer-ROF01,109 R-Wpn-Howitzer-ROF03,R-Wpn-Howitzer-ROF02,109 R-Wpn-Howitzer-ROF04,R-Wpn-Howitzer-ROF03,109 -R-Wpn-Missile-LtSAM,R-Sys-VTOLStrike-Tower01,109 -R-Wpn-Missile-LtSAM,R-Wpn-Missile2A-T,109 -R-Wpn-Missile-HvSAM,R-Wpn-Missile-Damage03,109 -R-Wpn-Missile-HvSAM,R-Wpn-Missile-LtSAM,109 R-Wpn-MdArtMissile,R-Wpn-Missile-Damage03,109 R-Wpn-MdArtMissile,R-Wpn-Rocket06-IDF,109 R-Wpn-HvArtMissile,R-Wpn-MdArtMissile,109 @@ -538,7 +534,9 @@ R-Sys-Resistance-Circuits,R-Sys-Engineering03,109 R-Sys-Resistance-Circuits,R-Struc-Research-Upgrade08,109 R-Sys-Resistance-Circuits,R-Sys-Sensor-WSTower,109 R-Wpn-Cannon6TwinAslt,R-Wpn-Cannon5,109 +R-Wpn-Cannon6TwinAslt,R-Wpn-Cannon-Damage06,109 R-Defense-Cannon6,R-Wpn-Cannon6TwinAslt,109 +R-Defense-Cannon6,R-Defense-Pillbox04,109 R-Wpn-HvyLaser,R-Wpn-Laser02,109 R-Wpn-HvyLaser,R-Wpn-Energy-Damage03,109 R-Defense-HeavyLas,R-Wpn-HvyLaser,109 @@ -551,8 +549,9 @@ R-Sys-Sensor-WSTower,R-Struc-Research-Upgrade07,109 R-Sys-Sensor-UpLink,R-Struc-Research-Upgrade08,109 R-Sys-Sensor-UpLink,R-Sys-Sensor-WSTower,109 R-Sys-Sensor-UpLink,R-Sys-Engineering03,109 -R-Wpn-LasSat,R-Struc-Research-Upgrade09,109 -R-Wpn-LasSat,R-Sys-Sensor-UpLink,109 +R-Wpn-LasSat,R-Wpn-Laser-Sat,109 +R-Wpn-Laser-Sat,R-Struc-Research-Upgrade09,109 +R-Wpn-Laser-Sat,R-Sys-Sensor-UpLink,109 R-Wpn-PlasmaCannon,R-Wpn-HvyLaser,109 R-Sys-SpyTower,R-Sys-SpyTurret,109 R-Defense-PlasmaCannon,R-Wpn-PlasmaCannon,109 @@ -588,15 +587,11 @@ R-Struc-Factory-Cyborg-Upgrade09,R-Struc-Factory-Cyborg-Upgrade08,109 R-Wpn-AALaser,R-Wpn-Energy-ROF03,109 R-Defense-AA-Laser,R-Wpn-AALaser,109 R-Defense-EMPMortar,R-Defense-EMPCannon,109 -R-Defense-WallTower-SamHvy,R-Wpn-Missile-HvSAM,109 -R-Defense-WallTower-SamHvy,R-Defense-WallUpgrade07,109 R-Defense-WallTower-QuadRotAA,R-Defense-HardcreteWall,109 R-Defense-WallTower-QuadRotAA,R-Defense-AASite-QuadRotMg,109 R-Sys-Sensor-WS,CAM1RESEARCH,109 R-Wpn-EMPCannon,R-Struc-Research-Upgrade07,109 R-Defense-WallTower-DoubleAAgun,R-Wpn-AAGun02,109 -R-Defense-WallTower-SamSite,R-Defense-WallUpgrade07,109 -R-Defense-WallTower-SamSite,R-Defense-SamSite1,109 R-Wpn-MG5,R-Wpn-MG4,109 R-Wpn-MG5,R-Wpn-MG-ROF03,109 R-Defense-WallTower-TwinAGun,R-Wpn-MG5,109 @@ -650,3 +645,12 @@ R-Defense-A0BaBaMortarPit,R-Defense-A0BaBaGunTower,109 R-Defense-A0BaBaRocketPit,R-Defense-A0BaBaGunTower,109 R-Defense-A0CannonTower,R-Defense-A0BaBaGunTower,109 R-Defense-A0BaBaFlameTower,R-Defense-A0BaBaGunTower,109 +R-Wpn-GShield,R-Struc-Research-Upgrade07,109 +R-Wpn-GShield,R-Vehicle-Prop-VTOL,109 +R-Defense-Plas-Art,R-Wpn-Plas-Art,109 +R-Wpn-Plas-Art,R-Wpn-HvyLaser,109 +R-Wpn-Plas-Art,R-Sys-CBSensor-Tower01,109 +R-Wpn-Incenediary-Mortar,R-Wpn-Mortar02Hvy,109 +R-Wpn-Incenediary-Mortar,R-Wpn-Flame2,109 +R-Defense-Incenediary-Mortar-Pit,R-Wpn-Incenediary-Mortar,109 +R-Defense-Incenediary-Mortar-Pit,R-Defense-HvyMor,109 diff --git a/data/mods/multiplay/ntw/stats/research/multiplayer/redcomponents.txt b/data/mods/multiplay/ntw/stats/research/multiplayer/redcomponents.txt index ae4055b9e..c45bbbe96 100644 --- a/data/mods/multiplay/ntw/stats/research/multiplayer/redcomponents.txt +++ b/data/mods/multiplay/ntw/stats/research/multiplayer/redcomponents.txt @@ -15,6 +15,5 @@ R-Wpn-Missile2A-T,Rocket-LtA-T,WEAPON,10 R-Wpn-Missile2A-T,Rocket-VTOL-LtA-T,WEAPON,10 R-Wpn-RailGun02,RailGun1-VTOL,WEAPON,10 R-Wpn-RailGun02,RailGun1Mk1,WEAPON,10 -R-Wpn-Missile-HvSAM,Missile-LtSAM,WEAPON,10 R-Wpn-HvyLaser,Laser3BEAM-VTOL,WEAPON,10 R-Wpn-HvyLaser,Laser3BEAMMk1,WEAPON,10 diff --git a/data/mods/multiplay/ntw/stats/research/multiplayer/redstructure.txt b/data/mods/multiplay/ntw/stats/research/multiplayer/redstructure.txt index 4d032e2e6..a7e626fe2 100644 --- a/data/mods/multiplay/ntw/stats/research/multiplayer/redstructure.txt +++ b/data/mods/multiplay/ntw/stats/research/multiplayer/redstructure.txt @@ -20,6 +20,5 @@ R-Defense-HvyArtMissile,Emplacement-Howitzer105,152 R-Defense-WallTower-HPVcannon,WallTower02,241 R-Defense-WallTower-A-Tmiss,WallTower06,245 R-Defense-Pillbox-RotMG,PillBox1,201 -R-Defense-WallTower-SamHvy,WallTower-SamSite,238 R-Defense-WallTower-TwinAGun,CO-Tower-RotMG,144 R-Struc-com,A0CommandCentre,246 diff --git a/data/mods/multiplay/ntw/stats/research/multiplayer/research.txt b/data/mods/multiplay/ntw/stats/research/multiplayer/research.txt index b462f0bf8..b75594bee 100644 --- a/data/mods/multiplay/ntw/stats/research/multiplayer/research.txt +++ b/data/mods/multiplay/ntw/stats/research/multiplayer/research.txt @@ -120,7 +120,7 @@ R-Vehicle-Prop-Halftracks,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_HALFT1,0,Hal R-Defense-WallTower06,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_DEFENCE,0,0,RES_WT6_ATR,WallTower06,0,0,1500,0,2,0,0,0,1,0,0 R-Defense-Pillbox06,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_ATR,PillBox6,0,0,1500,0,2,0,0,0,1,0,0 R-Wpn-Cannon-Accuracy01,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CNAC1,0,Cannon1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Sys-SpyTurret,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_SPT,0,SpyTurret01,WEAPON,14400,1,3,0,0,0,0,0,1 +R-Sys-SpyTurret,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_SPT,0,SpyTurret01,WEAPON,14400,1,4,0,0,0,0,0,1 R-Wpn-HvyHowitzer,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HH1,0,Howitzer150Mk1,WEAPON,10000,1,2,0,0,0,0,0,1 R-Wpn-Rocket-ROF01,Level One,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_ROF1,0,Rocket-Pod,WEAPON,2000,0,2,1,0,0,0,0,0 R-Wpn-Rocket-ROF02,Level One-Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,4000,0,2,1,0,0,0,0,0 @@ -161,9 +161,9 @@ R-Defense-GuardTower-Rail1,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RL1TOW, R-Defense-Howitzer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HOW,Emplacement-Howitzer105,0,0,4800,0,1,0,0,0,1,0,0 R-Defense-MortarPit,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Mpit,Emplacement-MortarPit01,0,0,1200,0,2,0,0,0,1,0,0 R-Defense-Wall-RotMg,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT7_RMG,Wall-RotMg,0,0,4800,0,2,0,0,1,1,0,0 -R-Defense-Wall-VulcanCan,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT8_RC,Wall-VulcanCan,0,0,4800,0,1,0,0,1,1,0,0 +R-Defense-Wall-VulcanCan,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT8_RC,Wall-VulcanCan,0,0,4800,0,2,0,0,1,1,0,0 R-Defense-WallTower-HvyFlamer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT11_HFL,WallTower-Projector,0,0,3600,0,0,0,0,0,0,0,0 -R-Defense-WallTower-PulseLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT14_PLS,WallTower-PulseLas,0,0,14400,0,1,0,0,0,1,0,0 +R-Defense-WallTower-PulseLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT14_PLS,WallTower-PulseLas,0,0,10000,0,1,0,0,0,1,0,0 R-Defense-WallTower-Rail2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT15_RL2,WallTower-Rail2,0,0,10000,0,1,0,0,0,1,0,0 R-Cyborg-Metals04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET4,0,0,0,8000,0,1,1,0,0,0,0,0 R-Cyborg-Metals05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 @@ -193,8 +193,6 @@ R-Sys-Sensor-Tower02,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_STW2,Sys-Sens R-Wpn-Rocket07-Tank-Killer,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_HvAT,0,Rocket-HvyA-T,WEAPON,12000,1,2,0,0,0,0,0,3 R-Cyborg-Legs01,Level One-Two,0,1,IMAGE_RES_CYBORGTECH,0,0,0,0,CyborgLegs,PROPULSION,7200,0,0,0,0,0,0,0,1 R-Defense-HvyFlamer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HVFL,Tower-Projector,0,0,4800,0,2,0,0,1,1,0,0 -R-Defense-SamSite1,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_SAM1,P0-AASite-SAM1,0,0,14400,0,1,0,0,0,1,0,0 -R-Defense-SamSite2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_SAM2,P0-AASite-SAM2,0,0,28800,0,1,0,0,0,1,0,0 R-Defense-HvyHowitzer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvHOW,Emplacement-Howitzer150,0,0,6000,0,2,0,0,0,1,0,0 R-Defense-MRL,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MRL,Emplacement-MRL-pit,0,0,1200,0,2,0,0,0,1,0,0 R-Defense-RotMG,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,Pillbox-RotMG,0,0,4800,0,1,0,0,1,1,0,0 @@ -307,9 +305,9 @@ R-Wpn-Energy-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0, R-Wpn-Energy-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASROF1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 R-Wpn-Energy-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,28800,0,1,1,0,0,0,0,0 R-Wpn-Energy-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,43200,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC1,0,Missile-LtSAM,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC1,0,Missile-A-T,WEAPON,14400,0,1,1,0,0,0,0,0 R-Wpn-Missile-Accuracy02,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC2,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_D1,0,Missile-LtSAM,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_D1,0,Missile-A-T,WEAPON,14400,0,1,1,0,0,0,0,0 R-Wpn-Missile-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 R-Wpn-Missile-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,43200,0,1,1,0,0,0,0,0 R-Wpn-Mortar-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_D4,0,Mortar1Mk1,WEAPON,9200,0,2,1,0,0,0,0,0 @@ -366,8 +364,6 @@ R-Wpn-Howitzer-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W R-Wpn-Howitzer-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 R-Wpn-Howitzer-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 R-Wpn-Howitzer-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWRF4,0,Howitzer105Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-Missile-LtSAM,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_LtSAM1,0,Missile-LtSAM,WEAPON,14400,1,2,0,0,0,0,0,1 -R-Wpn-Missile-HvSAM,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HvSAM1,0,Missile-HvySAM,WEAPON,28800,0,2,0,0,0,0,1,1 R-Wpn-MdArtMissile,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_MART,0,Missile-MdArt,WEAPON,20000,1,2,0,0,0,0,0,1 R-Wpn-HvArtMissile,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HART,0,Missile-HvyArt,WEAPON,30000,1,1,0,0,0,0,0,1 R-Defense-Pillbox-RotMG,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,0,Pillbox-RotMG,0,0,2500,0,2,0,0,1,1,0,0 @@ -378,13 +374,13 @@ R-Struc-Power-Upgrade01c,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH, R-Struc-Power-Upgrade03a,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,0,12000,1,1,1,0,0,0,0,0 R-Sys-Autorepair-General,Level All,IMAGE_RES_GRPREP,0,IMAGE_RES_COMPUTERTECH,ICCCCONS.PIE,0,RES_SY_AR,0,0,0,14400,1,1,0,0,0,0,0,1 R-Sys-Resistance-Circuits,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,ICCCCONS.PIE,0,RES_SY_RC,0,0,0,14400,1,3,1,0,0,0,0,0 -R-Wpn-Cannon6TwinAslt,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN6_T_A,0,Cannon6TwinAslt,WEAPON,12000,1,1,0,0,0,0,0,2 -R-Defense-Cannon6,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,PillBox-Cannon6,0,0,6400,0,1,0,0,0,1,0,0 +R-Wpn-Cannon6TwinAslt,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN6_T_A,0,Cannon6TwinAslt,WEAPON,12000,1,2,0,0,0,0,0,2 +R-Defense-Cannon6,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,PillBox-Cannon6,0,0,6400,0,2,0,0,0,1,0,0 R-Wpn-HvyLaser,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HLAS,0,HeavyLaser,WEAPON,20000,1,2,0,0,0,0,2,2 R-Defense-HeavyLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HEAVYLAS,Emplacement-HeavyLaser,0,0,12000,0,2,0,0,0,1,0,0 R-Sys-Sensor-WSTower,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_WS,Sys-SensoTowerWS,0,0,23600,1,5,0,0,0,1,0,0 R-Sys-Sensor-UpLink,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_UP,A0Sat-linkCentre,0,0,36000,1,3,0,0,0,1,0,0 -R-Wpn-LasSat,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LASSAT,A0LasSatCommand,0,0,56600,1,2,0,0,0,1,0,0 +R-Wpn-LasSat,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LASSAT,A0LasSatCommand,0,0,56600,1,1,0,0,0,1,0,0 R-Wpn-PlasmaCannon,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_PLASCAN,0,Laser4-PlasmaCannon,WEAPON,30000,1,1,0,0,0,0,0,2 R-Sys-SpyTower,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_SPYT,Sys-SpyTower,0,0,7200,1,1,0,0,0,1,0,0 R-Defense-PlasmaCannon,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PLASCAN,Emplacement-PlasmaCannon,0,0,14400,0,2,0,0,0,1,0,0 @@ -409,19 +405,17 @@ R-Struc-Factory-Cyborg-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCT R-Wpn-AALaser,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HvSAM1,0,AAGunLaser,WEAPON,28800,0,1,0,0,0,0,0,1 R-Defense-AA-Laser,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_AALAS,P0-AASite-Laser,0,0,14400,0,1,0,0,0,1,0,0 R-Defense-EMPMortar,Level All,IMAGE_RES_DEFENCE,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_EMPM,Emplacement-MortarEMP,0,0,8000,0,1,0,0,0,1,0,0 -R-Defense-WallTower-SamHvy,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_MS_SAM2WT,WallTower-SamHvy,0,0,30000,0,2,0,0,1,1,0,0 R-Defense-WallTower-QuadRotAA,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_QUADAA,WallTower-QuadRotAAGun,0,0,30000,0,2,0,0,0,1,0,0 R-Sys-Sensor-WS,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_WST,0,Sensor-WideSpec,SENSOR,14400,1,1,0,0,0,0,0,1 R-Wpn-EMPCannon,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_WEAPONTECH,0,0,RES_EMP_CANT,0,EMP-Cannon,WEAPON,12000,0,1,0,0,0,0,0,1 R-Defense-WallTower-DoubleAAgun,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_DOUBLEAA,WallTower-DoubleAAGun,0,0,30000,0,1,0,0,0,1,0,0 -R-Defense-WallTower-SamSite,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_MS_SAM1WT,WallTower-SamSite,0,0,30000,0,2,0,0,0,1,0,0 R-Wpn-MG5,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_WT_TWINAGUN,0,MG5TWINROTARY,WEAPON,8000,1,2,0,0,0,0,0,1 R-Defense-WallTower-TwinAGun,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_TWINAGHP,WallTower-TwinAssaultGun,0,0,4800,0,2,0,0,1,1,0,0 R-Wpn-Bomb05,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_BMB5,0,Bomb5-VTOL-Plasmite,WEAPON,20000,0,2,0,0,0,0,0,1 R-Wpn-Bomb06,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_BMB6,0,Bomb6-VTOL-EMP,WEAPON,25000,0,2,0,0,0,0,0,1 -R-Cyb-MineSwp,Level All,IMAGE_RES_CYBORGTECH,0,IMAGE_RES_WEAPONTECH,0,0,0,0,Cyborg_RocketMine,WEAPON,2000,0,1,0,1,0,0,0,1 +R-Cyb-MineSwp,Level All,IMAGE_RES_CYBORGTECH,0,IMAGE_RES_WEAPONTECH,0,0,0,0,Cyborg_RocketMine,WEAPON,2000,0,1,0,0,0,0,0,1 R-Wpn-LasSat_3,Level Three,0,1,IMAGE_RES_POWERTECH,0,0,0,NuclearReactor,0,0,40000,1,1,0,0,0,2,0,0 -R-Struc-com,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,0,A0CommandCentreDEL,0,0,2500,1,1,0,0,1,1,0,0 +R-Struc-com,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,0,A0CommandCentreDEL,0,0,3000,1,1,0,0,1,1,0,0 R-Defense-WallUpgrade13,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,55000,0,1,1,0,0,0,0,0 R-Vehicle-SEBody1,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B01,0,SEBody1,BODY,3000,0,2,0,0,0,0,0,1 R-Vehicle-SEBody2,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B05,0,SEBody2,BODY,9000,0,2,0,0,0,0,0,1 @@ -447,3 +441,9 @@ R-Defense-A0BaBaMortarPit,Level All,0,0,IMAGE_RES_DEFENCE,0,0,0,A0BaBaMortarPit, R-Defense-A0BaBaRocketPit,Level All,0,0,IMAGE_RES_DEFENCE,0,0,0,A0BaBaRocketPit,0,0,500,0,1,0,0,0,1,0,0 R-Defense-A0CannonTower,Level All,0,0,IMAGE_RES_DEFENCE,0,0,0,A0CannonTower,0,0,500,0,1,0,0,0,1,0,0 R-Defense-A0BaBaFlameTower,Level All,0,0,IMAGE_RES_DEFENCE,0,0,0,A0BaBaFlameTower,0,0,500,0,1,0,0,0,1,0,0 +R-Wpn-Plas-Art,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_MART,0,PlasmaHeavy,WEAPON,20000,1,2,0,0,0,0,0,1 +R-Defense-Plas-Art,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MdAM,NX-Emp-Plasma-Pit,0,0,14400,0,1,0,0,0,1,0,0 +R-Wpn-GShield,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,0,GShield,0,0,25000,1,2,0,0,0,1,0,0 +R-Wpn-Laser-Sat,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LASSAT,Laser-Sat,0,0,30000,1,2,0,0,0,1,0,0 +R-Wpn-Incenediary-Mortar,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_IMORT,0,Incenediary-Mo,WEAPON,3600,1,2,0,0,0,0,0,1 +R-Defense-Incenediary-Mortar-Pit,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_IMP,Incenediary-Mortar-Pit,0,BODY,2400,0,2,0,0,0,1,0,0 diff --git a/data/mods/multiplay/ntw/stats/research/multiplayer/resultcomponent.txt b/data/mods/multiplay/ntw/stats/research/multiplayer/resultcomponent.txt index 4e8a10f97..4bd2d1ff3 100644 --- a/data/mods/multiplay/ntw/stats/research/multiplayer/resultcomponent.txt +++ b/data/mods/multiplay/ntw/stats/research/multiplayer/resultcomponent.txt @@ -98,8 +98,6 @@ R-Wpn-Bomb01,Bomb1-VTOL-LtHE,WEAPON,0,0,10 R-Wpn-Bomb02,Bomb2-VTOL-HvHE,WEAPON,0,0,10 R-Wpn-Bomb03,Bomb3-VTOL-LtINC,WEAPON,0,0,10 R-Wpn-Bomb04,Bomb4-VTOL-HvyINC,WEAPON,0,0,10 -R-Wpn-Missile-LtSAM,Missile-LtSAM,WEAPON,0,0,10 -R-Wpn-Missile-HvSAM,Missile-HvySAM,WEAPON,0,0,10 R-Wpn-MdArtMissile,Missile-MdArt,WEAPON,0,0,10 R-Wpn-HvArtMissile,Missile-HvyArt,WEAPON,0,10 R-Sys-Autorepair-General,AutoRepair,REPAIR,ZNULLREPAIR,REPAIR,6 @@ -126,3 +124,5 @@ R-Vehicle-SABody1,SABody1,BODY,0,0,2 R-Vehicle-SABody2,SABody2,BODY,0,0,2 R-Vehicle-SABody3,SABody3,BODY,0,0,2 R-Vehicle-Truck,TruckBody,BODY,0,0,2 +R-Wpn-Plas-Art,PlasmaHeavy,WEAPON,0,0,10 +R-Wpn-Incenediary-Mortar,Incenediary-Mo,WEAPON,0,0,10 diff --git a/data/mods/multiplay/ntw/stats/research/multiplayer/resultstructure.txt b/data/mods/multiplay/ntw/stats/research/multiplayer/resultstructure.txt index 7dea9b470..226bdabce 100644 --- a/data/mods/multiplay/ntw/stats/research/multiplayer/resultstructure.txt +++ b/data/mods/multiplay/ntw/stats/research/multiplayer/resultstructure.txt @@ -40,8 +40,6 @@ R-Defense-WallTower-PulseLas,WallTower-PulseLas,0,233 R-Defense-WallTower-Rail2,WallTower-Rail2,0,235 R-Sys-Sensor-Tower02,Sys-SensoTower02,0,215 R-Defense-HvyFlamer,Tower-Projector,0,221 -R-Defense-SamSite1,P0-AASite-SAM1,0,197 -R-Defense-SamSite2,P0-AASite-SAM2,0,198 R-Defense-HvyHowitzer,Emplacement-Howitzer150,0,153 R-Defense-MRL,Emplacement-MRL-pit,0,162 R-Defense-RotMG,Pillbox-RotMG,0,200 @@ -77,10 +75,8 @@ R-Defense-Super-Rocket,X-Super-Rocket,0,250 R-Defense-Super-Missile,X-Super-Missile,0,249 R-Defense-AA-Laser,P0-AASite-Laser,0,196 R-Defense-EMPMortar,Emplacement-MortarEMP,0,158 -R-Defense-WallTower-SamHvy,WallTower-SamHvy,0,237 R-Defense-WallTower-QuadRotAA,WallTower-QuadRotAAGun,0,234 R-Defense-WallTower-DoubleAAgun,WallTower-DoubleAAGun,0,228 -R-Defense-WallTower-SamSite,WallTower-SamSite,0,238 R-Defense-WallTower-TwinAGun,WallTower-TwinAssaultGun,0,239 R-Wpn-LasSat_3,NuclearReactor,0,251 R-Wpn-LasSat_3,CoolingTower,0,252 @@ -103,3 +99,6 @@ R-Defense-A0BaBaMortarPit,A0BaBaMortarPit,0,271 R-Defense-A0BaBaRocketPit,A0BaBaRocketPit,0,272 R-Defense-A0CannonTower,A0CannonTower,0,273 R-Defense-Mine1,mineinfo,0,275 +R-Wpn-GShield,GShield,0,276 +R-Defense-Plas-Art,NX-Emp-Plasma-Pit,0,277 +R-Wpn-Laser-Sat,Laser-Sat,0,278 diff --git a/data/mods/multiplay/ntw/stats/structuremodifier.txt b/data/mods/multiplay/ntw/stats/structuremodifier.txt index 0ae478b7a..a44f3a20a 100644 --- a/data/mods/multiplay/ntw/stats/structuremodifier.txt +++ b/data/mods/multiplay/ntw/stats/structuremodifier.txt @@ -2,8 +2,8 @@ ANTI PERSONNEL,SOFT,125 ANTI PERSONNEL,MEDIUM,100 ANTI PERSONNEL,HARD,75 ANTI PERSONNEL,BUNKER,100 -ANTI TANK,SOFT,100 -ANTI TANK,MEDIUM,50 +ANTI TANK,SOFT,80 +ANTI TANK,MEDIUM,70 ANTI TANK,HARD,50 ANTI TANK,BUNKER,40 ARTILLERY ROUND,SOFT,120 @@ -18,7 +18,7 @@ FLAMER,SOFT,150 FLAMER,MEDIUM,100 FLAMER,HARD,50 FLAMER,BUNKER,170 -ANTI AIRCRAFT,SOFT,120 -ANTI AIRCRAFT,MEDIUM,100 -ANTI AIRCRAFT,HARD,80 -ANTI AIRCRAFT,BUNKER,80 +ANTI AIRCRAFT,SOFT,80 +ANTI AIRCRAFT,MEDIUM,70 +ANTI AIRCRAFT,HARD,50 +ANTI AIRCRAFT,BUNKER,40 diff --git a/data/mods/multiplay/ntw/stats/structures.txt b/data/mods/multiplay/ntw/stats/structures.txt index 80c0a2b29..6dc818b00 100644 --- a/data/mods/multiplay/ntw/stats/structures.txt +++ b/data/mods/multiplay/ntw/stats/structures.txt @@ -8,23 +8,23 @@ A0BabaCornerWall,CORNER WALL,Level All,SOFT,0,1,1,Concrete,50,2,7,150,10,20,1,0, A0BabaCornerWall,CORNER WALL,Level All,SOFT,0,1,1,Concrete,50,2,7,150,10,20,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLBRBWLH.PIE,0,0,0 A0ADemolishStructure,DEMOLISH,Level All,SOFT,0,1,1,Concrete,10,1,6,200,1,1,1,150,1,1,ZNULLECM,DefaultSensor1Mk1,0,icdozer.Pie,0,0,0 A0BaBaRocketPitAT,DEFENSE,Level One,MEDIUM,1,1,1,Concrete,1,1,10,250,1,10,1,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,EXROCKET.PIE,0,0,1 -A0BabaCornerWall,CORNER WALL,Level All,SOFT,0,1,1,Concrete,50,2,7,150,10,20,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLBRBWLH.PIE,0,0,0 +Laser-Sat,DEFENSE,Level All,HARD,1,2,2,Concrete,2000,3,10,500,10,1000,20,300,1,0,ZNULLECM,0,1,milasbas.pie,0,0,1 A0ComDroidControl,COMMAND RELAY,Level All,HARD,0,2,2,Concrete,500,2,10,500,10,100,30,300,1,1,ZNULLECM,DefaultSensor1Mk1,0,bldrdcm0.Pie,BLBDRDCM.pie,1,0 A0CommandCentre,DEFENSE,Level One,MEDIUM,0,1,1,Concrete,50,2,5,200,0,20,1,0,255,1,ZNULLECM,CCSensor,1,blbrlook.Pie,0,1,0 A0CommandCentreDEL,HQ,Level All,HARD,0,2,2,Concrete,500,3,10,500,10,100,30,300,1,1,ZNULLECM,CCSensor,1,blhq.Pie,blbhq.pie,1,0 A0CommandCentreNE,HQ,Level Three,HARD,0,2,2,Concrete,500,3,10,500,10,100,30,300,1,1,ZNULLECM,CCSensor,1,blhq4.Pie,0,1,0 A0CommandCentreNP,HQ,Level One,HARD,0,2,2,Concrete,500,3,10,500,10,100,30,300,1,1,ZNULLECM,CCSensor,1,blhq2.Pie,0,1,0 A0CyborgFactory,CYBORG FACTORY,Level All,MEDIUM,1,1,2,Concrete,500,2,10,500,100,100,30,150,5,20,ZNULLECM,DefaultSensor1Mk1,0,blcfact1.Pie,blbcfact.pie,1,0 -A0FacMod1,FACTORY MODULE,Level All,MEDIUM,1,3,3,Concrete,500,3,10,500,100,100,30,150,255,20,ZNULLECM,DefaultSensor1Mk1,0,BLFACT1.PIE,0,1,0 +A0FacMod1,FACTORY MODULE,Level All,MEDIUM,1,3,3,Concrete,500,3,10,500,100,100,30,150,255,20,ZNULLECM,DefaultSensor1Mk1,0,BLFACT1.PIE,blbfact.pie,1,0 A0HardcreteMk1CWall,CORNER WALL,Level All,HARD,1,1,1,Concrete,125,2,15,265,10,75,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLWALLC1.PIE,0,0,0 A0HardcreteMk1Wall,WALL,Level All,HARD,1,1,1,Concrete,125,2,15,265,10,75,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLWALLH.PIE,0,1,0 -A0LasSatCommand,DOOR,Level All,HARD,1,1,1,Concrete,2000,3,10,500,10,2000,30,300,1,0,ZNULLECM,ZNULLSENSOR,1,blmssilo.pie,mibcool.pie,0,1 +A0LasSatCommand,DOOR,Level All,HARD,1,1,1,Concrete,2500,1,20,700,10,2000,40,300,1,0,ZNULLECM,ZNULLSENSOR,1,blmssilo.pie,mibcool.pie,0,1 A0LightFactory,FACTORY,Level One,MEDIUM,1,3,3,Concrete,500,3,10,500,100,100,30,150,255,20,ZNULLECM,BaBaSensor,0,BLBRBFAC.PIE,blbfact.pie,1,0 A0PowerGenerator,POWER GENERATOR,Level One,MEDIUM,1,2,2,Concrete,500,3,20,500,30,100,30,300,255,10,ZNULLECM,BaBaSensor,0,BLBRBGEN.PIE,blbpower.pie,1,0 -A0PowMod1,POWER MODULE,Level All,MEDIUM,1,2,2,Concrete,500,2,20,500,30,100,30,300,255,10,ZNULLECM,DefaultSensor1Mk1,0,BLPOWER4.PIE,0,1,0 +A0PowMod1,POWER MODULE,Level All,MEDIUM,1,2,2,Concrete,500,2,20,500,30,100,30,300,255,10,ZNULLECM,DefaultSensor1Mk1,0,BLPOWER4.PIE,blbpower.pie,1,0 A0RepairCentre3,REPAIR FACILITY,Level All,MEDIUM,0,1,1,Concrete,500,2,10,500,0,100,0,150,255,0,RepairCentre,DefaultSensor1Mk1,1,BLRPAIR3.PIE,BLBGEN.PIE,1,0 A0ResearchFacility,RESEARCH,Level All,MEDIUM,1,2,2,Concrete,500,3,10,400,100,100,30,150,255,10,ZNULLECM,BaBaSensor,0,scav-res.pie,blbresch.pie,1,0 -A0ResearchModule1,RESEARCH MODULE,Level All,MEDIUM,1,2,2,Concrete,500,3,10,400,100,100,30,150,255,10,ZNULLECM,DefaultSensor1Mk1,0,blresch4.pie,0,1,0 +A0ResearchModule1,RESEARCH MODULE,Level All,MEDIUM,1,2,2,Concrete,500,3,10,400,100,100,30,150,255,10,ZNULLECM,DefaultSensor1Mk1,0,blresch4.pie,blbresch.pie,1,0 A0ResourceExtractor,RESOURCE EXTRACTOR,Level All,MEDIUM,0,1,1,Concrete,100,1,5,300,10,5,2,150,255,1,ZNULLECM,DefaultSensor1Mk1,0,BLDERIK.PIE,0,1,0 A0Sat-linkCentre,SAT UPLINK,Level All,MEDIUM,0,2,2,Concrete,1250,3,12,800,10,999,30,0,1,1,ZNULLECM,UplinkSensor,1,miupbase.pie,BLBDRDCM.PIE,0,0 A0TankTrap,WALL,Level All,HARD,1,1,1,Concrete,40,1,10,100,10,15,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,tank-traps.pie,0,1,0 @@ -66,6 +66,8 @@ Emplacement-MRL-pit,DEFENSE,Level All,MEDIUM,0,1,1,Concrete,400,1,10,200,10,125, Emplacement-Rocket06-IDF,DEFENSE,Level All,MEDIUM,0,1,1,Concrete,500,1,10,150,10,325,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blaamnt1.pie,0,0,1 Emplacement-RotHow,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,650,1,10,200,10,525,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blaamnt2.PIE,0,0,1 Emplacement-RotMor,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,500,1,10,200,10,325,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLMRTPIT.PIE,0,0,1 +NX-Emp-Plasma-Pit,DEFENSE,Level Three,HARD,0,1,1,Concrete,650,1,15,200,10,525,10,150,255,1,ZNULLECM,NavGunSensor,1,Blaamnt2.Pie,0,0,1 +Incenediary-Mortar-Pit,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,425,1,10,200,10,135,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLMRTPIT.PIE,0,0,1 GuardTower-ATMiss,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,400,2,10,300,10,300,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLGUARDR.PIE,0,0,1 GuardTower-BeamLas,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,400,2,10,300,10,100,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLGUARDR.PIE,0,0,1 GuardTower-Rail1,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,400,2,10,300,10,250,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLGUARDR.PIE,0,0,1 @@ -85,7 +87,6 @@ NX-ANTI-SATSite,MISSILE SILO,Level Three,BUNKER,0,1,1,Concrete,500,1,999,999,10, NX-CruiseSite,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,500,1,20,300,10,100,30,0,1,1,ZNULLECM,DefaultSensor1Mk1,0,blbunkms.Pie,0,1,0 NX-Emp-MedArtMiss-Pit,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,15,200,10,100,10,150,255,1,ZNULLECM,NavGunSensor,1,BLHARDPT.PIE,0,0,1 NX-Emp-MultiArtMiss-Pit,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,15,200,10,100,10,150,255,1,ZNULLECM,NavGunSensor,1,BLHARDPT.PIE,0,0,1 -NX-Emp-Plasma-Pit,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,15,200,10,100,10,150,255,1,ZNULLECM,NavGunSensor,1,Blaamnt2.Pie,0,0,1 NX-Tower-ATMiss,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,400,2,15,300,10,40,10,150,255,1,ZNULLECM,NavGunSensor,1,Blgrdnex.Pie,0,0,1 NX-Tower-PulseLas,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,400,2,15,300,10,40,10,150,255,1,ZNULLECM,NavGunSensor,1,Blgrdnex.Pie,0,0,1 NX-Tower-Rail1,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,400,2,15,300,10,40,10,150,255,1,ZNULLECM,NavGunSensor,1,Blgrdnex.Pie,0,0,1 @@ -104,15 +105,15 @@ PillBox4,DEFENSE,Level All,BUNKER,0,1,1,Concrete,400,1,20,500,10,125,10,150,255, PillBox5,DEFENSE,Level All,BUNKER,0,1,1,Concrete,400,1,20,500,10,125,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.Pie,0,0,1 PillBox6,DEFENSE,Level All,BUNKER,0,1,1,Concrete,400,1,20,500,10,175,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.Pie,0,0,1 WallTower-HPVcannon,DEFENSE,Level Two-Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,300,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.pie,0,0,1 -Emplacement-PlasmaCannon,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,400,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 -Emplacement-PulseLaser,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,300,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 -Emplacement-PrisLas,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,200,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 -Emplacement-Rail2,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,300,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 -Emplacement-Rail3,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,400,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 -Emplacement-HvyATrocket,DEFENSE,Level All,BUNKER,0,1,1,Concrete,400,1,20,500,10,225,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.Pie,0,0,1 +Emplacement-PlasmaCannon,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,425,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 +Emplacement-PulseLaser,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,325,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 +Emplacement-PrisLas,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,175,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 +Emplacement-Rail2,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,325,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 +Emplacement-Rail3,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,425,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 +Emplacement-HvyATrocket,DEFENSE,Level All,BUNKER,0,1,1,Concrete,400,1,20,500,10,250,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.Pie,0,0,1 Emplacement-MortarPit-Incenediary,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,350,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.pie,0,0,1 Emplacement-HeavyLaser,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,350,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,adv-bunker.pie,0,0,1 -Plasmite-flamer-bunker,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,400,10,175,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.Pie,0,0,1 +Plasmite-flamer-bunker,DEFENSE,Level Three,BUNKER,0,1,1,Concrete,400,1,20,500,10,175,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blcanpil.Pie,0,0,1 Sys-CB-Tower01,DEFENSE,Level All,HARD,0,1,1,Concrete,400,3,15,400,0,100,10,150,255,0,ZNULLECM,Sys-CBTower01,1,BLGUARDR.PIE,0,0,0 Sys-NEXUSLinkTOW,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,3,15,400,0,100,10,0,255,0,ZNULLECM,NavGunSensor,1,Blgrdnex.Pie,0,0,1 Sys-NX-CBTower,DEFENSE,Level All,HARD,0,1,1,Concrete,400,3,15,400,0,100,10,150,255,0,ZNULLECM,Sys-CBTower01,1,Blgrdnex.Pie,0,0,0 @@ -158,13 +159,14 @@ X-Super-MassDriver,DOOR,Level All,HARD,0,2,2,Concrete,1000,1,15,1200,10,1000,10, X-Super-Missile,DOOR,Level All,HARD,0,2,2,Concrete,1000,1,15,1200,10,900,10,100,255,1,ZNULLECM,DefaultSensor1Mk1,1,STWPFCAN.PIE,0,0,1 X-Super-Rocket,DOOR,Level All,HARD,0,2,2,Concrete,1000,1,15,1200,10,800,10,100,255,1,ZNULLECM,DefaultSensor1Mk1,1,STWPFCAN.PIE,0,0,1 mineinfo,DOOR,Level All,SOFT,0,1,1,Concrete,30,1,5,150,0,5,1,0,255,0,ZNULLECM,BaBaSensor,1,mineinfo.PIE,0,0,1 -ContaMine1,DEFENSE,Level One,MEDIUM,0,1,1,Concrete,10,1,10,100,1,50,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Minevis.pie,0,0,1 -ContaMine2,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,20,1,12,100,1,75,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Minevis.pie,0,0,1 -ContaMine7,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,25,1,20,200,1,100,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,MineVis.pie,0,0,1 -ContaMine3,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,30,1,12,200,1,125,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,MineVis.pie,0,0,1 -ContaMine4,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,50,1,12,200,1,200,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Minevis.pie,0,0,1 -ContaMine5,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,70,1,14,300,1,250,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,MineVis.pie,0,0,1 -ContaMine6,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,70,1,14,300,1,250,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Minevis.pie,0,0,1 -ContaMine8,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,100,1,20,200,1,500,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,MineVis.pie,0,0,1 -AAShield,DEFENSE,Level Three,MEDIUM,1,2,2,Concrete,1000,3,20,300,10,1000,10,150,255,0,ZNULLECM,ZNULLSENSOR2,1,shield.pie,0,0,1 +ContaMine1,DEFENSE,Level One,MEDIUM,0,1,1,Concrete,10,1,10,100,1,50,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine2,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,20,1,12,100,1,75,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine7,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,25,1,20,200,1,100,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine3,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,30,1,12,200,1,125,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine4,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,50,1,12,200,1,200,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine5,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,70,1,14,300,1,250,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine6,DEFENSE,Level Two-Three,MEDIUM,0,1,1,Concrete,70,1,14,300,1,250,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +ContaMine8,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,100,1,20,200,1,500,1,150,255,0,ZNULLECM,ZNULLSENSOR,1,Mine_Vis.pie,0,0,1 +AAShield,DEFENSE,Level Three,HARD,1,2,2,Concrete,1000,3,20,1000,20,1000,20,150,255,0,ZNULLECM,ZNULLSENSOR2,1,shield.pie,0,0,1 A0CommandCentreCO,HQ,Level Two,HARD,0,2,2,Concrete,500,3,10,500,10,100,30,300,1,1,ZNULLECM,CCSensor,0,blhq3.pie,0,1,0 +GShield,DEFENSE,Level Three,HARD,1,2,2,Concrete,1000,3,20,1000,20,1000,20,150,255,0,ZNULLECM,ZNULLSENSOR2,1,shield2.pie,0,0,1 diff --git a/data/mods/multiplay/ntw/stats/structureweapons.txt b/data/mods/multiplay/ntw/stats/structureweapons.txt index 489a03781..37c7e54bf 100644 --- a/data/mods/multiplay/ntw/stats/structureweapons.txt +++ b/data/mods/multiplay/ntw/stats/structureweapons.txt @@ -112,3 +112,6 @@ ContaMine8,WepMine8,NULL,NULL,NULL,111 WallTower-Rail4,RailGun4Mk1,NULL,NULL,NULL,112 A0TankTrap2,EMP-Trap,NULL,NULL,NULL,113 AAShield,AAS-weapon,NULL,NULL,NULL,114 +GShield,GS-weapon,NULL,NULL,NULL,115 +Incenediary-Mortar-Pit,Incenediary-Mo,NULL,NULL,NULL,116 +Laser-Sat,LasSat2,NULL,NULL,NULL,117 diff --git a/data/mods/multiplay/ntw/stats/templates.txt b/data/mods/multiplay/ntw/stats/templates.txt index 6091ab6b7..b910f9fd7 100644 --- a/data/mods/multiplay/ntw/stats/templates.txt +++ b/data/mods/multiplay/ntw/stats/templates.txt @@ -1,11 +1,11 @@ ConstructionDroid,102,TruckBody,ZNULLBRAIN,Spade1Mk1,ZNULLECM,0,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 ConstructorDroid,103,TruckBody,ZNULLBRAIN,Spade1Mk1,ZNULLECM,5,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -BarbarianTrike,104,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -BabaBusCan,105,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -BarbarianRKBuggy,106,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -BabaFireTruck,107,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -BabaJeep,108,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -BaBaPeople,109,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +BarbarianTrike,104,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +BabaBusCan,105,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +BarbarianRKBuggy,106,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +BabaFireTruck,107,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +BabaJeep,108,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +BaBaPeople,109,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 BarbarianBuggy,110,B3body-sml-buggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 ViperLtCannonWheels,177,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 ViperLtCannonHTracks,178,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 @@ -64,13 +64,13 @@ NP-M-LitCannon-Halftrack,381,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfT NX-M-Con-Hover,382,Body7ABT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,0 SuperTank2,383,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 NX-L-Repair-Hover,384,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,LightRepair1,DROID,NavGunSensor,0 -ATESTVEHICLE,386,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,V-Tol04,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +ATESTVEHICLE,386,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,V-Tol04,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 ZNULLDESIGN,389,ZNULLBODY,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,ZNULLPROP,ZNULLREPAIR,ZNULLDROID,ZNULLSENSOR,0 NP-M-LtAT-Hover,390,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 NP-H-HvyCannon-Hover,391,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 NP-M-MG3-Hover,392,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ATESTVTOL,393,Body2SUP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,0,V-Tol04,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -ASPOTTER,394,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,V-Tol04,ZNULLREPAIR,DROID,Sys-CBTurret01,0 +ATESTVTOL,393,Body2SUP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,YES,V-Tol04,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +ASPOTTER,394,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,V-Tol04,ZNULLREPAIR,DROID,Sys-CBTurret01,0 NP-M-CON-HalfTrack,397,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 NP-M-CON-Track,398,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 NP-M-Repair-HalfTrack,399,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 diff --git a/data/mods/multiplay/ntw/stats/weaponmodifier.txt b/data/mods/multiplay/ntw/stats/weaponmodifier.txt index 1fd0c889b..ed3a0637d 100644 --- a/data/mods/multiplay/ntw/stats/weaponmodifier.txt +++ b/data/mods/multiplay/ntw/stats/weaponmodifier.txt @@ -7,10 +7,10 @@ ANTI PERSONNEL,Hover,100 ANTI PERSONNEL,Jump,100 ANTI PERSONNEL,Propellor,100 ANTI PERSONNEL,Lift,25 -ANTI TANK,Legged,70 -ANTI TANK,Wheeled,90 +ANTI TANK,Legged,75 +ANTI TANK,Wheeled,95 ANTI TANK,Half-Tracked,105 -ANTI TANK,Tracked,125 +ANTI TANK,Tracked,115 ANTI TANK,Ski,100 ANTI TANK,Hover,125 ANTI TANK,Jump,50 @@ -21,8 +21,8 @@ ARTILLERY ROUND,Wheeled,100 ARTILLERY ROUND,Half-Tracked,100 ARTILLERY ROUND,Tracked,100 ARTILLERY ROUND,Ski,100 -ARTILLERY ROUND,Hover,125 -ARTILLERY ROUND,Jump,125 +ARTILLERY ROUND,Hover,115 +ARTILLERY ROUND,Jump,115 ARTILLERY ROUND,Propellor,100 ARTILLERY ROUND,Lift,100 BUNKER BUSTER,Legged,33 @@ -44,11 +44,11 @@ FLAMER,Jump,130 FLAMER,Propellor,100 FLAMER,Lift,80 ANTI AIRCRAFT,Legged,115 -ANTI AIRCRAFT,Wheeled,100 -ANTI AIRCRAFT,Half-Tracked,85 -ANTI AIRCRAFT,Tracked,70 -ANTI AIRCRAFT,Ski,125 -ANTI AIRCRAFT,Hover,125 -ANTI AIRCRAFT,Jump,125 +ANTI AIRCRAFT,Wheeled,90 +ANTI AIRCRAFT,Half-Tracked,75 +ANTI AIRCRAFT,Tracked,60 +ANTI AIRCRAFT,Ski,115 +ANTI AIRCRAFT,Hover,115 +ANTI AIRCRAFT,Jump,115 ANTI AIRCRAFT,Propellor,100 -ANTI AIRCRAFT,Lift,125 +ANTI AIRCRAFT,Lift,115 diff --git a/data/mods/multiplay/ntw/stats/weapons.txt b/data/mods/multiplay/ntw/stats/weapons.txt index d0ead1dc3..e06c8631e 100644 --- a/data/mods/multiplay/ntw/stats/weapons.txt +++ b/data/mods/multiplay/ntw/stats/weapons.txt @@ -2,7 +2,7 @@ ZNULLWEAPON,Level All,0,250,0,0,0,0,Mibnkgun.Pie,MIBNKTUR.PIE,FXLRocPd.Pie,FXMfl TUTMG,Level One,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.Pie,FXTracer.Pie,FXMETHIT.PIE,FXDIRTsp.Pie,FXSSplsh.Pie,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 Superweapon2,Level All,10,50,100,1,5,9999,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.Pie,FXTracer.Pie,FXGRDexl.Pie,FXDIRTsp.Pie,FXSSplsh.Pie,0,512,768,2,1,4,1,0,0,9999,1000,100,1000,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,20,0,NO,25,0,0,0,0 Superweapon,Level All,10,50,100,1,5,9999,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.Pie,FXTracer.Pie,FXGRDexl.Pie,FXDIRTsp.Pie,FXSSplsh.Pie,0,512,768,99,90,4,1,0,0,9999,64,99,1000,0,0,0,10,100,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI TANK,180,90,-60,YES,NO,20,0,NO,25,0,0,0,0 -SpyTurret01,Level All,300,1300,200,0,0,200,GNHECM3.PIE,TRHECM3.PIE,FXLRocPd.pie,FXMflare.pie,FXMPExp.pie,FXMPExp.pie,FXSSplsh.pie,0,640,2048,100,100,1,1,0,0,2,0,0,0,0,0,0,0,0,1200,0,YES,KINETIC,ELECTRONIC,DIRECT,ANTI PERSONNEL,180,90,-60,YES,YES,0,0,NO,100,0,0,1,0 +SpyTurret01,Level All,300,1400,200,0,0,5,GNHECM3.PIE,TRHECM3.PIE,FXLRocPd.pie,FXMflare.pie,FXMPExp.pie,FXMPExp.pie,FXSSplsh.pie,0,640,2048,100,100,1,1,0,0,2,0,0,0,0,0,0,0,0,1200,0,YES,KINETIC,ELECTRONIC,DIRECT,ANTI PERSONNEL,180,90,-60,YES,YES,0,0,NO,100,0,0,1,0 RocketSuper,Level All,1200,1250,150000,1,10,5,GNWPFRKT.PIE,TRWPFRKT.PIE,FXMRocAt.Pie,FXMflare.Pie,FXGRDexl.Pie,FXGRDexl.Pie,FXSSplsh.Pie,0,512,2048,70,80,5,2,2,150,400,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,NO,0,128,YES,100,100,0,0,0 Rocket-VTOL-Pod,Level All,75,375,200,1,0,5,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.pie,FXMflare.pie,FXMPExp.pie,FXMPExp.pie,FXSSplsh.pie,0,640,960,50,30,10,2,0,0,20,0,0,0,0,0,0,10,10,1500,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,YES,10,128,YES,25,100,7,1,0 Rocket-VTOL-LtA-T,Level All,100,500,250,1,0,5,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.pie,FXMPLME.PIE,FXGRDexl.pie,FXGRDexl.pie,FXSSplsh.pie,0,512,1152,50,60,1,2,2,120,160,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,0,128,YES,50,100,3,1,0 @@ -23,7 +23,7 @@ RailGun1-VTOL,Level Three,250,1000,400,1,20,100,GNLGSS.PIE,TRLGSS.PIE,FXLGauss.p QuadRotAAGun,Level Two-Three,150,1200,10000,1,20,200,gnhair2.Pie,TRHAIR.PIE,FXCan40m.Pie,FXAALSH2.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.Pie,0,768,2048,70,75,3,2,0,0,45,64,25,20,0,0,0,10,100,1500,20,YES,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,20,0,YES,20,1,0,1,0 QuadMg1AAGun,Level All,100,400,10000,1,20,175,gnlair.Pie,TRMAIR.PIE,FXCan40m.Pie,FXAALSHT.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.Pie,0,768,2048,70,75,6,2,0,0,40,64,25,20,0,0,0,10,100,1400,20,YES,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,30,0,YES,20,1,0,1,0 PlasmiteFlamer,Level Three,250,800,1000,1,0,150,GNMFLMRP.PIE,TRMFLMRP.PIE,FXCan20m.pie,FXLProj.pie,FXMNExp.pie,FXMNExp.pie,FXSSplsh.pie,0,640,768,75,50,90,1,0,0,70,0,0,0,60,50,96,10,0,800,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,0,YES,1,0,0,1,0 -PlasmaHeavy,Level Three,75,375,10000,1,10,5,GNHPLASM.PIE,TRHPLASM.PIE,FXMHowt.Pie,FXMflare.Pie,FXLExp.Pie,FXLExp.Pie,FXMSplsh.Pie,0,1920,10000,40,99,60,2,0,0,500,256,99,250,30,100,32,10,10,400,20,NO,HEAT,FLAME,INDIRECT,ANTI TANK,180,90,-30,YES,YES,50,768,YES,200,0,0,0,0 +PlasmaHeavy,Level Three,450,1600,10000,1,10,5,GNHPLASM.PIE,TRHPLASM.PIE,FxCan75m.pie,FXMflare.Pie,FXLExp.Pie,FXLExp.Pie,FXMSplsh.Pie,0,1920,10000,50,80,400,1,0,0,500,256,99,250,30,100,32,10,10,400,20,NO,HEAT,ENERGY,INDIRECT,ANTI TANK,180,90,-30,YES,YES,50,768,YES,200,0,0,1,0 NX-CyborgPulseLas,Level All,125,375,120,1,10,100,CY_LAS.PIE,Cybodyjp.Pie,FXLasRot.Pie,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,0,0 NX-CyborgMiss,Level All,250,700,120,1,10,100,CY_MISS.PIE,Cybodyjp.Pie,FXLRocPd.Pie,FXMflare.Pie,FXMExp.Pie,FXMExp.Pie,FXSSplsh.Pie,0,640,2048,70,80,100,2,0,0,300,0,0,0,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-60,YES,NO,20,64,YES,50,100,0,0,0 NX-CyborgChaingun,Level All,10,50,120,1,10,50,cy_gun.Pie,Cybodyjp.Pie,FXLMgun2.Pie,FXTracer.Pie,FXMETHIT.PIE,FXDIRTsp.Pie,FXSSplsh.Pie,0,512,768,70,50,6,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 @@ -33,15 +33,15 @@ MortarEMP,Level Three,200,2000,5000,1,0,5,gnhmorte.pie,TRHRMORT.PIE,FXMMort.pie, Mortar3ROTARYMk1,Level Two-Three,300,900,1000,1,0,5,GNHMORT.PIE,TRHRMORT.PIE,FXMMort.pie,FXCAmmo.pie,FXLExp.pie,FXLExp.pie,FXLSplsh.pie,0,1152,2304,25,35,20,2,0,0,40,64,99,40,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 Mortar2Mk1,Level All,200,1000,5000,1,0,5,GNHMORT2.PIE,TRHRMORT.PIE,FXMMort.pie,FXCAmmo.pie,FXMNExp.pie,FXLExp.pie,FXMNExp.pie,0,1152,2304,25,35,90,2,0,0,80,96,99,80,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 Mortar1Mk1,Level One-Two,100,500,2000,1,0,5,GNMMORT.PIE,TRMMORT.PIE,FxCan75m.pie,FXTracer.pie,FXLExp.pie,FXLExp.pie,FXLSplsh.pie,0,1152,2304,25,35,60,2,0,0,50,64,99,40,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 -Mortar-Incenediary,Level Three,375,1500,12000,1,22,900,gnhsuper.pie,TRHSUPER.PIE,FxCan75m.PIE,FXLThrow2.pie,fxgrdexS.PIE,fxgrdexS.PIE,FXLSplsh.PIE,0,1024,2048,70,60,140,1,0,0,135,90,35,30,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,120,0,YES,50,0,0,1,0 +Mortar-Incenediary,Level Three,325,1200,12000,1,22,750,gnhsuper.pie,TRHSUPER.PIE,FxCan75m.PIE,FXLThrow2.pie,fxgrdexS.PIE,fxgrdexS.PIE,FXLSplsh.PIE,0,1024,2048,70,60,120,1,0,0,135,90,35,30,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,120,0,YES,50,0,0,1,0 MissileSuper,Level Three,1600,1200,150000,1,10,50,gnwpfmsl.Pie,Trwpfmsl.Pie,FXMMort.Pie,FXMPLME.PIE,FXMExp.Pie,FXMExp.Pie,FXSSplsh.Pie,0,640,4000,80,90,0,2,4,200,800,96,99,100,0,0,0,0,10,1000,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ARTILLERY ROUND,180,90,-30,YES,NO,10,128,YES,100,0,0,0,0 Missile-VTOL-AT,Level Two-Three,300,1200,400,1,10,10,Gnmmslat.pie,Trmmslat.pie,FXMRocAt.pie,FXMPLME.PIE,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,640,2048,70,80,0,2,2,75,300,0,0,0,0,0,0,0,0,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,20,-30,YES,NO,20,64,YES,50,100,2,1,0 Missile-MdArt,Level All,500,1500,6000,1,0,100,gnhmsl.pie,TRHMSL.PIE,FXMMort.pie,FXSCUDM.PIE,FXVLSWav.pie,FXVLSWav.pie,FXLSplsh.pie,0,1920,7000,25,35,300,1,0,0,1000,256,70,250,60,100,192,0,10,500,20,NO,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,10,256,YES,100,0,0,1,0 -Missile-LtSAM,Level Two-Three,200,800,400,1,10,50,Gnmmslsa.Pie,Trmmslsa.Pie,FXATMiss.Pie,FXMflare.Pie,FXMExp.Pie,FXSExp.Pie,FXSSplsh.Pie,0,2000,2562,60,70,5,2,2,150,250,0,0,0,0,0,0,0,10,800,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,128,YES,100,1,0,1,0 -Missile-HvySAM,Level Two-Three,300,1200,6000,1,10,10,Gnhmslsa.Pie,Trhmslsa.Pie,FXICBM.PIE,FXMflare.Pie,FXMExp.Pie,FXMExp.Pie,FXMExp.Pie,0,2000,2562,60,70,5,2,4,150,250,0,0,0,0,0,0,0,10,700,20,NO,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,512,YES,100,1,0,1,0 +Missile-LtSAM,Level Two-Three,200,800,400,1,10,50,Gnmmslsa.Pie,Trmmslsa.Pie,FXATMiss.Pie,FXMflare.Pie,FXMExp.Pie,FXSExp.Pie,FXSSplsh.Pie,0,2000,2562,60,70,5,2,2,150,250,0,0,0,0,0,0,0,10,800,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,128,YES,100,1,0,0,0 +Missile-HvySAM,Level Two-Three,300,1200,6000,1,10,10,Gnhmslsa.Pie,Trhmslsa.Pie,FXICBM.PIE,FXMflare.Pie,FXMExp.Pie,FXMExp.Pie,FXMExp.Pie,0,2000,2562,60,70,5,2,4,150,250,0,0,0,0,0,0,0,10,700,20,NO,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,512,YES,100,1,0,0,0 Missile-HvyArt,Level Two-Three,500,1500,10000,1,0,50,gnhmslab.pie,trhmslab.pie,FXICBM.PIE,FXHPLME.PIE,FXMExp.pie,FXMExp.pie,FXMExp.pie,0,2000,25000,25,35,5,1,6,600,250,128,99,150,0,0,0,0,10,800,20,NO,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,0,45,-30,YES,NO,25,512,YES,100,0,0,1,0 Missile-A-T,Level Three,300,1200,400,1,10,10,Gnmmslat.Pie,Trmmslat.Pie,FXMRocAt.Pie,FXMPLME.PIE,FXMExp.Pie,FXMExp.Pie,FXSSplsh.Pie,0,640,2048,70,80,0,2,2,75,300,0,0,0,0,0,0,0,0,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,0,0,1,0 -MG5TWINROTARY,Level Three,180,800,1200,1,0,300,Gnhmg1.pie,Trhmg.pie,FXMgnVul.pie,FXTracer.pie,FXMETHIT.PIE,FXDIRTsp.pie,FXSSplsh.pie,0,768,1152,75,50,4,1,0,0,30,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,30,0,NO,100,100,0,1 +MG5TWINROTARY,Level Three,180,800,1200,1,0,250,Gnhmg1.pie,Trhmg.pie,FXMgnVul.pie,FXTracer.pie,FXMETHIT.PIE,FXDIRTsp.pie,FXSSplsh.pie,0,768,1152,75,50,4,1,0,0,30,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,30,0,NO,100,100,0,1 MG4ROTARYMk1,Level Two-Three,120,400,600,1,0,150,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.pie,FXTracer.pie,FXMETHIT.PIE,FXDIRTsp.pie,FXSSplsh.pie,0,768,1152,75,50,4,1,0,0,20,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,30,0,NO,100,100,0,1 MG4ROTARY-VTOL,Level Two-Three,120,400,600,1,0,10,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.pie,FXTracer.pie,FXMETHIT.PIE,FXDIRTsp.pie,FXSSplsh.pie,0,768,1152,75,50,4,1,0,0,20,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,30,0,NO,100,100,20,1 MG3Mk1,Level All,50,250,600,1,15,150,GNMMG1.PIE,TRMMG.PIE,FXMgnVic.Pie,FXTracer.Pie,FXMETHIT.PIE,FXDIRTsp.Pie,FXSSplsh.Pie,0,640,960,75,50,7,1,0,0,17,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,20,0,NO,150,100,0,1 @@ -55,7 +55,7 @@ MG2-Pillbox,Level All,25,125,400,1,10,125,0,0,FXLMgun2.Pie,FXTracr2.Pie,FXMETHIT MG3-Pillbox,Level All,50,250,300,1,0,10,0,0,FXMgnVic.Pie,FXTracer.pie,FXMETHIT.PIE,FXDIRTsp.pie,FXSSplsh.pie,0,640,960,75,50,7,1,0,0,17,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,150,100,4,1 MG4ROTARY-Pillbox,Level Two-Three,100,500,600,1,0,300,0,0,FXMgnVul.Pie,FXTracer.pie,FXMETHIT.PIE,FXDIRTsp.pie,FXSSplsh.pie,0,768,1152,75,50,4,1,0,0,20,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,30,0,NO,100,100,0,1 MassDriver,Level All,2000,2000,150000,1,120,900,GNWPFGSS.PIE,TRWPFGSS.PIE,FXSHgssM.Pie,FXSHgssA.Pie,FXFlech4.Pie,FXFlech4.Pie,FXVLSWav.Pie,0,128,2048,80,90,200,1,0,0,1000,0,0,0,0,0,0,0,10,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,150,0,0,0,0 -LasSat,Level Three,0,0,600,1,0,500,0,0,fxhhowt.pie,FXSCUDM.PIE,FXVLSWav.pie,FXVLSWav.pie,FXVLSWav.pie,0,0,0,70,50,6000,1,0,0,11000,300,99,8500,400,300,448,10,10,1000,20,YES,HEAT,LAS_SAT,DIRECT,ARTILLERY ROUND,180,90,-60,YES,YES,0,0,YES,100,0,0,0,0 +LasSat,Level Three,0,0,600,1,0,500,0,0,fxhhowt.pie,FXSCUDM.PIE,FXVLSWav.pie,FXVLSWav.pie,FXVLSWav.pie,0,640,960,70,50,6000,1,0,0,11000,300,99,8500,400,300,448,10,10,1000,20,YES,HEAT,LAS_SAT,DIRECT,ARTILLERY ROUND,180,90,-60,YES,YES,0,0,YES,100,0,0,0,0 Laser4-PlasmaCannon,Level Three,400,1600,6000,1,0,700,GNHPLSMA.PIE,TRHLAS.PIE,FXLasRot.pie,FXBlueLaser.pie,FXFlecht.Pie,FXFlecht.Pie,FXFlecht.Pie,0,1024,2048,80,65,60,1,0,0,330,0,0,0,0,0,0,10,0,1500,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,200,0,0,1,0 Laser3BEAMMk1,Level Three,150,500,300,1,0,100,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.pie,FxLFLSH.pie,FXSExp.pie,FXSExp.pie,FXSSplsh.pie,0,768,1536,80,65,30,1,0,0,90,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,0,0,1,0 Laser3BEAM-VTOL,Level Three,150,500,300,1,0,50,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.pie,FxLFLSH.pie,FXSExp.pie,FXSExp.pie,FXSSplsh.pie,0,768,1536,80,65,30,1,0,0,90,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,0,-60,YES,NO,10,0,YES,100,100,3,1,0 @@ -78,7 +78,7 @@ CyborgCannon,Level All,79,500,120,1,1,200,cy_CAN.Pie,Cybody.Pie,FXCan20m.Pie,FXc Cyb-Wpn-Thermite,Level All,79,500,120,1,10,100,cy_therm.Pie,Cybody.Pie,FXCan20m.Pie,FXLThrow.Pie,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,512,640,75,50,120,1,0,0,60,0,0,0,60,25,96,10,0,800,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 Cyb-Wpn-Rail1,Level All,79,500,120,1,20,400,CY_RAIL.PIE,Cybody.Pie,FXLGauss.Pie,FXGAmmo.Pie,FXFlecht.Pie,FXFlecht.Pie,FXFlecht.Pie,0,768,1536,80,70,40,1,0,0,150,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,50,0,NO,100,0,0,0,0 Cyb-Wpn-Laser,Level All,79,500,120,1,10,100,CY_LAS.PIE,Cybody.Pie,FXLasRot.Pie,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,0,0 -Cyb-Wpn-Grenade,Level Two-Three,249,1200,170,1,1,250,Cy_Snipe.pie,scbody.Pie,FXLasRot.pie,FXBlueLaser.pie,FXFLSHL.PIE,FXFLSHL.PIE,FXSSplsh.pie,0,1250,2304,30,70,320,1,0,0,600,0,0,0,20,300,64,0,0,9999,0,NO,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,50,-30,YES,YES,200,1024,YES,100,100,0,0,0 +Cyb-Wpn-Grenade,Level Two-Three,249,1200,170,1,1,250,Cy_Snipe.pie,scbody.Pie,FXLasRot.pie,FXBlueLaser.pie,FXFLSHL.PIE,FXFLSHL.PIE,FXSSplsh.pie,0,1250,2304,30,70,320,1,0,0,330,0,0,0,20,300,64,0,0,9999,0,NO,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,50,-30,YES,YES,200,1024,YES,100,100,0,0,0 Cyb-Wpn-Atmiss,Level All,79,500,120,1,10,5,cy_miss2.pie,Cybody.Pie,FXATMiss.Pie,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.Pie,0,512,1152,50,60,1,2,2,120,160,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,0,0,0,0 Cyb-Hvywpn-TK,Level Two,249,1200,170,1,1,100,sc_tk.Pie,scbody.Pie,FXATMiss.PIE,FXMPLME.PIE,fxgrdexS.PIE,fxgrdexS.PIE,FXSSplsh.Pie,0,768,1536,50,60,1,2,2,140,250,0,0,0,0,0,0,10,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,0,0 Cyb-Hvywpn-RailGunner,Level Three,249,1200,170,1,1,500,sc_rail2.Pie,scbody.Pie,FXMGauss.Pie,FXGammoM.Pie,FXflech2.Pie,FXflech2.Pie,FXMSWave.Pie,0,768,1536,80,70,60,1,0,0,200,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 @@ -89,11 +89,11 @@ Cyb-Hvywpn-Acannon,Level Two,249,1200,170,1,1,500,sc_asscn.Pie,scbody.Pie,FXVulC Cyb-Hvywpn-A-T,Level Three,249,1200,170,1,1,100,sc_ATM.Pie,scbody.Pie,FXATMiss.Pie,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.Pie,0,640,2048,70,80,0,2,2,75,300,0,0,0,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,0,0,0,0 CommandTurret1,Level All,160,160,1000,0,1,1600,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.Pie,FXBeam.Pie,FXSFlms.Pie,FXSFlms.Pie,FXSFlms.Pie,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 CannonSuper,Level All,1000,2000,150000,0,0,500,GNWPFCAN.PIE,TRWPFCAN.PIE,FXSHcanM.Pie,FXSHcanA.Pie,fxgrdexS.Pie,fxgrdexS.Pie,FXSSplsh.Pie,0,128,2048,80,90,160,1,0,0,500,32,25,0,0,0,0,10,0,1000,20,NO,KINETIC,CANNON,DIRECT,ANTI TANK,0,90,-60,YES,YES,150,0,YES,100,0,0,0,0 -Cannon6TwinAslt,Level Two-Three,300,1200,3000,1,0,600,Gnhvcan2.pie,trhvcan2.pie,FXLMgun2.pie,FXTracr2.pie,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1152,70,50,30,1,0,0,40,32,25,0,0,0,0,10,0,1150,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,35,0,YES,50,0,0,1,0 -Cannon5VulcanMk1,Level Two-Three,150,600,1500,1,0,300,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.pie,FXTracer.pie,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1152,70,50,20,1,0,0,20,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,1,0 -Cannon5Vulcan-VTOL,Level All,150,600,1500,1,0,10,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.pie,FXTracer.pie,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1024,70,50,20,1,0,0,28,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,25,0,YES,50,100,7,1,0 -Cannon4AUTOMk1,Level Two-Three,300,1200,10000,1,10,800,GNNAVBIG.PIE,trhvcan2.PIE,FxCan75m.PIE,FXCAmmo2.PIE,FXGRDexl.pie,FXGRDexl.pie,FXMSplsh.PIE,0,768,1536,70,50,140,1,0,0,100,90,30,25,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,120,0,YES,90,0,0,1,0 -Cannon4AUTO-VTOL,Level All,300,1200,10000,1,10,100,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.pie,FXCAmmo2.PIE,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1536,70,50,140,1,0,0,120,90,30,25,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,100,0,YES,50,100,3,0,0 +Cannon6TwinAslt,Level Two-Three,300,1200,3000,1,0,600,Gnhvcan2.pie,trhvcan2.pie,FXLMgun2.pie,FXTracr2.pie,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,512,1536,70,50,30,1,0,0,35,32,25,0,0,0,0,10,0,1150,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,35,0,YES,50,0,0,1,0 +Cannon5VulcanMk1,Level Two-Three,150,600,1500,1,0,300,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.pie,FXTracer.pie,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1152,70,50,15,1,0,0,20,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,1,0 +Cannon5Vulcan-VTOL,Level All,150,600,1500,1,0,10,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.pie,FXTracer.pie,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1024,70,50,20,1,0,0,30,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,25,0,YES,50,100,7,1,0 +Cannon4AUTOMk1,Level Two-Three,275,1100,10000,1,10,650,GNNAVBIG.PIE,trhvcan2.PIE,FxCan75m.PIE,FXCAmmo2.PIE,FXGRDexl.pie,FXGRDexl.pie,FXMSplsh.PIE,0,768,1536,70,50,120,1,0,0,100,90,30,25,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,120,0,YES,90,0,0,1,0 +Cannon4AUTO-VTOL,Level All,275,1100,10000,1,10,650,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.pie,FXCAmmo2.PIE,FXMExp.pie,FXMExp.pie,FXSSplsh.pie,0,768,1536,70,50,130,1,0,0,100,90,30,25,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,100,0,YES,50,100,3,0,0 Cannon375mmMk1,Level All,200,600,5000,1,0,400,GNHCAN.PIE,TRHCAN.PIE,FxCan75m.pie,FXCAmmo.pie,FXGRDexl.pie,FXGRDexl.pie,FXSSplsh.pie,0,768,1024,70,50,50,1,0,0,70,64,25,20,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,150,0,YES,90,0,0,1 Cannon2A-TMk1,Level All,125,400,3000,1,0,200,GNMCAN.PIE,TRMCAN.PIE,FXCan40m.pie,FXCAmmo.pie,FXGRDexl.pie,FXGRDexl.pie,FXMSteam.pie,0,640,960,70,50,45,1,0,0,45,32,25,10,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,60,0,0,1,0 Cannon1Mk1,Level All,75,200,1000,1,15,100,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.Pie,FXcam20.Pie,FXGRDexl.Pie,FXGRDexl.Pie,FXSSplsh.Pie,0,640,960,70,50,40,1,0,0,30,16,20,5,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-90,YES,NO,100,0,YES,30,0,0,1,0 @@ -133,3 +133,6 @@ Cyborg_RocketMine,Level All,99,500,300,1,10,100,cy_MineSwp.pie,cybody.pie,FXMRoc scv-Hvywpn-HPV,Level All,14,130,10,1,10,40,cy_gren.Pie,Cybody.Pie,FxCan75m.Pie,FXTracer.Pie,FXLExp.Pie,FXLExp.Pie,FXLSplsh.Pie,0,800,1300,25,35,40,1,0,0,20,64,99,40,0,0,0,0,10,800,20,YES,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,0,128,YES,50,0,0,1,0 EMP-Trap,Level All,1,1,1,1,0,1,gnhemp.pie,trhemp.pie,FXHBLas.pie,FXBeam.pie,FXSFlms.pie,FXSFlms.pie,FXSFlms.pie,0,128,128,70,50,600,1,0,0,70,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,EMP,DIRECT,ANTI TANK,180,90,-60,YES,NO,150,0,YES,1,0,0,1,0 AAS-weapon,Level All,1,1,1,1,0,1,gnhemp.pie,trhemp.pie,FXHBLas.pie,FXBeam.pie,FXSFlms.pie,FXSFlms.pie,FXSFlms.pie,0,1800,1800,100,100,10,1,0,0,150,0,0,0,0,0,0,10,0,1000,20,NO,KINETIC,EMP,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,512,YES,100,50,0,1,0 +GS-weapon,Level All,1,1,1,1,0,1,gnhemp.pie,trhemp.pie,FXHBLas.pie,FXBeam.pie,FXSFlms.pie,FXSFlms.pie,FXSFlms.pie,0,256,2048,98,99,1,1,0,0,150,0,0,0,0,0,0,10,0,1000,20,NO,KINETIC,EMP,HOMING-DIRECT,ARTILLERY ROUND,180,90,-90,YES,YES,25,0,YES,100,0,0,1 +Incenediary-Mo,Level Three,150,750,2000,1,20,5,GNMMORTI.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,60,2,0,0,50,64,99,40,60,20,64,0,10,1000,20,NO,HEAT,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1 +LasSat2,Level Three,100,500,600,1,10,500,gnlassat.pie,trlassat.pie,FXHBLas.PIE,FXBeam.PIE,FXMelt.PIE,FXSFlms.PIE,FXSFlms.PIE,0,640,960,70,50,3000,1,0,0,3000,256,99,1000,0,0,0,10,0,1000,20,YES,HEAT,LAS_SAT,DIRECT,ARTILLERY ROUND,180,90,-60,YES,NO,0,0,YES,100,0,0,0 diff --git a/data/mods/multiplay/ntw/stats/weaponsounds.txt b/data/mods/multiplay/ntw/stats/weaponsounds.txt index 94240b89b..ec264d45f 100644 --- a/data/mods/multiplay/ntw/stats/weaponsounds.txt +++ b/data/mods/multiplay/ntw/stats/weaponsounds.txt @@ -21,7 +21,7 @@ RailGun1-VTOL,gaussgun.ogg,smlexpl.ogg, 120 QuadRotAAGun,asltmg.ogg,smlexpl.ogg, 121 QuadMg1AAGun,mgbar2.ogg,smlexpl.ogg, 122 PlasmiteFlamer,plasflm.ogg,-1, 123 -PlasmaHeavy,medcan.ogg,lrgexpl.ogg, 124 +PlasmaHeavy,nxstower.ogg,nxsexpld.ogg, 124 NX-CyborgPulseLas,plslsr.ogg,lsrexpl.ogg, 125 NX-CyborgMiss,rocket.ogg,lrgexpl.ogg, 126 NX-CyborgChaingun,mgbar2.ogg,-1, 127 @@ -131,3 +131,6 @@ RailGun4Mk1,col020a.ogg,lrgexpl.ogg, 233 EMP-Trap,emp.ogg,-1, 234 AAS-weapon,emp.ogg,-1, 235 scv-Hvywpn-HPV,cybgrnd.ogg,smlexpl.ogg, 236 +GS-weapon,emp.ogg,-1, 237 +Incenediary-Mo,mortar.ogg,lrgexpl.ogg, 238 +LasSat2,bemlsr.ogg,lsrexpl.ogg,239 diff --git a/data/mods/multiplay/ntw/structs/blpower4.pie b/data/mods/multiplay/ntw/structs/blpower4.pie index 939201a62..3d620cad7 100644 --- a/data/mods/multiplay/ntw/structs/blpower4.pie +++ b/data/mods/multiplay/ntw/structs/blpower4.pie @@ -5,157 +5,157 @@ LEVELS 1 LEVEL 1 POINTS 152 0 0 0 - 90 0 0 - 64 0 64 - 0 0 90 - -64 0 64 - -90 0 0 - -64 0 -64 - 0 0 -90 - 64 0 -64 - 64 40 -64 - 0 40 -90 - -64 40 -64 - -90 40 0 - -64 40 64 - 0 40 90 - 64 40 64 - 90 40 0 + 85 0 0 + 59 0 59 + 0 0 85 + -59 0 59 + -85 0 0 + -59 0 -59 + 0 0 -85 + 59 0 -59 + 59 40 -59 + 0 40 -85 + -59 40 -59 + -85 40 0 + -59 40 59 + 0 40 85 + 59 40 59 + 85 40 0 0 40 0 - 45 40 -45 - 64 40 0 - 45 40 45 - 0 40 64 - -45 40 45 - -64 40 0 - -45 40 -45 - 0 40 -64 - 0 64 -64 - -45 64 -45 - -64 64 0 - -45 64 45 - 0 64 64 - 45 64 45 - 64 64 0 - 45 64 -45 + 40 40 -40 + 59 40 0 + 40 40 40 + 0 40 59 + -40 40 40 + -59 40 0 + -40 40 -40 + 0 40 -59 + 0 64 -59 + -40 64 -40 + -59 64 0 + -40 64 40 + 0 64 59 + 40 64 40 + 59 64 0 + 40 64 -40 0 247 0 - 0 64 -32 - 23 64 -23 - 32 64 0 - 23 64 23 - 0 64 32 - -23 64 23 - -32 64 0 - -23 64 -23 + 0 64 -27 + 18 64 -18 + 27 64 0 + 18 64 18 + 0 64 27 + -18 64 18 + -27 64 0 + -18 64 -18 0 64 0 - -36 0 -86 - 35 0 -87 - 86 0 -36 - 87 0 35 - 36 0 86 - -35 0 87 - -86 0 36 - -87 0 -35 - -115 0 49 - -116 0 -47 - -49 0 -115 - 47 0 -116 - 115 0 -49 - 116 0 47 - 49 0 115 - -47 0 116 - -87 88 -35 - -36 88 -86 - -49 88 -115 - -116 88 -47 - 35 88 -87 - 86 88 -36 - 115 88 -49 - 47 88 -116 - 116 88 47 - 87 88 35 - 36 88 86 - 49 88 115 - -35 88 87 - -86 88 36 - -115 88 49 - -47 88 116 - 87 40 35 - 86 40 -36 - 115 40 -49 - 116 40 47 - 49 40 115 - -47 40 116 - -35 40 87 - 36 40 86 - -115 40 49 - -116 40 -47 - -87 40 -35 - -86 40 36 - -49 40 -115 - 47 40 -116 - 35 40 -87 - -36 40 -86 - 104 224 104 - 87 0 87 - 104 0 80 - 121 0 87 - 128 0 104 - 121 0 121 - 104 0 128 - 87 0 121 - 80 0 104 - -104 224 104 - -121 0 87 - -87 0 87 - -80 0 104 - -87 0 121 - -104 0 128 - -121 0 121 - -128 0 104 - 104 224 -104 - 87 0 -121 - 104 0 -128 - 121 0 -121 - 128 0 -104 - 121 0 -87 - 87 0 -87 - 80 0 -104 - -104 224 -104 - -121 0 -121 - -104 0 -128 - -87 0 -121 - -80 0 -104 - -87 0 -87 - -104 0 -80 - -121 0 -87 - -128 0 -104 - -100 42 -90 - -90 42 -100 - -96 50 -68 - -68 50 -96 - -68 0 -96 - -96 0 -68 - 104 0 -80 - 90 42 -100 - 100 42 -90 - 68 50 -96 - 96 50 -68 - 96 0 -68 - 68 0 -96 - 100 42 90 - 90 42 100 - 95 50 68 - 68 50 96 - 68 0 96 - 95 0 68 - -104 0 80 - -90 42 100 - -100 42 90 - -68 50 95 - -96 50 68 - -96 0 68 - -68 0 95 + -31 0 -81 + 30 0 -82 + 81 0 -31 + 82 0 30 + 31 0 81 + -30 0 82 + -81 0 31 + -82 0 -30 + -110 0 44 + -111 0 -42 + -44 0 -110 + 42 0 -111 + 110 0 -44 + 111 0 42 + 44 0 110 + -42 0 111 + -82 88 -30 + -31 88 -81 + -44 88 -110 + -111 88 -42 + 30 88 -82 + 81 88 -31 + 110 88 -44 + 42 88 -111 + 111 88 42 + 82 88 30 + 31 88 81 + 44 88 110 + -30 88 82 + -81 88 31 + -110 88 44 + -42 88 111 + 82 40 30 + 81 40 -31 + 110 40 -44 + 111 40 42 + 44 40 110 + -42 40 111 + -30 40 82 + 31 40 81 + -110 40 44 + -111 40 -42 + -82 40 -30 + -81 40 31 + -44 40 -110 + 42 40 -111 + 30 40 -82 + -31 40 -81 + 99 224 99 + 82 0 82 + 99 0 75 + 116 0 82 + 123 0 99 + 116 0 116 + 99 0 123 + 82 0 116 + 75 0 99 + -99 224 99 + -116 0 82 + -82 0 82 + -75 0 99 + -82 0 116 + -99 0 123 + -116 0 116 + -123 0 99 + 99 224 -99 + 82 0 -116 + 99 0 -123 + 116 0 -116 + 123 0 -99 + 116 0 -82 + 82 0 -82 + 75 0 -99 + -99 224 -99 + -116 0 -116 + -99 0 -123 + -82 0 -116 + -75 0 -99 + -82 0 -82 + -99 0 -75 + -116 0 -82 + -123 0 -99 + -95 42 -85 + -85 42 -95 + -91 50 -63 + -63 50 -91 + -63 0 -91 + -91 0 -63 + 99 0 -75 + 85 42 -95 + 95 42 -85 + 63 50 -91 + 91 50 -63 + 91 0 -63 + 63 0 -91 + 95 42 85 + 85 42 95 + 90 50 63 + 63 50 91 + 63 0 91 + 90 0 63 + -99 0 75 + -85 42 95 + -95 42 85 + -63 50 90 + -91 50 63 + -91 0 63 + -63 0 90 POLYGONS 118 200 4 10 9 8 7 79 143 131 143 131 113 79 113 200 4 11 10 7 6 131 143 79 143 79 113 131 113 diff --git a/data/mods/multiplay/ntw/structs/shield.pie b/data/mods/multiplay/ntw/structs/shield.pie index c8da51b4e..ad9c99401 100644 --- a/data/mods/multiplay/ntw/structs/shield.pie +++ b/data/mods/multiplay/ntw/structs/shield.pie @@ -3,7 +3,7 @@ TYPE 200 TEXTURE 0 page-10-laboratories.png 256 256 LEVELS 1 LEVEL 1 -POINTS 52 +POINTS 36 58 0 -82 58 0 -54 46 79 -54 @@ -39,30 +39,14 @@ POINTS 52 0 72 -19 -41 0 -19 41 0 -54 - 41 0 -19 - 1230 -71 -90 - 1211 -72 134 - 90 -71 1280 - -135 -71 1261 - -1280 -69 90 - -1261 -68 -134 - -90 -69 -1280 - 135 -69 -1261 - -35 600 -83 - -84 600 -34 - -83 600 35 - -34 600 84 - 35 600 83 - 84 600 34 - 83 600 -35 - 34 600 -84 -POLYGONS 30 - 200 4 3 2 1 0 179 59 191 59 191 88 179 88 - 200 4 7 6 5 4 191 59 179 59 179 88 191 88 - 200 4 11 10 9 8 179 59 191 59 191 88 179 88 - 200 4 15 14 13 12 191 59 179 59 179 88 191 88 - 200 4 19 18 17 16 179 59 191 59 191 88 179 88 - 200 4 23 22 21 20 191 59 179 59 179 88 191 88 + 41 0 -19 +POLYGONS 23 + 200 4 3 2 1 0 88 55 88 34 57 34 57 55 + 200 4 7 6 5 4 57 34 57 55 88 55 88 34 + 200 4 11 10 9 8 88 57 88 32 57 32 57 57 + 200 4 15 14 13 12 57 32 57 57 88 57 88 32 + 200 4 19 18 17 16 57 55 57 34 88 34 88 55 + 200 4 23 22 21 20 57 34 57 55 88 55 88 34 200 4 27 26 25 24 176 114 176 90 192 90 192 114 200 4 26 29 28 25 176 90 176 114 192 114 192 90 200 3 25 28 24 192 90 192 114 192 114 @@ -71,19 +55,12 @@ POLYGONS 30 200 4 32 35 34 31 176 90 176 114 192 114 192 90 200 3 31 34 30 192 90 192 114 192 114 200 3 35 32 33 176 114 176 90 176 114 - 200 4 19 22 23 18 174 126 132 126 132 114 174 114 - 200 4 11 14 15 10 174 126 132 126 132 114 174 114 - 200 4 3 6 7 2 174 126 132 126 132 114 174 114 + 200 4 19 22 23 18 88 55 57 55 57 34 88 34 + 200 4 11 14 15 10 88 57 57 57 57 32 88 32 + 200 4 3 6 7 2 88 55 57 55 57 34 88 34 200 4 22 19 16 21 88 114 122 114 130 142 80 142 200 4 18 23 20 17 122 114 88 114 80 142 130 142 200 4 14 11 8 13 88 114 122 114 130 142 80 142 200 4 10 15 12 9 122 114 88 114 80 142 130 142 200 4 6 3 0 5 88 114 122 114 130 142 80 142 - 200 4 2 7 4 1 122 114 88 114 80 142 130 142 - 200 4 47 39 38 48 79 256 256 256 256 250 79 250 - 200 4 49 37 36 50 79 256 256 256 256 250 79 250 - 200 4 51 43 42 44 79 256 256 256 256 250 79 250 - 200 4 45 41 40 46 79 250 256 250 256 256 79 256 - 200 4 49 50 51 48 20 137 0 137 0 135 36 135 - 200 4 48 51 44 47 36 135 0 135 0 137 36 137 - 200 4 47 44 45 46 36 137 0 137 0 135 20 135 \ No newline at end of file + 200 4 2 7 4 1 122 114 88 114 80 142 130 142 \ No newline at end of file diff --git a/data/mods/multiplay/ntw/structs/shield2.pie b/data/mods/multiplay/ntw/structs/shield2.pie new file mode 100644 index 000000000..f3582687f --- /dev/null +++ b/data/mods/multiplay/ntw/structs/shield2.pie @@ -0,0 +1,66 @@ +PIE 2 +TYPE 200 +TEXTURE 0 page-10-laboratories.png 256 256 +LEVELS 1 +LEVEL 1 +POINTS 36 + 58 0 -82 + 58 0 -54 + 46 79 -54 + 46 79 -82 + -59 0 -54 + -59 0 -82 + -46 79 -82 + -46 79 -54 + 59 0 -18 + 59 0 19 + 46 79 19 + 46 79 -18 + -59 0 19 + -59 0 -18 + -46 79 -18 + -46 79 19 + 59 0 54 + 59 0 82 + 46 78 82 + 46 79 54 + -58 0 82 + -58 0 54 + -46 79 54 + -46 78 82 + -41 0 19 + 0 72 19 + 0 72 54 + -41 0 54 + 41 0 19 + 41 0 54 + -41 0 -54 + 0 72 -54 + 0 72 -19 + -41 0 -19 + 41 0 -54 + 41 0 -19 +POLYGONS 23 + 200 4 3 2 1 0 179 59 191 59 191 88 179 88 + 200 4 7 6 5 4 191 59 179 59 179 88 191 88 + 200 4 11 10 9 8 179 59 191 59 191 88 179 88 + 200 4 15 14 13 12 191 59 179 59 179 88 191 88 + 200 4 19 18 17 16 179 59 191 59 191 88 179 88 + 200 4 23 22 21 20 191 59 179 59 179 88 191 88 + 200 4 27 26 25 24 176 114 176 90 192 90 192 114 + 200 4 26 29 28 25 176 90 176 114 192 114 192 90 + 200 3 25 28 24 192 90 192 114 192 114 + 200 3 29 26 27 176 114 176 90 176 114 + 200 4 33 32 31 30 176 114 176 90 192 90 192 114 + 200 4 32 35 34 31 176 90 176 114 192 114 192 90 + 200 3 31 34 30 192 90 192 114 192 114 + 200 3 35 32 33 176 114 176 90 176 114 + 200 4 19 22 23 18 174 126 132 126 132 114 174 114 + 200 4 11 14 15 10 174 126 132 126 132 114 174 114 + 200 4 3 6 7 2 174 126 132 126 132 114 174 114 + 200 4 22 19 16 21 88 114 122 114 130 142 80 142 + 200 4 18 23 20 17 122 114 88 114 80 142 130 142 + 200 4 14 11 8 13 88 114 122 114 130 142 80 142 + 200 4 10 15 12 9 122 114 88 114 80 142 130 142 + 200 4 6 3 0 5 88 114 122 114 130 142 80 142 + 200 4 2 7 4 1 122 114 88 114 80 142 130 142 \ No newline at end of file diff --git a/data/mods/multiplay/ntw/texpages/page-10-laboratories.png b/data/mods/multiplay/ntw/texpages/page-10-laboratories.png index abc9ea4f9..1d37e89f0 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-10-laboratories.png and b/data/mods/multiplay/ntw/texpages/page-10-laboratories.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-111-laboratories.png b/data/mods/multiplay/ntw/texpages/page-111-laboratories.png index 1b4795b08..63a022c93 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-111-laboratories.png and b/data/mods/multiplay/ntw/texpages/page-111-laboratories.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-12-player-buildings.png b/data/mods/multiplay/ntw/texpages/page-12-player-buildings.png index b3462b0c8..96a7b6e87 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-12-player-buildings.png and b/data/mods/multiplay/ntw/texpages/page-12-player-buildings.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-13-player-buildings.png b/data/mods/multiplay/ntw/texpages/page-13-player-buildings.png index 58f8bfd2b..1427e79e6 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-13-player-buildings.png and b/data/mods/multiplay/ntw/texpages/page-13-player-buildings.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-14-droid-hubs.png b/data/mods/multiplay/ntw/texpages/page-14-droid-hubs.png index 94b172215..92458b4a9 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-14-droid-hubs.png and b/data/mods/multiplay/ntw/texpages/page-14-droid-hubs.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-15-droid-hubs.png b/data/mods/multiplay/ntw/texpages/page-15-droid-hubs.png index bf73145fe..7fc66fa5c 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-15-droid-hubs.png and b/data/mods/multiplay/ntw/texpages/page-15-droid-hubs.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-16-droid-drives.png b/data/mods/multiplay/ntw/texpages/page-16-droid-drives.png index c0f98792a..a596946eb 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-16-droid-drives.png and b/data/mods/multiplay/ntw/texpages/page-16-droid-drives.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-17-droid-weapons.png b/data/mods/multiplay/ntw/texpages/page-17-droid-weapons.png index 6a8497373..800a4686b 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-17-droid-weapons.png and b/data/mods/multiplay/ntw/texpages/page-17-droid-weapons.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-18-fx.png b/data/mods/multiplay/ntw/texpages/page-18-fx.png index 120c5c4f9..61df53f68 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-18-fx.png and b/data/mods/multiplay/ntw/texpages/page-18-fx.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-30.png b/data/mods/multiplay/ntw/texpages/page-30.png index cf1402927..a0f42b79c 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-30.png and b/data/mods/multiplay/ntw/texpages/page-30.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-8-player-buildings-bases.png b/data/mods/multiplay/ntw/texpages/page-8-player-buildings-bases.png index 29ec65bfe..012594df5 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-8-player-buildings-bases.png and b/data/mods/multiplay/ntw/texpages/page-8-player-buildings-bases.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-rockies.png b/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-rockies.png index 9c2954843..cfec759ab 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-rockies.png and b/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-rockies.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-urban.png b/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-urban.png index 77ae3d348..fc6d37d3e 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-urban.png and b/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases-urban.png differ diff --git a/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases.png b/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases.png index 803d40629..a59ecfabc 100644 Binary files a/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases.png and b/data/mods/multiplay/ntw/texpages/page-9-player-buildings-bases.png differ diff --git a/data/mods/multiplay/ntw/wrf/piestats.wrf b/data/mods/multiplay/ntw/wrf/piestats.wrf index ea59c6d26..ec5da1ac7 100644 --- a/data/mods/multiplay/ntw/wrf/piestats.wrf +++ b/data/mods/multiplay/ntw/wrf/piestats.wrf @@ -5,6 +5,7 @@ //warzone.wz and new pies directory "structs" file IMD "shield.pie" +file IMD "shield2.pie" file IMD "tank-traps.pie" file IMD "adv-bunker.pie" file IMD "scav-res.pie" @@ -150,12 +151,12 @@ file IMD "micabin5.pie" file IMD "mifactry.pie" file IMD "miairtrf.pie" directory "components/weapons" -file IMD "cymiss2.pie" +file IMD "cy_miss2.pie" file IMD "gnhgss2.pie" -file IMD "icmineswp.pie" -file IMD "minevis.pie" -file IMD "cymineswp.pie" -file IMD "cysnipe.pie" +file IMD "ic_mineswp.pie" +file IMD "mine_vis.pie" +file IMD "cy_mineswp.pie" +file IMD "cy_snipe.pie" file IMD "gnmecm1.pie" file IMD "trmecm1.pie" file IMD "trlcon.pie" @@ -290,7 +291,7 @@ file IMD "sabod1.pie" file IMD "sabod2.pie" file IMD "sabod3.pie" file IMD "truck.pie" -file IMD "cybdstdi.pie" +file IMD "cybd_stdi.pie" file IMD "drhbod09.pie" file IMD "drhbod10.pie" file IMD "drhbod11.pie" diff --git a/data/mods/multiplay/ntw/wrf/vidmem.wrf b/data/mods/multiplay/ntw/wrf/vidmem.wrf index 4e21e562c..2fa0edca3 100644 --- a/data/mods/multiplay/ntw/wrf/vidmem.wrf +++ b/data/mods/multiplay/ntw/wrf/vidmem.wrf @@ -36,3 +36,11 @@ file TEXPAGE "page-24-fx.png" file TEXPAGE "page-25-sky-arizona.png" file TEXPAGE "page-28-naval.png" file TEXPAGE "page-111-laboratories.png" +file TEXPAGE "page-59-more-weapons.png" +file TEXPAGE "page-44-mud.png" +file TEXPAGE "page-45-yellow-sand.png" +file TEXPAGE "page-46-cliff.png" +file TEXPAGE "page-47-tiles.png" +file TEXPAGE "page-42-rock.png" +file TEXPAGE "page-80-water-1.png" +file TEXPAGE "page-81-water-2.png" diff --git a/data/mods/multiplay/ntw/wrf/vidmem2.wrf b/data/mods/multiplay/ntw/wrf/vidmem2.wrf index 2423d8703..e418c7954 100644 --- a/data/mods/multiplay/ntw/wrf/vidmem2.wrf +++ b/data/mods/multiplay/ntw/wrf/vidmem2.wrf @@ -36,3 +36,9 @@ file TEXPAGE "page-24-fx.png" file TEXPAGE "page-25-sky-urban.png" file TEXPAGE "page-28-naval.png" file TEXPAGE "page-111-laboratories.png" +file TEXPAGE "page-47-tiles.png" +file TEXPAGE "page-49-dirt.png" +file TEXPAGE "page-51-debris.png" +file TEXPAGE "page-52-plants-on-rock.png" +file TEXPAGE "page-80-water-1.png" +file TEXPAGE "page-81-water-2.png" diff --git a/data/mods/multiplay/ntw/wrf/vidmem3.wrf b/data/mods/multiplay/ntw/wrf/vidmem3.wrf index b7c0e2e94..3c55127ac 100644 --- a/data/mods/multiplay/ntw/wrf/vidmem3.wrf +++ b/data/mods/multiplay/ntw/wrf/vidmem3.wrf @@ -36,3 +36,15 @@ file TEXPAGE "page-24-fx.png" file TEXPAGE "page-25-sky-urban.png" file TEXPAGE "page-28-naval.png" file TEXPAGE "page-111-laboratories.png" +file TEXPAGE "page-59-more-weapons.png" +file TEXPAGE "page-42-rock.png" +file TEXPAGE "page-46-cliff.png" +file TEXPAGE "page-49-dirt.png" +file TEXPAGE "page-54-snow-grass.png" +file TEXPAGE "page-55-grass.png" +file TEXPAGE "page-56-gravel.png" +file TEXPAGE "page-57-snow.png" +file TEXPAGE "page-58-snow-gravel.png" +file TEXPAGE "page-47-tiles.png" +file TEXPAGE "page-80-water-1.png" +file TEXPAGE "page-81-water-2.png" diff --git a/data/mods/multiplay/ntw/wrf/vidmemc.wrf b/data/mods/multiplay/ntw/wrf/vidmemc.wrf index 02c83b66f..879322361 100644 --- a/data/mods/multiplay/ntw/wrf/vidmemc.wrf +++ b/data/mods/multiplay/ntw/wrf/vidmemc.wrf @@ -35,3 +35,4 @@ file TEXPAGE "page-23-fx.png" file TEXPAGE "page-24-fx.png" file TEXPAGE "page-28-naval.png" file TEXPAGE "page-111-laboratories.png" +file TEXPAGE "page-59-more-weapons.png" diff --git a/data/mods/multiplay/old-1.10-balance/doc/readme.txt b/data/mods/multiplay/old-1.10-balance/doc/readme.txt index c45454faf..89b80c43d 100644 --- a/data/mods/multiplay/old-1.10-balance/doc/readme.txt +++ b/data/mods/multiplay/old-1.10-balance/doc/readme.txt @@ -1,2 +1,2 @@ -This Mod sets the in Game balance (stats) back to Pumpkins 1.10 Version, +This Mod sets the in Game balance (stats) back to Pumpkins 1.10 Version, has the GPL+2 license and is made by Delphinio ;). \ No newline at end of file diff --git a/data/mods/multiplay/old-1.10-balance/images/frontend0.png b/data/mods/multiplay/old-1.10-balance/images/frontend0.png index 4053f2dbf..83a1aee98 100644 Binary files a/data/mods/multiplay/old-1.10-balance/images/frontend0.png and b/data/mods/multiplay/old-1.10-balance/images/frontend0.png differ diff --git a/data/mods/multiplay/old-1.10-balance/messages/strings/names.txt b/data/mods/multiplay/old-1.10-balance/messages/strings/names.txt index 04242dc16..4f64f8aa5 100644 --- a/data/mods/multiplay/old-1.10-balance/messages/strings/names.txt +++ b/data/mods/multiplay/old-1.10-balance/messages/strings/names.txt @@ -1,1935 +1,1956 @@ -/* Names data file for localisation - * The id's should be less than 20 chars - * - * Text like this "*text*" is not final and should not be translated. - */ - -/* - * VEHICLES - */ - -/* FINAL VEHICLES */ -ZNULLDESIGN "New Design" - -/* PLAYER 0 VEHICLES */ -Transporter "Transport" -ConstructionDroid "Truck" -ViperLtMGWheels "Machinegun Viper Wheels" - -/* PLAYER 1 - NP VEHICLES */ -ConstructionDroidNP "*NP - Scorpion Constructor*" -NP-L-RocketPod-Wheels "*NP-L-RocketPod-Wheels*" -NP-L-MRLS-Halftrack "*NP-L-MRLS-Half-track*" -NP-L-HMG-Halftrack "*NP-L-HMG-Half-track*" -NP-L-LtAT-Halftrack "*NP-L-LtAT-Half-track*" -NP-L-Sensor-Wheels "*NP-L-Sensor-Wheels*" -NP-M-Command-Halftrack "*NP-M-Command-Half-track*" -NP-M-Sensor-Wheels "*NP-M-Sensor-Wheels*" -NP-M-LitCannon-Halftrack "*NP-M-LtCannon-Half-track*" -NP-M-MdCannon-Halftrack "*NP-M-MdCannon-Half-track*" -NP-M-MdCannon-Tracks "*NP-M-MdCannon-Tracks*" -NP-M-LtMortar-Halftrack "*NP-M-LtMortar-Half-track*" -NP-M-HvyMortar-Halftrack "*NP-M-HvyMortar-Half-track*" -NP-M-BB-Halftrack "*NP-M-BB-Half-track*" -NP-H-MdCannon-Tracks "*NP-H-MdCannon-Tracks*" -NP-H-HvyCannon-Tracks "*NP-H-HvyCannon-Tracks*" -//NP-Light-test-vehicle "*NP-L-MdCannon-Tracks*" - -NP-M-LtAT-Hover "*NP-M-LtAT-Hover*" -NP-H-HvyCannon-Hover "*NP-H-HvyCannon-Hover*" -NP-M-MG3-Hover "*NP-M-MG3-Hover*" -NP-M-CON-HalfTrack "*NP-M-CON-Half-track*" -NP-M-CON-Track "*NP-M-CON-Track*" -NP-M-Repair-HalfTrack "*NP-M-Repair-Half-track*" - -NP-M-Command-Track "*NP-M-Command-Track*" -//NP-M-Command-Hover "*NP-M-Command-Hover*" -NP-M-CBS-Halftrack "*NP-M-CBS-Halftrack*" -NP-L-LtCannon-Halftrack "*NP-L-LtCannon-Halftrack*" -//NP-H-MdCannon-Hover "*NP-H-MdCannon-Hover*" - -/* PLAYER 2 - CO VEHICLES */ -CO-M-Con-Htrack "*CO-M-Con-Htrack*" - -CO-M-Mortar1-Halftrack "*CO-M-Mortar1-Halftrack*" -CO-H-How105-Tracks "*CO-H-How105-Tracks*" -CO-H-How150-Tracks "*CO-H-How150-Tracks*" - -CO-M-AA1-HalfTrack "*CO-M-AA1-HalfTrack*" -CO-H-AA2-HalfTrack "*CO-H-AA2-HalfTrack*" - -CO-L-RotMG-Wheels "*CO-S-RotMG-Wheels*" -CO-M-MedCan-Tracks "*CO-M-MedCan-Tracks*" -CO-H-HvyCan-Tracks "*CO-H-HvyCan-Tracks*" - -CO-L-Rocket-VTOL-Pod-VTOL "*CO-L-POD-VTOL*" -//CO-L-RotCan-VTOL "*CO-L-RotCan-VTOL*" - -CO-L-RotMG-HalfTrack "*CO-L-RotMG-HalfTrack*" - -CO-M-Sensor-Half-Track "*CO-M-Sensor-Half-Track*" - -CO-L-Rocket-BB-Hover "*CO-L-Rocket-BB-Hover*" -CO-L-RotMg-Hover "*CO-L-RotMg-Hover*" - -CO-M-Repair-HalfTrack "*CO-M-Repair-HalfTrack*" -CO-M-CBS-Halftrack "*CO-M-CBS-Halftrack*" -CO-M-Vstrike-Halftrack "*CO-M-Vstrike-Halftrack*" -CO-M-VTOLCBS-Halftrack "*CO-M-VTOLCBS-Halftrack*" -CO-M-Command-Track "*CO-M-Command-Track*" -CO-H-Command-Track "*CO-H-Command-Track*" -CO-L-HMG-Wheels "*CO-L-HMG-Wheels*" -CO-L-POD-Wheels "*CO-L-POD-Wheels*" -CO-M-HPVCannon-Tracks "*CO-M-HPVCannon-Tracks*" -CO-M-MRL-Halftrack "*CO-M-MRL-Halftrack*" -CO-M-Rocket-LtA-T-Halftrack "*CO-M-Rocket-LtA-T-Halftrack*" -CO-M-Rocket-BB-Halftrack "*CO-M-Rocket-BB-Halftrack*" -CO-M-Rocket-HvyA-T-Track "*CO-M-Rocket-HvyA-T-Track*" -CO-H-RotCan-Track "*CO-H-RotCan-Track*" -CO-H-HPVCannon-Tracks "*CO-H-HPVCannon-Tracks*" -CO-H-Rocket-BB-Halftrack "*CO-H-BB-Halftrack*" -CO-M-HvMortar-Halftrack "*CO-M-HvMortar-Halftrack*" -CO-M-RotMortar-Halftrack "*CO-M-RotMortar-Halftrack*" -CO-H-RotHow-Track "*CO-H-RotHow-Track*" -CO-L-Rocket-LtA-T-VTOL "*CO-L-LtATRkt-VTOL*" -CO-L-MG2-VTOL "*CO-L-MG2-VTOL*" -CO-L-RotMG-VTOL "*CO-L-RotMG-VTOL*" -CO-M-Bomb1-VTOL "*CO-M-Bomb1-VTOL*" -CO-M-Bomb2-VTOL "*CO-M-Bomb2-VTOL*" -CO-M-QuadMG1AA-Halftrack "*CO-M-QuadMG1AA-Halftrack*" -CO-H-QuadRotAA-Halftrack "*CO-H-QuadRotAA-Halftrack*" -CO-L-Rocket-LtA-T-Hover "*CO-L-Rocket-LtA-T-Hover*" - -/* PLAYER 3 - NX VEHICLES */ - -//NX-M-Missile-LtSAM-HT "*NX-M-SAMissle1-HT*" -//NX-M-PulseLas1-Track "*NX-M-PulseLas1-Track*" -NX-M-Rail2-Hover "*NX-M-Rail2-Hover*" -NX-L-PulseLas-VTOL "*NX-L-PulseLas-VTOL*" -NX-L-Missile-A-T-VTOL "*NX-L-ASMiss-VTOL*" -//NX-L-Rail1-Whl "*NX-L-Rail1-Whl*" -NX-L-Sens-Hov "*NX-L-Sens-Hov*" -NX-M-Missile-A-T-Hover "*NX-M-ATMiss-Hov*" -NX-M-Com-Hover "*NX-M-Com-Track*" -NX-M-Con-Hover "*NX-M-Con-Hover*" -NX-L-Repair-Hover "*NX-L-Repair-Hover*" -NX-M-Link-Hover "*NX-M-Link-Hover*" -NX-M-Strike-Hover "*NX-M-Strike-Hover*" -NX-H-CBS-Hover "*NX-H-CBS-Hover*" -NX-M-VTOLCBS-Hover "*NX-M-VTOLCBS-Hover*" -NX-M-PulseLas-Hover "*NX-M-Laser2-Hover*" -NX-H-Rail3-Hover "*NX-H-Rail3-Hover*" -NX-H-BeamLas-Hover "*NX-H-BeamLas-Hover*" -NX-L-Missile-MdArt-Hover "*NX-L-MdMiss-Hover*" -NX-H-HvMiss-Hover "*NX-H-HvMiss-Hover*" -//NX-L-Missile-BB-VTOL "*NX-L-BBMiss-VTOL*" -NX-L-Rail1-VTOL "*NX-L-Rail1-VTOL*" -NX-H-Rail2-VTOL "*NX-H-Rail2-VTOL*" -//NX-M-HvySAM-Htrack "*NX-M-HvySAM-Htrack*" - -// NEXUS only Cyborgs -NX-Cyb-HvMiss-JUMP "*NX-Cyb-HvMiss-JUMP*" -NX-Cyb-PulseLas-JUMP "*NX-Cyb-PulseLas-JUMP*" -NX-Cyb-Rail1-JUMP "*NX-Cyb-JUMP*" -NX-Cyb-Miss-JUMP "*NX-Cyb-Miss-JUMP*" -Cyb-NXCybRail1-GRD "*Cyb-NXCybRail1-GRD*" -Cyb-NXCybATmiss-GRD "*Cyb-NXCybATmiss-GRD*" -Cyb-NXPulseLas-GRD "*Cyb-NXPulseLas-GRD*" -Cyb-NXCybRail1-JUMP "*Cyb-NXCybRail1-JUMP*" -Cyb-NXCybATmiss-JUMP "*Cyb-NXCybATmiss-JUMP*" -Cyb-NXPulseLas-JUMP "*Cyb-NXPulseLas-JUMP*" - -/* PLAYER 4 - FORCE EDITOR VEHICLES */ -ViperLtCannonWheels "Viper Light Cannon Wheels" -ViperFlameWheels "Viper Flamer Wheels" -ViperSensorWheels "Viper Sensor Wheels" -ViperLtCannonTracks "Viper Light Cannon Tracks" - -CobraHMGHalfTrack "Cobra Heavy Machinegun Half-track" -CobraMortarHalfTrack "Cobra Mortar Half-track" -CobraLtCnTrks "Cobra Light Cannon Tracks" - -/* PLAYER 5 - MULTIPLAYER VEHICLES */ -ConstructorDroid "Truck" -CyborgRotMgGround "Assault Gunner" - -/* PLAYER 6 - TEST VEHICLES */ - -// new player cyborgs - for Pete - -Cyb-CybChnGun-JUMP "*Cyb-CybChnGun-JUMP*" -ATESTVEHICLE "*TEST VEHICLE*" -ATESTVTOL "*TEST VTOL*" -ASPOTTER "*SPOTTER*" -AVTOLSPOTTER "*VTOL SPOTTER*" -Superbody "*Kev's Super Body*" -Superweapon "*Kev's Super Weapon*" -Superweapon2 "*Alex's Super Weapon*" -SuperTank "*Kev's Super Tank*" -SuperTank2 "*Alex's Killa*" - -ViperMedCnTrks "Viper Medium Cannon Tracks" -ViperRepairWheels "Viper Repair Wheels" -ViperRepairHalftrack "Viper Repair Half-track" -ViperMG01Wheels "Viper Machine Gun Wheels" -ViperMG02Wheels "Viper Twin Machinegun Wheels" -ViperMG02Halftrack "Viper Twin Machinegun Half-track" -ViperHMGHalftrack "Viper Heavy Machinegun Half-track" -ViperHMGTracks "Viper Heavy Machinegun Tracks" -ViperLtA-Twheels "Viper Lancer Wheels" -ViperPODWheels "Viper Mini-Pod Rockets Wheels" -ViperMRLWheels "Viper Mini-Rocket Artillery Wheels" -ViperBBWheels "Viper Bunker Buster Rockets Wheels" -ViperLtCannonHTracks "Viper Light Cannon Half Tracks" - -CobraMedCnTrks "Cobra Medium Cannon Tracks" -CobraHvyCnTrks "Cobra Heavy Cannon Tracks" -CobraSpadeTracks "Cobra Truck" -CobraSensorHalftrack "Cobra Sensor Half-track" -CobraFlameTracks "Cobra Flamer Tracks" -CobraHvyMortarHalftrack "Cobra Bombard Half-track" -CobraComHalftrack "Cobra Command Turret Half-track" -CobraLtA-Thalftrack "Cobra Lancer Half-track" -CobraMRLHalftrack "Cobra Mini-Rocket Artillery Half-track" - -PythonLtCnTrks "Python Light Cannon Tracks" -PythonMedCnTrks "Python Medium Cannon Tracks" -PythonHvyCnTrks "Python Heavy Cannon Tracks" -PythonComTracks "Python Commander Tracks" - -/* PLAYER 7 - SCAVENGER VEHICLES */ -BaBaPeople "Scavenger" -BabaJeep "Jeep" -BarbarianTrike "Trike" -BarbarianBuggy "Buggy" -BarbarianRKBuggy "Rocket Buggy" -BabaRKJeep "Rocket Jeep" -BabaFireTruck "Fire Truck" -BabaPickUp "Pick-Up Truck" -BabaFireCan "Fire Cannon" -BabaBusCan "School Bus" -BaBaCivilian "Civilian" - -/* FINAL CYBORGS */ -CyborgChain01Ground "Machinegunner" -CyborgFlamer01Grd "Flamer" -CyborgRkt01Ground "Lancer" -CyborgCannon01Grd "Heavy Gunner" - -CyborgChain01CGround "Machinegunner" -CyborgFlamer01CGrd "Flamer" -CyborgRkt01CGround "Lancer" -CyborgCannon01CGrd "Heavy Gunner" - -// Cyborgs - shared -Cyb-Chain-GROUND "Machinegunner" -Cyb-Flamer-GROUND "Cyborg Flamer" -Cyb-Cannon-GROUND "Heavy Gunner" -Cyb-Rocket-GROUND "Lancer" -Cyb-RotMG-GROUND "Assault Gunner" - -/* TEST CYBORGS */ -CyborgCan01Air "*TEST - Cyborg Cannon01 Air*" -CyborgCan01Ground "Cyborg Cannon" -CyborgRkt01Air "*TEST - Cyborg Rocket01 Air*" - -/* - * COMPONENTS * - */ - -/* BODIES */ -Body1REC "Viper" -Body2SUP "Leopard" -Body3MBT "Retaliation" -Body4ABT "Bug" -Body5REC "Cobra" -Body6SUPP "Panther" -Body7ABT "Retribution" -Body8MBT "Scorpion" -Body9REC "Tiger" -Body10MBT "Vengeance" -Body11ABT "Python" -Body12SUP "Mantis" - -TransporterBody "Transport Body" -ZNULLBODY "*Z NULL BODY*" - -B1BaBaPerson01 "*BaBa Body*" -B2JeepBody "*Jeep Body*" -B3body-sml-buggy01 "*Buggy Body*" -B4body-sml-trike01 "*Trike Body" -B3bodyRKbuggy01 "*Rocket Buggy Body*" -B2RKJeepBody "*Rocket Jeep Body*" -BusBody "*School Bus Body*" -FireBody "*Fire Engine Body*" - -/* Test Cyborg Body Parts */ -//CyborgCan1Air "*CyborgCannon1Air*" -//CyborgCan1Ground "*CyborgCannon1Ground*" -CyborgChain1Ground "*CyborgChaingun1Ground*" -//CyborgFlame1Ground "*CyborgFlamer1Ground*" -//CyborgRkt1Air "*CyborgRocket1Air*" -CyborgRkt1Ground "CyborgRocket1Ground*" -NX-Cyb-Rail1 "*NX-Cyb-Rail1*" -CyborgRotMG "*CyborgRotMG*" -//NX-CybMissGrnd "*NX-CybMissGrnd*" -NX-CybLasGrnd "*NX-CybLasGrnd*" -//NX-CybChain1Grnd "*NX-CybChain1Grnd*" - -// New Cyborg Bodies - Unique body for EACH template -CyborgCannonGrd "*Cyborg Cannon*" -// "*Cyborg Machine Gun*" -CyborgFlamerGrd "*Cyborg Flamer*" -CyborgCan1CGround "*Cyborg Cannon*" -CyborgChn1CCGround "*Cyborg Machine Gun*" -//CyborgChn01Ground "*Cyborg Machine Gun*" -CybFlamer01CGrd "*Cyborg Flamer*" -//CybRocketGrd "*Cyborg Rocket*" -CybRotMgGrd "*Cyborg Assault Gun*" - -//CyborgNXATMissGrd "*CyborgNXATMissGrd*" -//CyborgNXATMissJmp "*CyborgNXATMissJ*" -// "*CybNXCybRail1Grd*" -//CybNXCybRail1Jmp "*CybNXCybRail1J*" -CybNXPulseLasJmp "*CybNXPulseLasJ*" -//CybNXHvMissJmp "*CybNXHvMissJ*" -CybNXMissJmp "*CybNXMissJmp*" -//CybNXPulseLasJmp "*CybNXPulseLasJ*" -CybNXRail1Jmp "*CybNXRail1Jmp*" -//CybNXPulseLaserGrd "*CybNXPulseLaserJ*" -//NX-Cyb-HvMissile-JUMP "*NX-Cyb-HvMissile-J*" -//NX-Cyb-Missile-JUMP "*NX-CybMissGrnd*" -//NX-CybLasGrnd "*NX-CybLasGrnd*" -//NX-Cyb-Rail1-JUMP "*NX-Cyb-J*" - -/* BRAIN */ -ZNULLBRAIN "Z NULL BRAIN" -StandardBrain "*TEST - Standard Brain*" -ConstructionBrain "*TEST - ConstructionBrain*" -CommandBrain01 "Command Turret" - -/* PROGRAM */ -ZNULLPROGRAM "Z NULL PROGRAM" -program1 "*TEST - program #1" -Construct "*TEST - Construct" -RadarProgram "*TEST - Radar Program" -Demolish "Demolish" - -/* CONSTRUCTION */ -ZNULLCONSTRUCT "Z NULL CONSTRUCT" -Spade1Mk1 "Truck" - -/* PROPULSION */ -ZNULLPROP "Z NULL PROP" -wheeled01 "Wheels" -wheeled02 "Wheels II" -wheeled03 "Wheels III" -tracked01 "Tracks" -tracked02 "Tracks II" -tracked03 "Tracks III" -hover01 "Hover" -hover02 "Hover II" -hover03 "Hover III" -V-Tol "VTOL" -V-Tol02 "VTOL II" -V-Tol03 "VTOL III" -HalfTrack "Half-tracks" -HalfTrack02 "Half-tracks II" -HalfTrack03 "Half-tracks III" -CyborgLegs02 "Cyborg Propulsion II" -CyborgLegs03 "Cyborg Propulsion III" -//CyborgJets02 "Cyborg Jump Pack II" -//CyborgJets03 "Cyborg Jump Pack III" - -/*BABARIAN PROPULSIONS*/ -BaBaProp "BaBaProp" -BaBaLegs "BaBaLegs" - -/*CYBORG PROPULSIONS*/ -CyborgLegs "Cyborg Propulsion" -//CyborgJets "Cyborg Jump Pack" - -/* VEHICLE AUTO-REPAIR */ -ZNULLREPAIR "Z NULL REPAIR" -LightRepair1 "Mobile Repair Turret" - -/* ECM */ -ZNULLECM "Z NULL ECM" -//ECM1PylonMk1 "Jammer Tower" -//ECM1TurretMk1 "Jammer Turret" -//ECM1DefaultMk1 "*TEST - ECM1 Default Mk1*" -ECM1Default "*TEST - Baba ECM Default*" -//ECM2PylonMk1 "Jammer Tower II" -//ECM2TurretMk1 "Jammer Turret III" -//ECM2DefaultMk1 "*Improved ECM Default Mk1*" -//ECM3PylonMk1 "Jammer Tower III" -//ECM3TurretMk1 "Jammer Turret III" -//ECM3DefaultMk1 "*ECM3DefaultMk1*" - -/* SENSORS */ -ZNULLSENSOR "Z NULL SENSOR" -BaBaSensor "*BaBa Default Sensor*" -CCSensor "*CC Sensor*" -DefaultSensor1Mk1 "*Default Sensor1 Mk1*" -NavGunSensor "*NavGunSensor*" -SensorTower1Mk1 "Sensor Tower" -SensorTower2Mk1 "Hardened Sensor Tower" -SensorTurret1Mk1 "Sensor Turret" -Sys-CBTower01 "*CB Tower" -Sys-VTOLCBTower01 "VTOL CB Radar Tower" -Sys-VTOLRadarTower01 "VTOL CB Radar Tower" -UplinkSensor "Uplink Sensor" - -Sys-CBTurret01 "CB Radar Turret" -Sys-VstrikeTurret01 "VTOL Strike Turret" -Sys-VTOLCBTurret01 "VTOL CB Radar Turret" -Sys-NXLinkTurret01 "NEXUS Link" - -SpyTurret01 "Nexus Link Turret" - -/* PLAYER STRUCTURES */ -A0ResourceExtractor "Oil Derrick" -A0CommandCentre "Command Center" -A0LightFactory "Factory" -A0FacMod1 "Factory Module" -A0PowerGenerator "Power Generator" -A0PowMod1 "Power Module" -A0ResearchFacility "Research Facility" -A0ResearchModule1 "Research Module" -A0ADemolishStructure "Demolish Structure" -DemolishStructure "Demolish" -A0RepairCentre "Repair Center" -A0ComDroidControl "Command Relay Center" -A0HardcreteMk1CWall "Hardcrete Corner Wall" -A0HardcreteMk1Wall "Hardcrete Wall" - -A0VTolFactory1 "VTOL Factory" -A0CyborgFactory "Cyborg Factory" - -/* DEFENSIVE STRUCTURES */ -Tower-Projector "Inferno Emplacement" //previously "Inferno Guard Tower" -WallTower-Projector "Inferno Hardpoint" -Emplacement-RotMor "Pepperpot Pit" -Emplacement-RotHow "Hellstorm Emplacement" -//SuperEmplacement "*Super Gun*" -//PlasmaEmplacement "*Plasma Weapon*" - -AASite-TwinBof "Tornado AA Site" -AASite-QuadBof "Cyclone AA Site" -AASite-QuadMg1 "Hurricane AA Site" -AASite-QuadRotMg "Whirlwind AA Site" - -Emplacement-Rocket06-IDF "Ripple Rocket Battery" -//Tower-Missile1 "Lancer Guard Tower" -//Tower-Missile2 "Mini-Pod Rocket Guard Tower" -Tower-VulcanCan "Assault Cannon Guard Tower" -Tower-RotMg "Assault Gun Guard Tower" -Wall-RotMg "Assault Gun Hardpoint" -Wall-VulcanCan "Assault Cannon Hardpoint" - -/*SENSOR TOWERS*/ -Sys-SensoTower01 "Sensor Tower" -Sys-SensoTower02 "Hardened Sensor Tower" -//Sys-ECMTower01 "Jammer Tower" -Sys-CB-Tower01 "CB Tower" -Sys-VTOL-CB-Tower01 "VTOL CB Tower" -Sys-VTOL-RadarTower01 "VTOL Strike Tower" - -/*WALLTOWERS*/ -WallTower01 "Heavy Machinegun Hardpoint" -WallTower02 "Light Cannon Hardpoint" -WallTower03 "Medium Cannon Hardpoint" -WallTower04 "Heavy Cannon Hardpoint" -WallTower05 "Flamer Hardpoint" -WallTower06 "Lancer Hardpoint" - -GuardTower1 "Machinegun Guard Tower" -GuardTower2 "Twin Machinegun Guard Tower" -GuardTower3 "Heavy Machinegun Guard Tower" -GuardTower4 "Flamer Guard Tower" -GuardTower5 "Lancer Guard Tower" -GuardTower6 "Mini-Pod Rocket Guard Tower" - -/*PILLBOXES*/ -PillBox1 "Machinegun Bunker" -PillBox2 "Twin Machinegun Bunker" -PillBox3 "Heavy Machinegun Bunker" -PillBox4 "Light Cannon Bunker" -PillBox5 "Flamer Bunker" -PillBox6 "Lancer Bunker" - -/*TANKTRAPS*/ -A0TankTrap "Tank Traps" -A0TankTrap2 "Dragon's Teeth" -TankTrapC "Tank Traps" -TankTrap2C "Dragon's Teeth" - -/*VTOL STRUCTURES*/ -A0VtolPad "VTOL Rearming Pad" - -/* EMPLACEMENTS */ -Emplacement-Howitzer105 "Howitzer Emplacement" -Emplacement-PrisLas "Flashlight Emplacement" -//Emplacement-Super "*Emplacement-SuperGun*" -WallTower-PulseLas "Flashlight Hardpoint" -WallTower-Rail2 "Rail Gun Hardpoint" -GuardTower-BeamLas "*GuardTower-BeamLas*" -GuardTower-ATMiss "Scourge Missile Tower" -GuardTower-Rail1 "Needle Gun Tower" -Emplacement-Rail3 "Gauss Cannon Emplacement" - -/* PLAYER WEAPONS */ -Cannon1Mk1 "Light Cannon" -Cannon2A-TMk1 "Medium Cannon" -Cannon375mmMk1 "Heavy Cannon" -Cannon4AUTOMk1 "Hyper Velocity Cannon" -Cannon5VulcanMk1 "Assault Cannon" - -Flame1Mk1 "Flamer" -Flame2 "Inferno" - -Howitzer105Mk1 "Howitzer" -Howitzer105Mk1-Pit "Howitzer Emplacement" -Howitzer150Mk1 "Ground Shaker" -Howitzer150Mk1-Pit "Ground Shaker Emplacement" -Howitzer03-Rot "Hellstorm" -Howitzer03-Rot-Pit "Hellstorm Emplacement" -//Howitzer04-Inc "Hellfire" - -//Laser1PRISMATICMk1 "Flashlight" -Laser2PULSEMk1 "Pulse Laser" - - -MG1Mk1 "Machinegun" -MG1-Pillbox "Machinegun Bunker" -MG2Mk1 "Twin Machinegun" -MG2-Pillbox "Twin Machinegun Bunker" -MG3Mk1 "Heavy Machinegun" -MG3-Pillbox "Heavy Machinegun Bunker" -MG4ROTARYMk1 "Assault Gun" - -//Missile-BB "Devastator Missile" -Missile-A-T "Scourge Missile" -Missile-MdArt "Angel Missile" -Missile-HvySAM "Vindicator SAM" -Missile-HvyArt "Archangel Missile" - -Missile-LtSAM "Avenger SAM" -//Missile-VTOL-BB "VTOL Devastator Missile" -Missile-VTOL-AT "VTOL Scourge Missile" - -Mortar1Mk1 "Mortar" -Mortar1Mk1-Pit "Mortar Emplacement" -Mortar2Mk1 "Bombard" -Mortar2Mk1-Pit "Bombard Emplacement" -Mortar3ROTARYMk1 "Pepperpot" -Mortar3ROTARYMk1-Pit "Peperpot Emplacement" -RailGun1Mk1 "Needle Gun" -RailGun2Mk1 "Rail Gun" -RailGun3Mk1 "Gauss Cannon" -Rocket-LtA-T "Lancer" -Rocket-MRL "Mini-Rocket Artillery" -Rocket-BB "Bunker Buster" -//Rocket04-Scud "*Earthshaker*" -Rocket-Pod "Mini-Pod" -Rocket-IDF "Ripple Rockets" -Rocket-HvyA-T "Tank Killer" -Rocket-VTOL-BB "VTOL Bunker Buster" -Rocket-VTOL-Pod "VTOL Mini-Pod" -Rocket-VTOL-LtA-T "VTOL Lancer" -Rocket-VTOL-HvyA-T "VTOL Tank Killer" - -CyborgCannon "Heavy Gunner" -CyborgCannon01 "*Cyborg Cannon*" -CyborgRocket "Lancer" -CyborgChaingun "Machine Gunner" -CyborgFlamer01 "Flamer" - -TUTMG "Machinegun" - -CommandTurret1 "Command Turret" - -AAGun1Mk1 "Tornado Flak Turret" -AAGun2Mk1 "Cyclone Flak Turret" - -//Supergun "*Supergun*" -PlasmaHeavy "*Heavy Plasma Launcher*" - -QuadRotAAGun "Whirlwind AA Turret" -QuadMg1AAGun "Hurricane AA Turret" -NavaroneGun "*NavaroneGun*" - -NX-CyborgMiss "*NX-CyborgMiss*" -NX-CyborgChaingun "*NX-CyborgChaingun*" -NX-CyborgPulseLas "*NX-CyborgPulseLas*" - -LasSat "LasSat" - -Cannon1-VTOL "VTOL Cannon" -Cannon4AUTO-VTOL "VTOL Hyper Velocity Cannon" -Cannon5Vulcan-VTOL "VTOL Assault Cannon" -Laser2PULSE-VTOL "VTOL Pulse Laser" - -MG1-VTOL "VTOL Machinegun" -MG2-VTOL "VTOL Twin Machinegun" -MG3-VTOL "VTOL Heavy Machinegun" -MG4ROTARY-VTOL "VTOL Assault Gun" -RailGun1-VTOL "VTOL Needle Gun" -RailGun2-VTOL "VTOL Rail Gun" - -PBomb "Proximity Bomb Turret" -SPBomb "Proximity Superbomb Turret" - -Bomb1-VTOL-LtHE "VTOL Cluster Bombs Bay" -Bomb2-VTOL-HvHE "VTOL Heap Bomb Bay" -Bomb3-VTOL-LtINC "VTOL Phosphor Bomb Bay" -Bomb4-VTOL-HvyINC "VTOL Thermite Bomb Bay" - -// Collective Specific Defensive Structures -CollectiveWall "Collective Wall" -CollectiveCWall "Collective CWall" -CO-Tower-MG3 "*CO-Tower-MG3*" -CO-Tower-RotMG "*CO-Tower-RotMG*" -CO-Tower-MdCan "*CO-Tower-MdCan*" -CO-WallTower-HvCan "*CO-WallTower-HvCan*" -CO-WallTower-RotCan "*CO-WallTower-RotCan*" -CO-Tower-HVCan "*CO-Tower-HVCan*" -CO-Tower-HvFlame "*CO-Tower-HvFlame*" -CO-Tower-HvATRkt "*CO-Tower-HvATRkt*" -CO-Tower-LtATRkt "*CO-Tower-LtATRkt*" -CO-Emp-Mortar2-Pit "*CO-Emp-Mortar2-Pit*" -CO-Emp-How105-Pit "*CO-Emp-How105-Pit*" -//CO-Emp-How150-Pit "*CO-Emp-How150-Pit*" -//CO-Emp-RotHow-Pit "*CO-Emp-RotHow-Pit*" -CO-Emp-RotMortar-Pit "*CO-Emp-RotMortar-Pit*" -// CO-AASite-Flak1 "*CO-AASite-Flak1*" -// CO-AASite-Flak2 "*CO-AASite-Flak2*" -// CO-AASite-QuadMg1 "*CO-AASite-QuadMg1*" -// CO-AASite-QuadRotMg "*CO-AASite-QuadRotMg*" -CO-AASite-SAM1 "*CO-AASite-SAM1*" - -// NEXUS Specific Defensive Structures -NEXUSWall "NEXUS Wall" -NEXUSCWall "NEXUS CWall" -NX-Tower-Rail1 "*NX-Tower-Rail1*" -NX-Tower-ATMiss "*NX-Tower-ATMiss*" -NX-Tower-PulseLas "*NX-Tower-PulseLas*" -NX-WallTower-Rail2 "*NX-WallTower-Rail2*" -NX-WallTower-BeamLas "*NX-WallTower-BeamLas*" -NX-WallTower-Rail3 "*NX-WallTower-Rail3*" -NX-Emp-MedArtMiss-Pit "*NX-Emp-MedArtMiss-Pit*" -NX-Emp-MultiArtMiss-Pit "*NX-Emp-MultiArtMiss-Pit*" -NX-Emp-Plasma-Pit "*NX-Emp-Plasma-Pit*" -NX-AASite-SAM1 "*NX-AASite-SAM1*" -NX-AASite-SAM2 "*NX-AASite-SAM2*" - -/* - * RESEARCH TOPICS - */ -ZNullResearch "*Z Null Research*" - -CAM1RESEARCH "CAM1 RESEARCH" -ADVANCEDRESEARCH "ADVANCED RESEARCH" -CAM1VEHICLES "CAM1 VEHICLES" -CAM1WEAPONS "CAM1 WEAPONS" -CAM1SYSTEMS "CAM1 SYSTEMS" -CAM1DEFENSES "CAM1 DEFENSES" -CAM1STRUCTURES "CAM1 STRUCTURES" -CAM2RESEARCH "CAM2 RESEARCH" -CAM2VEHICLES "CAM2 VEHICLES" -CAM2CYBORGS "CAM2 CYBORGS" -CAM2WEAPONS "CAM2 WEAPONS" -CAM2SYSTEMS "CAM2 SYSTEMS" -CAM2DEFENSES "CAM2 DEFENSES" -CAM2STRUCTURES "CAM2 STRUCTURES" -//CAM2-COWall "CAM2 Collective Wall" -CAM3RESEARCH "CAM3 RESEARCH" -//CAM3VEHICLES "CAM3 VEHICLES" -//CAM3CYBORGS "CAM3 CYBORGS" -//CAM3WEAPONS "CAM3 WEAPONS" -//CAM3SYSTEMS "CAM3 SYSTEMS" -//CAM3DEFENSES "CAM3 DEFENSES" -//CAM3NOTUSED "CAM3 NOT USED" -//CAM3-NXWall "CAM3 NEXUS Wall" - -//R-Comp-IDFAccuracy01 "*IDF Fire Accuracy*" -R-Comp-CommandTurret01 "Command Turret" -R-Comp-SynapticLink "Synaptic Link" - -R-Comp-MissileCodes01 "Missile Targeting Codes" -R-Comp-MissileCodes02 "Second Level Missile Targeting Codes" -R-Comp-MissileCodes03 "Third Level Missile Firing Codes" - -R-Cyborg-Armor-Heat01 "Cyborg Thermal Armor" -R-Cyborg-Armor-Heat02 "Cyborg Thermal Armor Mk2" -R-Cyborg-Armor-Heat03 "Cyborg Thermal Armor Mk3" -R-Cyborg-Armor-Heat04 "Cyborg High Intensity Thermal Armor" -R-Cyborg-Armor-Heat05 "Cyborg High Intensity Thermal Armor Mk2" -R-Cyborg-Armor-Heat06 "Cyborg High Intensity Thermal Armor Mk3" - -R-Cyborg-Metals01 "Cyborg Composite Alloys" -R-Cyborg-Metals02 "Cyborg Composite Alloys Mk2" -R-Cyborg-Metals03 "Cyborg Composite Alloys Mk3" -R-Cyborg-Metals04 "Cyborg Dense Composite Alloys" -R-Cyborg-Metals05 "Cyborg Dense Composite Alloys Mk2" -R-Cyborg-Metals06 "Cyborg Dense Composite Alloys Mk3" -R-Cyborg-Metals07 "Cyborg Superdense Composite Alloys" -R-Cyborg-Metals08 "Cyborg Superdense Composite Alloys Mk2" -R-Cyborg-Metals09 "Cyborg Superdense Composite Alloys Mk3" -//R-Cyborg-Metals10 "Cyborg Bonded Laminates" - -R-Cyborg-Transport "Cyborg Transport" - -R-Cyborg-Wpn-BB "Bunker Blaster" -R-Cyborg-Wpn-Cannon "Heavy Gunner" -R-Cyborg-Wpn-Flamer "Flamer" -R-Cyborg-Wpn-MG "Machine Gunner" -R-Cyborg-Wpn-Rocket "Lancer" -R-Cyborg-Wpn-RotMG-Grd "Assault Gunner" -R-Cyborg-Wpn-Rail1-Grd "Needle Gunner" -R-Cyborg-Wpn-ATMiss-Grd "Scourge" -R-Cyborg-Wpn-Laser1-Grd "Flashlight Gunner" - -R-Cyborg-Wpn-BB-Jump "Jump Bunker Blaster" -R-Cyborg-Wpn-Cannon-Jump "Jump Heavy Gunner" -R-Cyborg-Wpn-Rocket-Jump "Jump Lancer" -R-Cyborg-Wpn-RotMG-Jump "Jump Assault Gunner" -R-Cyborg-Wpn-Rail1-Jump "Jump Needle Gunner" -R-Cyborg-Wpn-ATMiss-Jump "Jump Scourge" -R-Cyborg-Wpn-Laser1-Jump "Jump Flashlight Gunner" - -R-Cyborg-Jump01 "Cyborg Jump Pack" -R-Cyborg-Legs01 "Cyborg Propulsion" -R-Cyborg-Legs02 "Cyborg Propulsion II" -R-Cyborg-Legs03 "Cyborg Propulsion III" - -/* RESEARCH - DEFENSES */ -R-Defense-HardcreteWall "Hardcrete" -//R-Defense-HardcreteWall-CO "CO-Hardcrete" -R-Defense-HardcreteWall-NP "NP-Hardcrete" -//R-Defense-HardcreteWall-NX "NX-Hardcrete" -R-Defense-WallUpgrade01 "Improved Hardcrete" -R-Defense-WallUpgrade02 "Improved Hardcrete Mk2" -R-Defense-WallUpgrade03 "Improved Hardcrete Mk3" -R-Defense-WallUpgrade04 "Supercrete" -R-Defense-WallUpgrade05 "Supercrete Mk2" -R-Defense-WallUpgrade06 "Supercrete Mk3" -R-Defense-WallUpgrade07 "Plascrete" -R-Defense-WallUpgrade08 "Plascrete Mk2" -R-Defense-WallUpgrade09 "Plascrete MK3" -R-Defense-WallUpgrade10 "Plasteel" -R-Defense-WallUpgrade11 "Plasteel Mk2" -R-Defense-WallUpgrade12 "Plasteel Mk3" - -R-Defense-AASite-QuadBof "Cyclone AA Site" -R-Defense-AASite-QuadMg1 "Hurricane AA Site" -R-Defense-AASite-QuadRotMg "Whirlwind AA Site" -R-Defense-AASite-TwinBof "Tornado AA Flak Site" - -R-Defense-Emplacement-HPVcannon "HPV Cannon Emplacement" - -R-Defense-Howitzer "Howitzer Emplacement" -R-Defense-HvyA-Trocket "Tank Killer Emplacement" -R-Defense-HvyFlamer "Inferno Emplacement" -R-Defense-HvyHowitzer "Ground Shaker Emplacement" -R-Defense-HvyMor "Bombard Pit" - -//R-Defense-IncHow "Hellfire Emplacement" -R-Defense-IDFRocket "Ripple Rocket Battery" - -R-Defense-MdArtMissile "Angel Missile Battery" -R-Defense-HvyArtMissile "Archangel Missile Battery" -R-Defense-MortarPit "Mortar Pit" -R-Defense-MRL "Mini-Rocket Battery" - -R-Defense-Pillbox01 "Machinegun Bunker" -R-Defense-Pillbox03 "Heavy Machinegun Bunker" -R-Defense-Pillbox04 "Light Cannon Bunker" -R-Defense-Pillbox05 "Flamer Bunker" -R-Defense-Pillbox06 "Lancer Bunker" -R-Defense-PulseLas "Pulse Laser Emplacement" - -R-DefenssLas "Flashlight Emplacement" - -R-Defense-Rail2 "Rail Gun Emplacement" -R-Defense-Rail3 "Gauss Cannon Emplacement" -R-Defense-RotCannon "Assault Cannon Emplacement" -R-Defense-RotHow "Hellstorm Emplacement" -R-Defense-RotMG "Assault Gun Emplacement" -R-Defense-RotMor "Pepperpot Pit" - -R-Defense-SamSite1 "Avenger SAM Site" -R-Defense-SamSite2 "Vindicator SAM Site" - -R-Defense-TankTrap01 "Tank Traps" -R-Defense-TankTrap02 "Dragon's Teeth" - -R-Defense-Tower01 "Machinegun Guard Tower" -R-Defense-Tower03 "Heavy Machinegun Guard Tower" -R-Defense-Tower04 "Flamer Guard Tower" -R-Defense-Tower05 "Lancer Guard Tower" -R-Defense-Tower06 "Mini-Pod Rocket Guard Tower" - -R-Defense-GuardTower-ATMiss "Scourge Missile Tower" -R-Defense-GuardTower-Rail1 "Needle Gun Tower" - -R-Defense-WallTower01 "Heavy Machinegun Hardpoint" -R-Defense-WallTower02 "Light Cannon Hardpoint" -R-Defense-WallTower03 "Medium Cannon Hardpoint" -R-Defense-WallTower04 "Heavy Cannon Hardpoint" -R-Defense-WallTower05 "Flamer Hardpoint" -R-Defense-WallTower06 "Lancer Hardpoint" -R-Defense-Wall-RotMg "Assault Gun Hardpoint" -R-Defense-Wall-VulcanCan "Assault Cannon Hardpoint" -R-Defense-WallTower-A-Tmiss "Scourge Missile Hardpoint" -R-Defense-WallTower-HvyFlamer "Inferno Hardpoint" -R-Defense-WallTower-HvyA-Trocket "Tank Killer Hardpoint" -R-Defense-WallTower-HPVcannon "HPV Cannon Hardpoint" -R-Defense-WallTower-PulseLas "Flashlight Hardpoint" -R-Defense-WallTower-Rail2 "Rail Gun Hardpoint" -R-Defense-WallTower-Rail3 "Gauss Cannon Hardpoint" - -R-Struc-CommandRelay "Command Relay Post" - -R-Struc-Factory-Cyborg "Cyborg Factory" -R-Struc-Factory-Cyborg-Upgrade01 "Automated Cyborg Production" -R-Struc-Factory-Cyborg-Upgrade02 "Automated Cyborg Production Mk2" -R-Struc-Factory-Cyborg-Upgrade03 "Automated Cyborg Production Mk3" -R-Struc-Factory-Cyborg-Upgrade04 "Robotic Cyborg Production" -R-Struc-Factory-Cyborg-Upgrade05 "Robotic Cyborg Production Mk2" -R-Struc-Factory-Cyborg-Upgrade06 "Robotic Cyborg Production Mk3" -R-Struc-Factory-Cyborg-Upgrade07 "Advanced Cyborg Production" -R-Struc-Factory-Cyborg-Upgrade08 "Advanced Cyborg Production Mk2" -R-Struc-Factory-Cyborg-Upgrade09 "Advanced Cyborg Production Mk3" -//R-Struc-Factory-Cyborg-Upgrade10 "Self-Replicating Cyborg Production" -R-Struc-Factory-Module "Factory Module" -R-Struc-Factory-Upgrade01 "Automated Factory Production" -R-Struc-Factory-Upgrade02 "Automated Factory Production Mk2" -R-Struc-Factory-Upgrade03 "Automated Factory Production Mk3" -R-Struc-Factory-Upgrade04 "Robotic Factory Production" -R-Struc-Factory-Upgrade05 "Robotic Factory Production Mk2" -R-Struc-Factory-Upgrade06 "Robotic Factory Production Mk3" -R-Struc-Factory-Upgrade07 "Advanced Factory Production" -R-Struc-Factory-Upgrade08 "Advanced Factory Production Mk2" -R-Struc-Factory-Upgrade09 "Advanced Factory Production Mk3" -//R-Struc-Factory-Upgrade10 "Self-Replicating Factory Production" - -R-Struc-Materials01 "Reinforced Base Structure Materials" -R-Struc-Materials02 "Reinforced Base Structure Materials Mk2" -R-Struc-Materials03 "Reinforced Base Structure Materials Mk3" -R-Struc-Materials04 "Hardened Base Structure Materials" -R-Struc-Materials05 "Hardened Base Structure Materials Mk2" -R-Struc-Materials06 "Hardened Base Structure Materials Mk3" -R-Struc-Materials07 "Advanced Base Structure Materials" -R-Struc-Materials08 "Advanced Base Structure Materials Mk2" -R-Struc-Materials09 "Advanced Base Structure Materials Mk3" -//R-Struc-Materials10 "High Density Base Structure Materials" - -R-Struc-PowerModuleMk1 "Power Module" -R-Struc-Power-Upgrade01 "Gas Turbine Generator" -R-Struc-Power-Upgrade02 "Vapor Turbine Generator" - -R-Struc-RepairFacility "Repair Facility" -R-Struc-RprFac-Upgrade01 "Automated Repair Facility" -R-Struc-RprFac-Upgrade02 "Automated Repair Facility Upgrade Mk2" -R-Struc-RprFac-Upgrade03 "Automated Repair Facility Upgrade Mk3" -R-Struc-RprFac-Upgrade04 "Robotic Repair Facility Upgrade" -R-Struc-RprFac-Upgrade05 "Robotic Repair Facility Upgrade Mk2" -R-Struc-RprFac-Upgrade06 "Robotic Repair Facility Upgrade Mk3" -R-Struc-RprFac-Upgrade07 "Advanced Repair Facility Upgrade" -R-Struc-RprFac-Upgrade08 "Advanced Repair Facility Upgrade Mk2" -R-Struc-RprFac-Upgrade09 "Advanced Repair Facility Upgrade Mk3" - -R-Struc-Research-Module "Research Module" -R-Struc-Research-Upgrade01 "Synaptic Link Data Analysis" -R-Struc-Research-Upgrade02 "Synaptic Link Data Analysis Mk2" -R-Struc-Research-Upgrade03 "Synaptic Link Data Analysis Mk3" -R-Struc-Research-Upgrade04 "Dedicated Synaptic Link Data Analysis" -R-Struc-Research-Upgrade05 "Dedicated Synaptic Link Data Analysis Mk2" -R-Struc-Research-Upgrade06 "Dedicated Synaptic Link Data Analysis Mk3" -R-Struc-Research-Upgrade07 "Neural Synapse Research Brain" -R-Struc-Research-Upgrade08 "Neural Synapse Research Brain Mk2" -R-Struc-Research-Upgrade09 "Neural Synapse Research Brain Mk3" - -R-Struc-VTOLPad "VTOL Rearming Pad" -R-Struc-VTOLPad-Upgrade01 "Automated VTOL Rearming" -R-Struc-VTOLPad-Upgrade02 "Automated VTOL Rearming Mk2" -R-Struc-VTOLPad-Upgrade03 "Automated VTOL Rearming Mk3" -R-Struc-VTOLPad-Upgrade04 "Robotic VTOL Rearming" -R-Struc-VTOLPad-Upgrade05 "Robotic VTOL Rearming Mk2" -R-Struc-VTOLPad-Upgrade06 "Robotic VTOL Rearming Mk3" -R-Struc-VTOLPad-Upgrade07 "Robotic VTOL Rearming Mk4" -R-Struc-VTOLFactory "VTOL Factory" -R-Struc-VTOLFactory-Upgrade01 "Robotic VTOL Production" -R-Struc-VTOLFactory-Upgrade02 "Robotic VTOL Production Mk2" -R-Struc-VTOLFactory-Upgrade03 "Robotic VTOL Production Mk3" -R-Struc-VTOLFactory-Upgrade04 "Advanced VTOL Production" -R-Struc-VTOLFactory-Upgrade05 "Advanced VTOL Production Mk2" -R-Struc-VTOLFactory-Upgrade06 "Advanced VTOL Production Mk3" - -R-Sys-Autorepair-Cyborg "Cyborg Self-Repair" -R-Sys-Autorepair-Cyborg-Upgrade01 "Automated Cyborg Repair Mk2" -R-Sys-Autorepair-Cyborg-Upgrade02 "Automated Cyborg Repair Mk3" - -R-Sys-Autorepair-Def "Defenses Self-Repair" -R-Sys-Autorepair-Def-Upgrade01 "Automated Defenses Repair Mk2" -R-Sys-Autorepair-Def-Upgrade02 "Automated Defenses Repair Mk3" - -R-Sys-Autorepair-Struc "Base Structure Self-Repair" -R-Sys-Autorepair-Struc-Upgrade01 "Automated Base Structure Repair Mk2" -R-Sys-Autorepair-Struc-Upgrade02 "Automated Base Structure Repair Mk3" - -R-Sys-Autorepair-Vehicle "Vehicle Self-Repair" -R-Sys-Autorepair-Vehicle-Upgrade01 "Automated Vehicle Repair Mk2" -R-Sys-Autorepair-Vehicle-Upgrade02 "Automated Vehicle Repair Mk3" - -R-Sys-Autorepair-General "Auto-Repair" - -R-Sys-Sensor-Upgrade01 "Sensor Upgrade" - -R-Sys-Spade1Mk1 "Construction Unit" - -R-Sys-Engineering01 "Engineering" -R-Sys-Engineering02 "Improved Engineering" -R-Sys-Engineering03 "Advanced Engineering" - -R-Sys-MobileRepairTurret01 "Mobile Repair Turret" -R-Sys-MobileRepairTurret02 "Heavy Mobile Repair Turret" -R-Sys-MobileRepairTurret-01 "Mobile Repair Upgrade" -R-Sys-MobileRepairTurret-02 "Mobile Repair Upgrade Mk2" - -R-Sys-Sensor-Turret01 "Sensor Turret" -R-Sys-Sensor-Tower01 "Sensor Tower" -R-Sys-Sensor-Tower02 "Hardened Sensor Tower" - -R-Sys-CBSensor-Turret01 "CB Turret" -R-Sys-CBSensor-Tower01 "CB Tower" -R-Sys-CBSensor-Upgrade01 "CB Sensor Upgrade" -R-Sys-CBSensor-Upgrade02 "CB Sensor Upgrade 2" -R-Sys-CBSensor-Upgrade03 "CB Sensor Upgrade 3" - -R-Sys-VTOLCBS-Turret01 "VTOL CB Turret" -//R-Sys-VTOL-RadarTower01 "VTOL Radar Tower" -R-Sys-VTOLCBS-Tower01 "VTOL CB Tower" -R-Sys-VTOLCBS-Upgrade01 "VTOL CB Upgrade" -R-Sys-VTOLCBS-Upgrade02 "VTOL CB Upgrade 2" -R-Sys-VTOLCBS-Upgrade03 "VTOL CB Upgrade 3" -R-Sys-VTOLStrike-Upgrade01 "VTOL Strike Upgrade" -R-Sys-VTOLStrike-Upgrade02 "VTOL Strike Upgrade Mk2" -R-Sys-VTOLStrike-Upgrade03 "VTOL Strike Upgrade Mk3" -R-Sys-VTOLStrike-Turret01 "VTOL Strike Turret" -R-Sys-VTOLStrike-Tower01 "VTOL Strike Tower" - -R-Sys-SpyTurret "Nexus Link Turret" -R-Sys-SpyTurret-Upgrade01 "Improved Scrambler" -R-Sys-SpyTurret-Upgrade02 "Scrambler Turret Mk2" - -R-Sys-Resistance "NEXUS Intruder Program" -R-Sys-Resistance-Upgrade01 "NEXUS Resistance Circuits" -R-Sys-Resistance-Upgrade02 "NEXUS Resistance Circuits Mk2" -R-Sys-Resistance-Upgrade03 "NEXUS Resistance Circuits Mk3" - -R-Sys-SensorLock "Sensor Lock" - - -/* RESEARCH - VEHICLES */ -R-Vehicle-Armor-Heat01 "Thermal Armor" -R-Vehicle-Armor-Heat02 "Thermal Armor Mk2" -R-Vehicle-Armor-Heat03 "Thermal Armor Mk3" -R-Vehicle-Armor-Heat04 "High Intensity Thermal Armor" -R-Vehicle-Armor-Heat05 "High Intensity Thermal Armor Mk2" -R-Vehicle-Armor-Heat06 "High Intensity Thermal Armor Mk3" - -R-Vehicle-Body01 "Light Body - Viper" -R-Vehicle-Body02 "Light Body - Leopard" -R-Vehicle-Body03 "Light Body - Retaliation" -R-Vehicle-Body04 "Light Body - Bug" -R-Vehicle-Body05 "Medium Body - Cobra" -R-Vehicle-Body06 "Medium Body - Panther" -R-Vehicle-Body07 "Medium Body - Retribution" -R-Vehicle-Body08 "Medium Body - Scorpion" -R-Vehicle-Body09 "Heavy Body - Tiger" -R-Vehicle-Body10 "Heavy Body - Vengeance" -R-Vehicle-Body11 "Heavy Body - Python" -R-Vehicle-Body12 "Heavy Body - Mantis" - -R-Vehicle-Engine01 "Fuel Injection Engine" -R-Vehicle-Engine02 "Fuel Injection Engine Mk2" -R-Vehicle-Engine03 "Fuel Injection Engine Mk3" -R-Vehicle-Engine04 "Turbo-Charged Engine" -R-Vehicle-Engine05 "Turbo-Charged Engine Mk2" -R-Vehicle-Engine06 "Turbo-Charged Engine Mk3" -R-Vehicle-Engine07 "Gas Turbine Engine" -R-Vehicle-Engine08 "Gas Turbine Engine Mk2" -R-Vehicle-Engine09 "Gas Turbine Engine Mk3" -//R-Vehicle-Engine10 "Ionizing Turbine Engine" - -R-Vehicle-Metals01 "Composite Alloys" -R-Vehicle-Metals02 "Composite Alloys Mk2" -R-Vehicle-Metals03 "Composite Alloys Mk3" -R-Vehicle-Metals04 "Dense Composite Alloys" -R-Vehicle-Metals05 "Dense Composite Alloys Mk2" -R-Vehicle-Metals06 "Dense Composite Alloys Mk3" -R-Vehicle-Metals07 "Superdense Composite Alloys" -R-Vehicle-Metals08 "Superdense Composite Alloys Mk2" -R-Vehicle-Metals09 "Superdense Composite Alloys Mk3" -//R-Vehicle-Metals10 "Bonded Laminates" - -R-Vehicle-Prop-Hover "Hover Propulsion" -R-Vehicle-Prop-Hover02 "Hover Propulsion II" -//R-Vehicle-Prop-Hover03 "Hover Propulsion III" -R-Vehicle-Prop-Halftracks "Half-tracked Propulsion" -R-Vehicle-Prop-Halftracks02 "Half-tracked Propulsion II" -//R-Vehicle-Prop-Halftracks03 "Half-tracked Propulsion III" -R-Vehicle-Prop-Tracks "Tracked Propulsion" -R-Vehicle-Prop-Tracks02 "Tracked Propulsion II" -//R-Vehicle-Prop-Tracks03 "Tracked Propulsion III" -R-Vehicle-Prop-VTOL "VTOL Propulsion" -R-Vehicle-Prop-VTOL02 "VTOL Propulsion II" -//R-Vehicle-Prop-VTOL03 "VTOL Propulsion III" -R-Vehicle-Prop-Wheels "Wheeled Propulsion" -R-Vehicle-Prop-Wheels02 "Wheeled Propulsion II" -//R-Vehicle-Prop-Wheels03 "Wheeled Propulsion III" - -R-Wpn-AAGun01 "Tornado Flak Turret" -R-Wpn-AAGun02 "Cyclone Flak Turret" -R-Wpn-AAGun03 "Hurricane AA Turret" -R-Wpn-AAGun04 "Whirlwind AATurret" -R-Wpn-AAGun-Accuracy01 "AA Thermal Imaging Sensor" -R-Wpn-AAGun-Accuracy02 "AA Target Acquisition Shells" -R-Wpn-AAGun-Accuracy03 "AA Target Prediction Computer" -R-Wpn-AAGun-Damage01 "AA HE Flak" -R-Wpn-AAGun-Damage02 "AA HE Flak Mk2" -R-Wpn-AAGun-Damage03 "AA HE Flak Mk3" -R-Wpn-AAGun-Damage04 "AA HEAP Flak" -R-Wpn-AAGun-Damage05 "AA HEAP Flak Mk2" -R-Wpn-AAGun-Damage06 "AA HEAP Flak Mk3" -R-Wpn-AAGun-ROF01 "AA Ammunition Hopper" -R-Wpn-AAGun-ROF02 "AA Ammunition Hopper Mk2" -R-Wpn-AAGun-ROF03 "AA Ammunition Hopper Mk3" -R-Wpn-AAGun-ROF04 "AA Chainfeed Loader" -R-Wpn-AAGun-ROF05 "AA Chainfeed Loader Mk2" -R-Wpn-AAGun-ROF06 "AA Chainfeed Loader Mk3" - -//R-Wpn-Pbomb "Proximity Bomb Turret" -//R-Wpn-SPBomb "Proximity Superbomb Turret" - -R-Wpn-Bomb01 "Cluster Bombs Bay" -R-Wpn-Bomb02 "HEAP Bomb Bay" -R-Wpn-Bomb03 "Phosphor Bomb Bay" -R-Wpn-Bomb04 "Thermite Bomb Bay" - -R-Wpn-Bomb-Accuracy01 "Thermal Imaging Bombsight" -R-Wpn-Bomb-Accuracy02 "Laser Guided Bombsight" -R-Wpn-Bomb-Accuracy03 "Target Acquisition Bombsight" - -R-Wpn-Cannon-Accuracy01 "Cannon Laser Rangefinder" -R-Wpn-Cannon-Accuracy02 "Cannon Laser Designator" -R-Wpn-Cannon-Damage01 "HEAT Cannon Shells" -R-Wpn-Cannon-Damage02 "HEAT Cannon Shells Mk2" -R-Wpn-Cannon-Damage03 "HEAT Cannon Shells Mk3" -R-Wpn-Cannon-Damage04 "APFSDS Cannon Rounds" -R-Wpn-Cannon-Damage05 "APFSDS Cannon Rounds Mk2" -R-Wpn-Cannon-Damage06 "APFSDS Cannon Rounds Mk3" -R-Wpn-Cannon-Damage07 "HVAPFSDS Cannon Rounds" -R-Wpn-Cannon-Damage08 "HVAPFSDS Cannon Rounds Mk2" -R-Wpn-Cannon-Damage09 "HVAPFSDS Cannon Rounds Mk3" - -//R-Wpn-Cannon-Damage10 "*ARGH*" - -R-Wpn-Cannon-ROF01 "Cannon Autoloader" -R-Wpn-Cannon-ROF02 "Cannon Autoloader Mk2" -R-Wpn-Cannon-ROF03 "Cannon Autoloader Mk3" -R-Wpn-Cannon-ROF04 "Cannon Rapid Loader" -R-Wpn-Cannon-ROF05 "Cannon Rapid Loader Mk2" -R-Wpn-Cannon-ROF06 "Cannon Rapid Loader Mk3" - -R-Wpn-Cannon1Mk1 "Light Cannon" -R-Wpn-Cannon2Mk1 "Medium Cannon" -R-Wpn-Cannon3Mk1 "Heavy Cannon" -R-Wpn-Cannon4AMk1 "Hyper Velocity Cannon" -R-Wpn-Cannon5 "Assault Cannon" - -R-Wpn-Energy-Accuracy01 "Improved Laser Focusing" -R-Wpn-Energy-Accuracy02 "Improved Laser Focusing Mk2" -R-Wpn-Energy-Accuracy03 "Improved Laser Focusing Mk3" -R-Wpn-Energy-Damage01 "Hi-Energy Laser Emitter" -R-Wpn-Energy-Damage02 "Hi-Energy Laser Emitter Mk2" -R-Wpn-Energy-Damage03 "Hi-Energy Laser Emitter Mk3" -R-Wpn-Energy-ROF01 "Thermopole Energizer" -R-Wpn-Energy-ROF02 "Thermopole Energizer Mk2" -R-Wpn-Energy-ROF03 "Thermopole Energizer Mk3" - -R-Wpn-Flamer-Damage01 "High Temperature Flamer Gel" -R-Wpn-Flamer-Damage02 "High Temperature Flamer Gel Mk2" -R-Wpn-Flamer-Damage03 "High Temperature Flamer Gel Mk3" -R-Wpn-Flamer-Damage04 "Superhot Flamer Gel" -R-Wpn-Flamer-Damage05 "Superhot Flamer Gel Mk2" -R-Wpn-Flamer-Damage06 "Superhot Flamer Gel Mk3" -R-Wpn-Flamer-ROF01 "Flamer Autoloader" -R-Wpn-Flamer-ROF02 "Flamer Autoloader Mk2" -R-Wpn-Flamer-ROF03 "Flamer Autoloader Mk3" -R-Wpn-Flamer01Mk1 "Flamer" -R-Wpn-Flame2 "Heavy Flamer - Inferno" - -R-Wpn-HowitzerMk1 "Howitzer" -R-Wpn-HvyHowitzer "Heavy Howitzer - Ground Shaker" -R-Wpn-Howitzer03-Rot "Rotary Howitzer - Hellstorm" -//R-Wpn-Howitzer04-Inc "Incendiary Howitzer - Hellfire" - -R-Wpn-Howitzer-Accuracy01 "Target Acquisition Artillery Shells" -R-Wpn-Howitzer-Accuracy02 "Target Acquisition Artillery Shells Mk2" -R-Wpn-Howitzer-Accuracy03 "Target Prediction Artillery Shells" - -R-Wpn-Howitzer-Damage01 "HE Howitzer Shells" -R-Wpn-Howitzer-Damage02 "HE Howitzer Shells Mk2" -R-Wpn-Howitzer-Damage03 "HE Howitzer Shells Mk3" -R-Wpn-Howitzer-Damage04 "HEAP Howitzer Shells" -R-Wpn-Howitzer-Damage05 "HEAP Howitzer Shells Mk2" -R-Wpn-Howitzer-Damage06 "HEAP Howitzer Shells Mk3" - -R-Wpn-Howitzer-ROF01 "Howitzer Autoloader" -R-Wpn-Howitzer-ROF02 "Howitzer Autoloader Mk2" -R-Wpn-Howitzer-ROF03 "Howitzer Autoloader Mk3" -R-Wpn-Howitzer-ROF04 "Fast Loader" - -R-Wpn-Laser01 "Laser - Flashlight" -R-Wpn-Laser02 "Pulse Laser" - -R-Wpn-MG-Damage01 "Hardened MG Bullets" -R-Wpn-MG-Damage02 "APDSB MG Bullets" -R-Wpn-MG-Damage03 "APDSB MG Bullets Mk2" -R-Wpn-MG-Damage04 "APDSB MG Bullets Mk3" -R-Wpn-MG-Damage05 "Tungsten-Tipped MG Bullets" -R-Wpn-MG-Damage06 "Tungsten-Tipped MG Bullets Mk2" -R-Wpn-MG-Damage07 "Tungsten-Tipped MG Bullets Mk3" -R-Wpn-MG-Damage08 "Depleted Uranium MG Bullets" -R-Wpn-MG-Damage09 "Depleted Uranium MG Bullets Mk2" -//R-Wpn-MG-Damage10 "C-60 MG Bullets Mk3" -R-Wpn-MG-Damage11 "R-Wpn-MG-Damage11" - -R-Wpn-MG-ROF01 "Chaingun Upgrade" -R-Wpn-MG-ROF02 "Rapid Fire Chaingun" -R-Wpn-MG-ROF03 "Hyper Fire Chaingun Upgrade" -R-Wpn-MG1Mk1 "Machinegun" -R-Wpn-MG2Mk1 "Twin Machinegun" -R-Wpn-MG3Mk1 "Heavy Machinegun" -R-Wpn-MG4 "Assault Gun" - -R-Wpn-Missile-Accuracy01 "Target Prediction Missiles" -R-Wpn-Missile-Accuracy02 "Search & Destroy Missiles" -R-Wpn-Missile-Damage01 "Advanced Missile Warhead" -R-Wpn-Missile-Damage02 "Advanced Missile Warhead Mk2" -R-Wpn-Missile-Damage03 "Advanced Missile Warhead Mk3" -R-Wpn-Missile-ROF01 "Advanced Missile Allocation System" -R-Wpn-Missile-ROF02 "Advanced Missile Allocation System Mk2" -R-Wpn-Missile-ROF03 "Advanced Missile Allocation System Mk3" -R-Wpn-MissileSlow-Damage01 "HEAP Missile Warhead" -R-Wpn-MissileSlow-Damage02 "HEAP Missile Warhead Mk2" -R-Wpn-MissileSlow-Damage03 "HEAP Missile Warhead Mk3" -R-Wpn-MissileSlow-ROF01 "Improved Missile Loading System" - -//R-Wpn-Missile-ASM-AT "*Missile-ASM-AT*" -//R-Wpn-Misisile-ASM-BB "Devastator Missile" -R-Wpn-Missile-LtSAM "Avenger SAM" -R-Wpn-Missile-HvSAM "Vindicator SAM" -R-Wpn-Missile2A-T "Scourge Missile" -R-Wpn-MdArtMissile "Angel Missile" -R-Wpn-HvArtMissile "Archangel Missile" -//R-Wpn-Missile-SAM "*R-Wpn-Missile-SAM*" - -R-Wpn-Mortar-Acc01 "Mortar Targeting Computer" -R-Wpn-Mortar-Acc02 "Thermal Imaging Mortar Shells" -R-Wpn-Mortar-Acc03 "Target Acquisition Mortar Shells" -R-Wpn-Mortar-Damage01 "HE Mortar Shells" -R-Wpn-Mortar-Damage02 "HE Mortar Shells Mk2" -R-Wpn-Mortar-Damage03 "HE Mortar Shells Mk3" -R-Wpn-Mortar-Damage04 "HEAP Mortar Shells" -R-Wpn-Mortar-Damage05 "HEAP Mortar Shells Mk2" -R-Wpn-Mortar-Damage06 "HEAP Mortar Shells Mk3" -R-Wpn-Mortar-ROF01 "Mortar Autoloader" -R-Wpn-Mortar-ROF02 "Mortar Autoloader Mk2" -R-Wpn-Mortar-ROF03 "Mortar Autoloader Mk3" -R-Wpn-Mortar-ROF04 "Mortar Fast Loader" -R-Wpn-Mortar01Lt "Mortar" -R-Wpn-Mortar02Hvy "Heavy Mortar - Bombard" -R-Wpn-Mortar3 "Rotary Mortar - Pepperpot" - -R-Wpn-RailGun01 "Needle Gun" -R-Wpn-RailGun02 "Rail Gun" -R-Wpn-RailGun03 "Gauss Cannon" -R-Wpn-Rail-Accuracy01 "Target Prediction Computer" -R-Wpn-Rail-Damage01 "Hardened Rail Dart" -R-Wpn-Rail-Damage02 "Hardened Rail Dart Mk2" -R-Wpn-Rail-Damage03 "Hardened Rail Dart Mk3" -R-Wpn-Rail-ROF01 "Rail Gun ROF" -R-Wpn-Rail-ROF02 "Rail Gun ROF Mk2" -R-Wpn-Rail-ROF03 "Rail Gun ROF Mk3" - -R-Wpn-Rocket-Accuracy01 "Stabilized Mini-Rockets" -R-Wpn-Rocket-Accuracy02 "Stabilized Mini-Rockets Mk2" -R-Wpn-Rocket-Damage01 "HE Mini-Rockets" -R-Wpn-Rocket-Damage02 "HE Mini-Rockets Mk2" -R-Wpn-Rocket-Damage03 "HE Mini-Rockets Mk3" -R-Wpn-Rocket-Damage04 "HEAP Mini-Rockets" -R-Wpn-Rocket-Damage05 "HEAP Mini-Rockets Mk2" -R-Wpn-Rocket-Damage06 "HEAP Mini-Rockets Mk3" -R-Wpn-Rocket-ROF01 "Fast Fire Mini-Rockets" -R-Wpn-Rocket-ROF02 "Fast Fire Mini-Rockets Mk2" -R-Wpn-Rocket-ROF03 "Fast Fire Mini-Rockets Mk3" -R-Wpn-Rocket-ROF04 "Rapid Fire Mini-Rockets" -R-Wpn-Rocket-ROF05 "Rapid Fire Mini-Rockets Mk2" -R-Wpn-Rocket-ROF06 "Rapid Fire Mini-Rockets Mk3" -R-Wpn-RocketSlow-Accuracy01 "Improved Rocket Wire Guidance" -R-Wpn-RocketSlow-Accuracy02 "Rocket Laser Designator" -R-Wpn-RocketSlow-Accuracy03 "Thermal Imaging Rockets" -R-Wpn-RocketSlow-Damage01 "HEAT Rocket Warhead" -R-Wpn-RocketSlow-Damage02 "HEAT Rocket Warhead Mk2" -R-Wpn-RocketSlow-Damage03 "HEAT Rocket Warhead Mk3" -R-Wpn-RocketSlow-Damage04 "HESH Rocket Warhead" -R-Wpn-RocketSlow-Damage05 "HESH Rocket Warhead Mk2" -R-Wpn-RocketSlow-Damage06 "HESH Rocket Warhead Mk3" -R-Wpn-RocketSlow-ROF01 "Rocket Autoloader" -R-Wpn-RocketSlow-ROF02 "Rocket Autoloader Mk2" -R-Wpn-RocketSlow-ROF03 "Rocket Autoloader Mk3" - -R-Wpn-Rocket01-LtAT "Lancer AT Rocket" -R-Wpn-Rocket02-MRL "Mini-Rocket Artillery" -R-Wpn-Rocket03-HvAT "Bunker Buster Rocket" -R-Wpn-Rocket05-MiniPod "Mini-Pod Rockets" -R-Wpn-Rocket06-IDF "Ripple Rockets" -R-Wpn-Rocket07-Tank-Killer "Tank Killer Rocket" - -R-Wpn-TUTMG "Machine Gun Artifact" - -/* ENEMY STRUCTURES */ -A0CommandCentreNP "New Paradigm Command Center" -A0CommandCentreCO "Collective Command Center" -A0CommandCentreNE "*CommandCenterNE*" -UplinkCentre "*UplinkCentre*" -NuclearReactor "*NuclearReactor*" -CoolingTower "*CoolingTower*" -GunsOfNav2 "*GunsOfNavaroneTwo*" -GunsOfNav1 "*GunsOfNavaroneOne*" -Sys-NEXUSLinkTOW "*Sys-NEXUSLinkTOW*" - -/* BARBARIAN STRUCTURES */ -A0BaBaFactory "Scavenger Factory" -A0BaBaGunTower "Scavenger Gun Tower" -A0BaBaHorizontalWall "Scavenger Horizontal Wall" -A0BaBaPowerGenerator "Scavenger Power Generator" -A0BaBaRocketPit "Scavenger Rocket Pit" -A0BaBaRocketPitAT "Scavenger AT-Rocket Pit" -A0BaBaBunker "Scavenger Bunker" -A0BabaCornerWall "Scavenger CornerWall" -A0BaBaFlameTower "Scavenger Flame Tower" -A0BaBaFlameTowerEnd "Scavenger Flame Tower End" -LookOutTower "Look-Out Tower" -A0CannonTower "Cannon Tower" -A0BaBaGunTowerEND "*Scavenger End Tower*" -Barrier "*Barrier*" -A0BaBaMortarPit "*BaBaMortarPit*" -Emplacement-MortarPit01 " Mortar Pit" -// MissileBunker "Missile Bunker" -A0BaBaFlameTow "*A0BaBaFlameTow*" - -/* BARBARIAN WEAPONS*/ -ZNULLWEAPON "*Z NULL Weapon*" -BaBaCannon "*BaBa Cannon*" -BaBaMG "*BaBa MG*" -BabaFlame "*Flamer*" -BJeepMG "*Jeep MG*" -BTowerMG "*Tower MG*" -bTrikeMG "*Trike MG*" -BuggyMG "*Buggy MG*" -BabaRocket "*BabaRocket*" -BusCannon "*BusCannon*" -BabaPitRocket "*Baba Rocket Pit Launcher*" -BabaPitRocketAT "*AT Rocket Pit" - -/* FEATURES */ -Crate "Artifact" -OilResource "Oil Resource" -Boulder1 "*Boulder 1*" -Boulder2 "*Boulder 2*" -Boulder3 "*Boulder 3*" -Chevy "*Chevy*" -BlueCar "*Blue Car*" -Pickup "*Pickup*" -Crane "*Crane*" -WaterTower "*Water Tower*" -OilTower "*Oil Tower*" -building1 "*Building 1*" -building2 "*Building 2*" -building3 "*Building 3*" -building4 "*Building 4*" -building5 "*Building 5*" -building6 "*Building 6*" -building7 "*Building 7*" -building8 "*Building 8*" -building10 "*Building 10*" -building11 "*Building 11*" -building12 "*Building 12*" -Ruin5 "*Ruin5*" -Ruin4 "*Ruin4*" -Ruin3 "*Ruin3*" -Ruin1 "*Ruin1*" -miruin2 "*miruin*2" -bridge "Bridge" -bridge1 "*Bridge 1*" -bridge5 "*Bridge 5*" -BarbTechRuin "Ruined Factory" -BarbWarehouse1 "Warehouse" -BarbHUT "Hut" -BarbWarehouse2 "*Warehouse2*" -BarbWarehouse3 "*Warehouse3*" -Pipe "*Pipe*" -Pipe1 "*Pipe1*" -WaterBuilding "*Water Building*" -WaterBuilding2 "*Water Building2*" -WaterBuilding3 "*Water Building3*" -OilDrum "Oil Drum" -//OilPipe1 "*Oil Pipe 1*" -//OilPipe2 "*Oil Pipe 2*" -//OilPipe3 "*Oil Pipe 3*" -Pylon "*Pylon*" -Tree1 "*Tree1*" -Tree2 "*Tree2*" -Tree3 "*Tree3*" -TreeSnow1 "*Snowy Tree1*" -TreeSnow2 "*Snowy Tree2*" -TreeSnow3 "*Snowy Tree3*" -LogCabin1 "*LogCabin1*" -LogCabin2 "*LogCabin2*" -LogCabin3 "*LogCabin3*" -LogCabin4 "*LogCabin4*" -LogCabin5 "*LogCabin5*" -OldFactory "*OldFactory*" -AirTrafficControl "*AirTrafficControl*" -WreckedDroidHub "Wreck" -//WreckedHovercraft "Wrecked Hovercraft" -WreckedTank "Wrecked Tank" -//WreckedBuilding1 "*Wrecked Building 1*" -//Wreckedbuilding2 "*Wrecked Building 2*" -//WreckedBuilding3 "*Wrecked Building 3*" -//WreckedBuilding4 "*Wrecked Building 4*" -//WreckedBuilding "*Wrecked Building 5*" -WreckedBuilding6 "*Wrecked Building 6*" -WreckedBuilding7 "*Wrecked Building 7*" -WreckedBuilding8 "*Wrecked Building 8*" -WreckedBuilding9 "*Wrecked Building 9*" -WreckedBuilding10 "*Wrecked Building 10*" -WreckedBuilding11 "*Wrecked Building 11*" -WreckedBuilding12 "*Wrecked Building 12*" -WreckedBuilding13 "*Wrecked Building 13*" -WreckedBuilding14 "*Wrecked Building 14*" -WreckedBuilding15 "*Wrecked Building 15*" -WreckedBuilding16 "*Wrecked Building 16*" -WreckedBuilding17 "*Wrecked Building 17*" -WreckedBridge "Wrecked Bridge" -WreckedVertCampVan "Wrecked Van" -WreckedSuzukiJeep "Wrecked Vehicle" -WreckedTankerV "Wrecked Tanker" -//WreckedTankerH "Wrecked Tanker" - -/* LABS */ -Z-Lab01 "Cyborg Laboratory" -Z-Lab02 "Advanced Warfare Laboratory" -Z-Lab03 "Engineering Laboratory" -Z-Lab04 "Robotics Laboratory" -Z-Lab05 "Laser Optics Laboratory" -Z-Lab06 "Electronics Laboratory" -Z-Lab07 "Chemical Laboratory" -Z-Lab08 "*Advanced Materials Lab*" -Z-Lab09 "*VTOL Lab*" -Z-Lab10 "*Electro-Magnetics Lab*" -Z-Lab11 "*Nanotech Lab*" -Z-Lab12 "*High Energy Lab*" - -/* LABS RESEARCH */ -R-Lab-AdvWarfare "Advanced Warfare" -R-Lab-Chemical "Chemical Laboratory" -R-Lab-Cyborg "Cyborg Laboratory" -R-Lab-Electronics "Electronics Laboratory" -R-Lab-Engineering "Engineering Laboratory" -R-Lab-Robotics "Robotics Laboratory" - -// *New Names...... Keith - -P0PythonHvyCnTrks "Python Heavy Cannon Tracks" -P0CobraSpadeTracks "Cobra Truck" -P0CobraFlameTracks "Cobra Flamer Tracks" -P0CobraMedCnTrks "Cobra Medium Cannon Tracks" - -//CyborgChain01GroundP0 "Gunner" -//CyborgRkt01GroundP0 "Lancer" -//CyborgCannon01GrdP0 "Heavy Gunner" -//CyborgFlamer01GrdP0 "Flamer" - -// Cyborgs used in PSX scripts - copied to Player2 and renamed P2 - -//CyborgFlamer01GrdP2 "*CyborgFlamer01GrdP2*" -//CyborgCannon01GrdP2 "*CyborgCannon01GrdP2*" -//CyborgRkt01GroundP2 "*CyborgRkt01GroundP2*" -//CyborgChain01GroundP2 "*CyborgChain01GroundP2*" - -// added in by Keith - -R-Defense-PrisLas "Flashlight Emplacement" -P0-AASite-SAM1 "Avenger SAM Site" -P0-AASite-SAM2 "Vindicator SAM Site" -Howitzer04-Inc-pit "*Howitzer04-Inc-pit*" -//P0-Emp-IncHow-Pit "Hellfire Emplacement" -Rocket-MRL-pit "*Rocket-MRL-pit*" -Emplacement-MRL-pit "MRL Emplacement" -GuardTower-RotMg "Assault Gun Guard Tower" - -Emplacement-HvyATrocket "Tank Killer Emplacement" -//Rocket-HvyA-T-pit "*Tank Killer-pit*" -Emplacement-HPVcannon "HPV Cannon Emplacement" -Emplacement-PulseLaser "Pulse Laser Emplacement" -Emplacement-Rail2 "Railgun Emplacement" -Emplacement-MdART-pit "Angel Missile Emplacement" -Missile-MdArt-pit "*Angle Missile-pit*" -Emplacement-HvART-pit "Archangel Missile Emplacement" -Missile-HvyArt-pit "*Missile-HvyArt-pit*" -WallTower-HvATrocket "Tank Killer Hardpoint" -WallTower-HPVcannon "HPV Cannon Hardpoint" -WallTower-Atmiss "Scourge Missile Hardpoint" -WallTower-Rail3 "Gauss Cannon Hardpoint" - -// added by Pete -//R-Cyborg-Wpn-Missile "Revenger" - -//ResMod-Cyb-MG-GRD "*ResMod-Cyb-MG-GRD*" - -//NEW VEHICLES -CO-M-HvFlame-Track "*CO-M-HvFlame-Track*" -CO-M-RR-HT "*CO-M-RR-HT*" -CO-H-Rkt-BB-T "*CO-H-Rkt-BB-T*" -CO-M-HMG-T "*CO-M-HMG-T*" -CO-H-COM-H "*CO-H-COM-H*" -CO-M-LTAT-Hover "*CCO-M-LTAT-Hover*" -CO-M-HVAT-Hover "*CCO-M-HVAT-Hover*" -CO-M-HvMortar-T "*CO-M-HvMortar-T*" -CO-M-Repair-T "*CO-M-Repair-T*" -CO-M-Rocket-BB-T "*CO-M-Rocket-BB-T*" -CO-M-Rocket-LtA-T-T "*CO-M-Rocket-LtA-T-T*" -CO-M-RotMortar-T "*CO-M-RotMortar-T*" -CO-M-Sensor-T "*CO-M-Sensor-T*" -CO-M-Vstrike-T "*CO-M-Vstrike-T*" -CO-M-VTOLCBS-T "*CO-M-VTOLCBS-T*" -CO-M-Con-T "*CO-M-Con-T*" -CO-M-CBS-T "*CO-M-CBS-T*" -CO-M-ROTMG-T "*CO-M-ROTMG-T*" -CO-M-HVAT-V "*CO-M-HVAT-V*" -CO-L-Bomb1-VTOL "*CO-L-Bomb1-VTOL*" - -CO-H-QuadRotAA-T "*CO-H-QuadRotAA-T*" -CO-H-QuadBofAA-T "*CO-H-QuadBofAA-T*" - -Rocket-IDF-Emp "*Rocket-IDF-Emp*" - - -// Additional templates for Player 0 entering start of cam2 - -P0CobraLtATRktHtrack "Lancer Cobra Half-tracks" -P0CobraHvyMGHtrack "HMG Cobra Half-tracks" -P0PythonComTracks "Commander Python Tracks" -P0CobraRepairTrks "Repair Cobra Tracks" - -// New Cyborg Bodies -Cyb-Bod-Atmiss "*Cyb-Bod-Atmiss*" -Cyb-Bod-BB-Rkt "*Cyb-Bod-BB-Rkt*" -Cyb-Bod-Las1 "*Cyb-Bod-Las1*" -Cyb-Bod-Rail1 "*Cyb-Bod-Rail1*" - -Cyb-Wpn-Atmiss "*Cyb-Wpn-Atmiss*" -Cyb-Wpn-BB-Rkt "*Cyb-Wpn-BB-Rkt*" -Cyb-Wpn-Laser "*Cyb-Wpn-Laser*" -Cyb-Wpn-Rail1 "*Cyb-Wpn-Rail1*" - -Cyb-Atmiss-GROUND "Scourge" -Cyb-BB-Rkt-GROUND "Bunker Blaster" -Cyb-Laser1-GROUND "Flashlight Gunner" -Cyb-Rail1-GROUND "Needle Gunner" -WreckedTransporter "Downed Transport" - -// Multiplayer VTOLs -P6-L-LTAT-V "*Skirmish ATVTOL*" -P6-L-Bomb1-V "*Skirmish BOMBVTOL*" -P6-M-QMG1-HT "*P6-M-QMG1-HT*" - -// New Style Repair Center - replaces all instances of A0RepairCentre -A0RepairCentre2 "Repair Center" -A0RepairCentre3 "Repair Facility" -RepairCentre "*RepairCenter*" - -Emplacement-MortarPit02 "Bombard Pit" -Emplacement-Howitzer150 "Ground Shaker Emplacement" - - -// CAM3 Start - Available Units -P0cam3CobCONTrk "Truck" -P0cam3PyHvyATTrk "Tank Killer Python Tracks" -P0cam3PyHPVcanTrk "HPV Cannon Python Tracks" -P0cam3PyFlakHT "Cyclone AA Python Half-tracks" -P0cam3PyAsltGnTrk "Assault Gun Python Tracks" - -R-Sys-NEXUSrepair "*R-Sys-NEXUSrepair*" -NEXUSrepair "*NEXUSrepair*" - -// name change - moved to bottom of Names.TXT by Keith 9/2/99 -Laser3BEAMMk1 "Flashlight" -Laser3BEAM-VTOL "VTOL Flashlight" - -MG4ROTARY-Pillbox "*MG4ROTARY-Pillbox*" -Pillbox-RotMG "Rotary MG Bunker" -R-Defense-Pillbox-RotMG "Rotary MG Bunker" - -NX-M-Bomb4-VTOL "*NX-M-Bomb4-VTOL*" - -// Added Cruise Missile Launcher Struc (CAM3-1) and ANTI-SAT Launcher (CAM3-4) -NX-ANTI-SATSite "Missile Silo" -NX-CruiseSite "Missile Silo" - -NEXUSlink "*NEXUSlink*" - -// Added 21st Feb 99 - New NEXUS Versions of Sensor Towers, etc. - -Sys-NX-SensorTower "*Sys-NX-SensorTower*" -Sys-NX-CBTower "*Sys-NX-CBTower*" -Sys-NX-VTOL-CB-Tow "*Sys-NX-VTOL-CB-Tow*" -Sys-NX-VTOL-RadTow "*Sys-NX-VTOL-RadTow*" -NX-M-HvSam-Hover "*NX-M-HvSam-Hover*" -NX-L-Link-Hov "*NX-L-Link-Hov*" -NX-M-Bomb2-VTOL "*NX-M-Bomb2-VTOL*" - -// Latest Additions -NX-L-Flash-Hover "*NX-L-Flash-Hover*" - - -//New Skirmish Units -Sk-PythonHvCanTrack "Python Heavy Cannon Tracks" -Sk-CobraBBHover "Cobra Bunker Buster Hover" - -R-Sys-Sensor-Upgrade02 "Sensor Upgrade" -R-Struc-Power-Upgrade03 "Power Upgrade" -R-Struc-Power-Cam2 "R-Struc-Power-Cam2" -MP-Cyb-ATmiss-GRD "Scourge" -MP-Cyb-Laser1-GRD "Flashlight Gunner" - -R-Struc-Power-Upgrade01b "Power Upgrade" -R-Struc-Power-Upgrade01c "Power Upgrade" - -// Cam3NewTech starts here -R-Struc-Power-Upgrade03a "Power Upgrade" - -// New Skirmish Units May28th wdg - -SK-Bug-Hover-HMG "*SK-Bug-Hover-HMG*" -SK-Cobra-Hover-BB "*SK-Cobra-Hover-BB*" -SK-Cobra-Hover-HMG "*SK-Cobra-Hover-HMG*" -SK-Cobra-Hover-Lancer "*SK-Cobra-Hover-Lancer*" -SK-Cobra-Track-HVC "*SK-Cobra-Track-HVC*" -SK-Cobra-Track-TK "*SK-Cobra-Track-TK*" -SK-Leopard-Hover-Needle "*SK-Leopard-Hover-Needle*" -SK-Leopard-HTrk-ASGun "*SK-Leopard-HTrk-ASGun*" -SK-Leopard-Htrk-Needle "*SK-Leopard-Htrk-Needle*" -SK-Leopard-Track-Lancer "*SK-Leopard-Track-Lancer*" -SK-Mantis-Hover-Hcannon "*SK-Mantis-Hover-Hcannon*" -SK-Mantis-Hover-HVC "*SK-Mantis-Hover-HVC*" -SK-Panther-Hover-HVC "*SK-Panther-Hover-HVC*" -SK-Panther-Hover-TK "*SK-Panther-Hover-TK*" -SK-Panther-Htrk-ASGun "*SK-Panther-Htrk-ASGun*" -SK-Panther-Htrk-BB "*SK-Panther-Htrk-BB*" -SK-Panther-Track-HVC "*SK-Panther-Track-HVC*" -SK-Panther-Track-RailGun "*SK-Panther-Track-RailGun*" -SK-Panther-Track-TK "*SK-Panther-Track-TK*" -SK-Python-Hover-Hcannon "*SK-Python-Hover-Hcannon*" -SK-Python-Hover-Lancer "*SK-Python-Hover-Lancer*" -SK-Python-Hover-Mcannon "*SK-Python-Hover-Mcannon*" -SK-Python-Track-Hcannon "*SK-Python-Track-Hcannon*" -SK-Retal-Track-Needle "*SK-Retal-Track-Needle*" -SK-Retre-Hover-RailGun "*SK-Retre-Hover-RailGun*" -SK-Retre-Hover-Scourge "*SK-Retre-Hover-Scourge*" -SK-Retre-Htrk-Pepper "*SK-Retre-Htrk-Pepper*" -SK-Retre-Track-FlashLight "*SK-Retre-Track-FlashLight*" -SK-Retre-Track-PulseLsr "*SK-Retre-Track-PulseLsr*" -SK-Retre-Track-RailGun "*SK-Retre-Track-RailGun*" -SK-Retre-Track-Scourge "*SK-Retre-Track-Scourge*" -SK-Scorp-Hover-ASGUN "*SK-Scorp-Hover-ASGUN*" -SK-Scorp-Hover-BB "*SK-Scorp-Hover-BB*" -SK-Scorp-Hover-Bombard "*SK-Scorp-Hover-Bombard*" -SK-Scorp-Hover-Lancer "*SK-Scorp-Hover-Lancer*" -SK-Scorp-Hover-Mcannon "*SK-Scorp-Hover-Mcannon*" -SK-Tiger-Hover-ASCannon "*SK-Tiger-Hover-ASCannon*" -SK-Tiger-Hover-Gauss "*SK-Tiger-Hover-Gauss*" -SK-Tiger-Hover-Hcannon "*SK-Tiger-Hover-Hcannon*" -SK-Tiger-Hover-HVC "*SK-Tiger-Hover-HVC*" -SK-Tiger-Hover-Scourge "*SK-Tiger-Hover-Scourge*" -SK-Tiger-Hover-TK "*SK-Tiger-Hover-TK*" -SK-Tiger-Track-ASCannon "*SK-Tiger-Track-ASCannon*" -SK-Tiger-Track-Gauss "*SK-Tiger-Track-Gauss*" -SK-Tiger-Track-Hcannon "*SK-Tiger-Track-Hcannon*" -SK-Tiger-Track-HVC "*SK-Tiger-Track-HVC*" -SK-Tiger-Track-Scourge "*SK-Tiger-Track-Scourge*" -SK-Tiger-Track-TK "*SK-Tiger-Track-TK*" -SK-Veng-Hover-Gauss "*SK-Veng-Hover-Gauss*" -SK-Veng-Hover-PulseLsr "*SK-Veng-Hover-PulseLsr*" -SK-Veng-Hover-Scourge "*SK-Veng-Hover-Scourge*" -SK-Veng-Track-Gauss "*SK-Veng-Track-Gauss*" -SK-Veng-Track-PulseLsr "*SK-Veng-Track-PulseLsr*" -SK-Veng-Track-Scourge "*SK-Veng-Track-Scourge*" -SK-Bug-Hover-Sensor "*SK-Bug-Hover-Sensor*" -SK-Bug-Hover-Repair "*SK-Bug-Hover-Repair*" -SK-Leopard-Hover-Sensor "*SK-Leopard-Hover-Sensor*" -SK-Leopard-Hover-Repair "*SK-Leopard-Hover-Repair*" -SK-Panther-Track-Repair "*SK-Panther-Track-Repair*" -SK-Retal-Hover-Repair "*SK-Retal-Hover-Repair*" -SK-Retal-Hover-Sensor "*SK-Retal-Hover-Sensor*" -SK-Bug-VTOL-CLBomb "*SK-Bug-VTOL-CLBomb*" -SK-Bug-VTOL-BB "*SK-Bug-VTOL-BB*" -SK-Scorpion-VTOL-BB "*SK-Scorpion-VTOL-BB*" -SK-Scorpion-VTOL-Hbomb "*SK-Scorpion-VTOL-Hbomb*" -SK-Mantis-VTOL-BB "*SK-Mantis-VTOL-BB*" -SK-Leopard-VTOL-BB "*SK-Leopard-VTOL-BB*" -SK-Leopard-VTOL-PhosBomb "*SK-Leopard-VTOL-PhosBomb*" -SK-Panther-VTOL-Thermite "*SK-Panther-VTOL-Thermite*" -SK-Panther-VTOL-BB "*SK-Panther-VTOL-BB*" -SK-Panther-VTOL-Phosbomb "*SK-Panther-VTOL-Phosbomb*" -SK-Panther-VTOL-TK "*SK-Panther-VTOL-TK*" -SK-Retal-VTOL-Phosbomb "*SK-Retal-VTOL-Phosbomb*" -SK-Retre-VTOL-Thermite "*SK-Retre-VTOL-Thermite*" -SK-Retre-VTOL-PulseLsr "*SK-Retre-VTOL-PulseLsr*" -SK-Retre-VTOL-Scourge "*SK-Retre-VTOL-Scourge*" - -// added by keith 26th may 1999 for 005 patch -MP-Cyb-Needle-GRD "Needle Gunner" - -// New Cyborgs - Thermite and Grenadier -R-Cyborg-Wpn-Thermite "Thermite Flamer" -Cyb-Wpn-Thermite "*Cybrog Thermite Weapon*" -Cyb-Bod-Thermite "*Thermite Body*" -Cyb-Thermite "Thermite Flamer" - -R-Cyborg-Wpn-Grenade "Grenadier" -Cyb-Wpn-Grenade "*Cyborg Grenade Weapon*" -Cyb-Bod-Grenade "*Grenadier Body*" -Cyb-Gren "Grenadier" - -// New Cyborgs - added by Marc 8th June 1999 Combat Engineer & Mechanic - -R-Cyborg-Sys-ComEng "Combat Engineer" -CyborgSpade "*Combat Engineer*" -Cyb-Bod-ComEng "*Combat Engineer*" -Cyb-ComEng "Combat Engineer" - -R-Cyborg-Sys-Mechanic "Cyborg Mechanic" -CyborgRepair "*Cyborg Mechanic*" -Cyb-Bod-Mechanic "*Cyborg Mechanic*" -Cyb-Mechanic "Cyborg Mechanic" - -// added by Marc 9th June 1999 Incendiary Howitzer/Incenediary Mortar/Plasmite Flamer/Heavy Repair - -R-Wpn-Howitzer-Incenediary "Incenediary Howitzer" -Howitzer-Incenediary "Incenediary Howitzer" -R-Defense-Howitzer-Incenediary "Incenediary Howitzer Emplacement" -Emplacement-Howitzer-Incenediary "Incenediary Howitzer Emplacement" -R-Wpn-Plasmite-Flamer "Plasmite Flamer" -PlasmiteFlamer "Plasmite Flamer" -R-Defense-PlasmiteFlamer "Plasmite Flamer" -Plasmite-flamer-bunker "Plasmite Flamer" -R-Wpn-Mortar-Incenediary "Incenediary Mortar" -Mortar-Incenediary "Incenediary Mortar" -R-Defense-MortarPit-Incenediary "Incenediary Mortar" -Emplacement-MortarPit-Incenediary "Incenediary Mortar" -R-Sys-MobileRepairTurretHvy "Heavy Repair Turret" -HeavyRepair "Heavy Repair Turret" - -R-Cyborg-Armor-Heat07 "Cyborg Superdense Thermal Armor" -R-Cyborg-Armor-Heat08 "Cyborg Superdense Thermal Armor Mk2" -R-Cyborg-Armor-Heat09 "Cyborg Superdense Thermal Armor Mk3" - -R-Vehicle-Armor-Heat07 "Vehicle Superdense Thermal Armor" -R-Vehicle-Armor-Heat08 "Vehicle Superdense Thermal Armor Mk2" -R-Vehicle-Armor-Heat09 "Vehicle Superdense Thermal Armor Mk3" - -// added by Marc 15th June 1999 Tech 2 Super-Cyborgs and Heavy Laser - -R-Cyborg-Hvywpn-Mcannon "Super Heavy-Gunner" -Cyb-Hvy-Mcannon "Super Heavy-Gunner" -Cyb-Hvybod-Mcannon "Super Heavy-Gunner" -Cyb-Hvywpn-Mcannon "Super Heavy-Gunner" - -R-Cyborg-Hvywpn-Acannon "Super Auto-Cannon Cyborg" -Cyb-Hvy-Acannon "Super Auto-Cannon Cyborg" -Cyb-Hvybod-Acannon "Super Auto-Cannon Cyborg" -Cyb-Hvywpn-Acannon "Super Auto-Cannon Cyborg" - -R-Cyborg-Hvywpn-HPV "Super HPV Cyborg" -Cyb-Hvy-HPV "Super HPV Cyborg" -Cyb-Hvybod-HPV "Super HPV Cyborg" -Cyb-Hvywpn-HPV "Super HPV Cyborg" - -R-Cyborg-Hvywpn-TK "Super Tank-Killer Cyborg" -Cyb-Hvy-TK "Super Tank-Killer Cyborg" -Cyb-Hvybod-TK "Super Tank-Killer Cyborg" -Cyb-Hvywpn-TK "Super Tank-Killer Cyborg" - -R-Wpn-HvyLaser "Heavy Laser" -HeavyLaser "Heavy Laser" -HeavyLaser-VTOL "Heavy Laser" -Emplacement-HeavyLaser "Heavy Laser Emplacement" -R-Defense-HeavyLas "Heavy Laser Emplacement" - -// added by SEBG 17 June 1999 - -R-Sys-Resistance-Circuits "Resistance Circuits" - -Cannon6TwinAslt "Twin Assault Cannon" -R-Wpn-Cannon6TwinAslt "Twin Assault Cannon" -R-Defense-Cannon6 "Twin Assault Cannon Bunker" -PillBox-Cannon6 "Twin Assault Cannon Bunker" - -A0LasSatCommand "Laser Satellite Command Post" -A0Sat-linkCentre "Satellite Uplink Center" -Sensor-WideSpec "Wide Spectrum Sensor" -Sys-SensoTowerWS "Wide Spectrum Sensor Tower" -R-Sys-Sensor-WS "Wide Spectrum Sensor" -R-Sys-Sensor-WSTower "Wide Spectrum Sensor Tower" -R-Sys-Sensor-SatLink "Satellite Uplink Center" -R-Wpn-LasSat "Laser Satellite Command Post" -R-Sys-Sensor-UpLink "Satellite Uplink Center" -LasSatCommandSensor "*LasSatCommandSensor*" - -// added by SEBG 5 July 1999 - -SK-Veng-Track-C6TwinAslt "*SK-Veng-Track-C6TwinAslt*" -SK-Veng-Track-HvyLaser "*SK-Veng-Track-HvyLaser*" - -AutoRepair "*AutoRepair*" - -// added by Marc 23rd June 1999 Tech 3 Super-Cyborgs, Plasma Cannon and EMP Cannon - -R-Wpn-PlasmaCannon "Plasma Cannon" -Laser4-PlasmaCannon "Plasma Cannon" -R-Defense-PlasmaCannon "Plasma Cannon Emplacement" -Emplacement-PlasmaCannon "Plasma Cannon Emplacement" - -R-Cyborg-Hvywpn-PulseLsr "Super Pulse Laser Cyborg" -Cyb-Hvy-PulseLsr "Super Pulse Laser Cyborg" -Cyb-Hvybod-PulseLsr "Super Pulse Laser Cyborg" -Cyb-Hvywpn-PulseLsr "Super Pulse Laser Cyborg" - -R-Cyborg-Hvywpn-RailGunner "Super Rail-Gunner" -Cyb-Hvy-RailGunner "Super Rail-Gunner" -Cyb-Hvybod-RailGunner "Super Rail-Gunner" -Cyb-Hvywpn-RailGunner "Super Rail-Gunner" - -R-Cyborg-Hvywpn-A-T "Super Scourge Cyborg" -Cyb-Hvy-A-T "Super Scourge Cyborg" -Cyb-Hvybod-A-T "Super Scourge Cyborg" -Cyb-Hvywpn-A-T "Super Scourge Cyborg" - -Sys-SpyTower "NEXUS Link Tower" -R-Sys-SpyTower "NEXUS Link Tower" - -EMP-Cannon "EMP Cannon" -WallTower-EMP "EMP Cannon Tower" -R-Defense-EMPCannon "EMP Cannon Tower" -R-Wpn-EMPCannon "EMP Cannon" - -// added by SEBG for September patch - -X-Super-MassDriver "Mass Driver Fortress" -MassDriver "*Mass Driver Weapon*" -R-Defense-MassDriver "Mass Driver Fortress" - -X-Super-Cannon "Cannon Fortress" -CannonSuper "*Fortress Cannon Weapon*" -R-Defense-Super-Cannon "Cannon Fortress" - -X-Super-Rocket "Heavy Rocket Bastion" -RocketSuper "*Rocket Bastion Weapon*" -R-Defense-Super-Rocket "Heavy Rocket Bastion" - -X-Super-Missile "Missile Fortress" -MissileSuper "*Missile Fortress Weapon*" -R-Defense-Super-Missile "Missile Fortress" - -// added by Marc 1st September - Super Heavy bodies, Flamer Upgrades - -R-Vehicle-Body13 "Super Heavy Body - Wyvern" -Body13SUP "Wyvern" - -R-Vehicle-Body14 "Super Heavy Body - Dragon" -Body14SUP "Dragon" - -R-Wpn-Flamer-Damage07 "Superhot Plasmite gel" -R-Wpn-Flamer-Damage08 "Superhot Plasmite gel Mk2" -R-Wpn-Flamer-Damage09 "Superhot Plasmite gel Mk3" - -// added by Marc 13th September - EMP Mortar, AA laser, AA Hardpoints, Sam Hardpoints - -MortarEMP "EMP Mortar" -Emplacement-MortarEMP "EMP Mortar" -R-Wpn-MortarEMP "EMP Mortar" -R-Defense-EMPMortar "EMP Mortar" -AAGunLaser "Stormbringer AA Laser" -R-Defense-AA-Laser "Stormbringer AA Laser" -R-Wpn-AALaser "Stormbringer AA Laser" -P0-AASite-Laser "Stormbringer AA Laser" -R-Defense-WallTower-SamHvy "Vindicator Hardpoint" -WallTower-SamHvy "Vindicator Hardpoint" -WallTower-QuadRotAAGun "Whirlwind Hardpoint" -R-Defense-WallTower-QuadRotAA "Whirlwind Hardpoint" -WallTower-DoubleAAGun "Cyclone Hardpoint" -R-Defense-WallTower-DoubleAAgun "Cyclone Hardpoint" -R-Defense-WallTower-SamSite "Avenger Hardpoint" -WallTower-SamSite "Avenger Hardpoint" - -// added by Marc 15th September - Twin Rotary MG, VTOL Plasmite Bomb and VTOL EMP Missile Launcher - -MG5TWINROTARY "Twin Assault Gun" -R-Wpn-MG5 "Twin Assault Gun" -WallTower-TwinAssaultGun "Twin Assault Gun" -R-Defense-WallTower-TwinAGun "Twin Assault Gun" - -Bomb5-VTOL-Plasmite "Plasmite Bomb" -R-Wpn-Bomb05 "Plasmite Bomb" -Bomb6-VTOL-EMP "EMP Missile Launcher" -R-Wpn-Bomb06 "EMP Missile Launcher" - -// added by Marc 15th September - Upgraded Command Turrets - -CommandTurret2 "Command turret MkII" -R-Comp-CommandTurret02 "Command turret MkII" -CommandTurret3 "Command turret MkIII" -R-Comp-CommandTurret03 "Command turret MkIII" -CommandTurret4 "Command turret MkIV" -R-Comp-CommandTurret04 "Command turret MkIV" - - - ///////////////// - //NEW TEMPLATES// - ///////////////// - - /* Aivolution */ -//TransporterU _("Unit transport") -//TransporterBodyU _("Unit transport Body") -//R-Cyborg-TransportU _("Unit transport") -CobraHRepairHover _("Heavy Repair Turret Cobra Hover") -ViperHMGWheels _("Heavy Machinegun Viper Wheels") -Scourge-Mantis-H _("Scourge Mantis Hover") -TK-Mantis-H _("Tank Killer Mantis Hover") -CobraHMGTracks _("Heavy Machinegun Cobra Tracks") -Cobra-Hover-HC _("Heavy Cannon Cobra Hover") - -//====================================================================== -//GK -//====================================================================== -A-Viper-Wheels-MG _("Machinegun Viper Wheels") -A-Viper-Wheels-TMG _("Twin Machinegun Viper Wheels") -A-Viper-Wheels-HMG _("Heavy Machinegun Viper Wheels") -A-Cobra-Wheels-HMG _("Heavy Machinegun Cobra Wheels") -A-Cobra-Hover-HMG _("Heavy Machinegun Cobra Hover") - -A-Viper-Trk-MG _("Machinegun Viper Tracks") -A-Viper-Trk-TMG _("Twin Machinegun Viper Tracks") -A-Viper-Trk-HMG _("Heavy Machinegun Viper Tracks") -A-Cobra-Trk-HMG _("Heavy Machinegun Cobra Tracks") - -A-Cobra-Hover-MC _("Medium Cannon Cobra Hover") -A-Scorp-Hover-MC _("Medium Cannon Scorpion Hover") -A-Scorp-Trk-MC _("Medium Cannon Scorpion Tracks") -A-Python-Hover-MC _("Medium Cannon Python Hover") -A-Python-Hover-HC _("Heavy Cannon Python Hover") -A-Python-Trk-HC _("Heavy Cannon Python Tracks") -A-Mantis-Trk-Rail _("Rail Gun Mantis Tracks") -A-Mantis-Trk-Pulse _("Pulse Laser Mantis Tracks") -A-Python-Trk-Lancer _("Lancer Python Tracks") -A-Mantis-Trk-Lancer _("Lancer Mantis Tracks") -A-Veng-Trk-TK _("Tank Killer Vengeance Tracks") - -//A-Python-Trk-HLaser _("Heavy Laser Python Tracks") -//A-Python-Trk-Scour _("Scourge Python Tracks") - -A-Tiger-Trk-HC _("Heavy Cannon Tiger Tracks") -A-Tiger-Trk-Needle _("Needle Gun Tiger Tracks") -A-Retrib-Trk-Needle _("Needle Gun Retribution Tracks") -A-Veng-Trk-Needle _("Needle Gun Vengeance Tracks") -A-Veng-Trk-Rail _("Vengeance Tracks Rail Gun") -A-Veng-Trk-Guass _("Vengeance Tracks Gauss Cannon") -A-Veng-Trk-Scourge _("Vengeance Tracks Gauss Scourge") - -//Anti Structure VTOLs -V-Bug-ClusterBomb _("VTOL Cluster Bomb Bay Bug VTOL") -V-Bug-BB _("VTOL Bunker Buster Bug VTOL") -V-Scor-ClusterBomb _("VTOL Cluster Bomb Bay Scorpion VTOL") -V-Scor-BB _("VTOL Bunker Buster Scorpion VTOL") - -//Anti Tank VTOLs -V-Bug-Lancer _("VTOL Lancer Bug VTOL") -V-Bug-HPV _("VTOL HPV Cannon Bug VTOL") -V-Scor-Lancer _("VTOL Lancer Scorpion VTOL") -V-Scor-HPV _("VTOL HPV Cannon Scorpion VTOL") -V-Mantis-Lancer _("VTOL Lancer Mantis VTOL") -V-Mantis-HPV _("VTOL HPV Cannon Mantis VTOL") - -//Repair -A-Rep-Cobra-Trk _("Repair Turret Cobra Tracks") -A-Rep-Mantis-Trk _("Repair Turret Mantis Tracks") - -H-Scorp-Trk-Lancer _("Lancer Scorpion Tracks") -H-Scorp-Trk-HC _("Heavy Cannon Scorpion Tracks") -H-Scorp-VTOL-Lancer _("Lancer Scorpion VTOL") -H-Scorp-VTOL-BB _("Bunker Buster Scorpion VTOL") - -Viper-Trk-Com _("Command Turret Viper Tracks") -Cobra-Trk-Com _("Command Turret Cobra Tracks") -Scorp-Trk-Com _("Command Turret Scorpion Tracks") -Mantis-Trk-Com _("Command Turret Mantis Tracks") - -CobraTrkLancer _("Lancer Cobra Tracks") -MantisTrkHC _("Heavy Cannon Mantis Tracks") -MantisTKTracks _("Tank Killer Mantis Tracks") -MantisScourgeTracks _("Scourge Mantis Tracks") -ScorpTrkHMG _("Heavy Machinegun Scorpion Tracks") - -ScorpRepairTrk _("Repair Scorpion Tracks") -ScorpHRepairHover _("Heavy Repair Scorpion Hover") - -// Hover Truck Templates -CobraHoverTruck _("Truck Cobra Hover") -ScorpHoverTruck _("Truck Scorpion Hover") -MantisHoverTruck _("Truck Mantis Hover") - -// Bunker Buster Templates -CobraBBTracks _("Bunker Buster Cobra Tracks") -ScorpBBTracks _("Bunker Buster Scorpion Tracks") -MantisBBTracks _("Bunker Buster Mantis Tracks") - -ViperTrkLancer _("Lancer Viper Tracks") - -CobraPODHTracks _("Mini-Rocket Cobra Half-Tracks") -CobraPODTracks _("Mini-Rocket Cobra Tracks") -CobraMRLTracks _("Mini-Rocket Artillery Cobra Tracks") - -CobraInfernoHTracks _("Inferno Cobra Half-Tracks") -PythonHoverHVC _("HPV Cannon Python Hover") - -PythonTKTracks _("Tank Killer Python Tracks") -PythonMedCanTracks _("Medium Cannon Python Tracks") -PythonScourgeTracks _("Scourge Python Tracks") -PythonGaussTracks _("Gauss Cannon Python Tracks") -PythonPulseTracks _("Pulse Laser Python Tracks") -TigerPulseTracks _("Pulse Laser Tiger Tracks") -TigerHvLaserTracks _("Heavy Laser Tiger Tracks") -WyvernGaussTracks _("Gauss Cannon Wyvern Tracks") -WyvernPulseTracks _("Pulse Laser Wyvern Tracks") -WyvernHvLaserTracks _("Heavy Laser Wyvern Tracks") - -ViperLtMGHalfTracks _("Machinegun Viper Half-Tracks") -ViperFlameHalfTracks _("Flamer Viper Half-Tracks") - +/* Names data file for localisation + * The id's should be less than 20 chars + * + * Text like this "*text*" is not final and should not be translated. + */ + +/* + * VEHICLES + */ + +/* FINAL VEHICLES */ +ZNULLDESIGN "New Design" + +/* PLAYER 0 VEHICLES */ +Transporter "Transport" +ConstructionDroid "Truck" +ViperLtMGWheels "Machinegun Viper Wheels" + +/* PLAYER 1 - NP VEHICLES */ +ConstructionDroidNP "*NP - Scorpion Constructor*" +NP-L-RocketPod-Wheels "*NP-L-RocketPod-Wheels*" +NP-L-MRLS-Halftrack "*NP-L-MRLS-Half-track*" +NP-L-HMG-Halftrack "*NP-L-HMG-Half-track*" +NP-L-LtAT-Halftrack "*NP-L-LtAT-Half-track*" +NP-L-Sensor-Wheels "*NP-L-Sensor-Wheels*" +NP-M-Command-Halftrack "*NP-M-Command-Half-track*" +NP-M-Sensor-Wheels "*NP-M-Sensor-Wheels*" +NP-M-LitCannon-Halftrack "*NP-M-LtCannon-Half-track*" +NP-M-MdCannon-Halftrack "*NP-M-MdCannon-Half-track*" +NP-M-MdCannon-Tracks "*NP-M-MdCannon-Tracks*" +NP-M-LtMortar-Halftrack "*NP-M-LtMortar-Half-track*" +NP-M-HvyMortar-Halftrack "*NP-M-HvyMortar-Half-track*" +NP-M-BB-Halftrack "*NP-M-BB-Half-track*" +NP-H-MdCannon-Tracks "*NP-H-MdCannon-Tracks*" +NP-H-HvyCannon-Tracks "*NP-H-HvyCannon-Tracks*" +//NP-Light-test-vehicle "*NP-L-MdCannon-Tracks*" + +NP-M-LtAT-Hover "*NP-M-LtAT-Hover*" +NP-H-HvyCannon-Hover "*NP-H-HvyCannon-Hover*" +NP-M-MG3-Hover "*NP-M-MG3-Hover*" +NP-M-CON-HalfTrack "*NP-M-CON-Half-track*" +NP-M-CON-Track "*NP-M-CON-Track*" +NP-M-Repair-HalfTrack "*NP-M-Repair-Half-track*" + +NP-M-Command-Track "*NP-M-Command-Track*" +//NP-M-Command-Hover "*NP-M-Command-Hover*" +NP-M-CBS-Halftrack "*NP-M-CBS-Halftrack*" +NP-L-LtCannon-Halftrack "*NP-L-LtCannon-Halftrack*" +//NP-H-MdCannon-Hover "*NP-H-MdCannon-Hover*" + +/* PLAYER 2 - CO VEHICLES */ +CO-M-Con-Htrack "*CO-M-Con-Htrack*" + +CO-M-Mortar1-Halftrack "*CO-M-Mortar1-Halftrack*" +CO-H-How105-Tracks "*CO-H-How105-Tracks*" +CO-H-How150-Tracks "*CO-H-How150-Tracks*" + +CO-M-AA1-HalfTrack "*CO-M-AA1-HalfTrack*" +CO-H-AA2-HalfTrack "*CO-H-AA2-HalfTrack*" + +CO-L-RotMG-Wheels "*CO-S-RotMG-Wheels*" +CO-M-MedCan-Tracks "*CO-M-MedCan-Tracks*" +CO-H-HvyCan-Tracks "*CO-H-HvyCan-Tracks*" + +CO-L-Rocket-VTOL-Pod-VTOL "*CO-L-POD-VTOL*" +//CO-L-RotCan-VTOL "*CO-L-RotCan-VTOL*" + +CO-L-RotMG-HalfTrack "*CO-L-RotMG-HalfTrack*" + +CO-M-Sensor-Half-Track "*CO-M-Sensor-Half-Track*" + +CO-L-Rocket-BB-Hover "*CO-L-Rocket-BB-Hover*" +CO-L-RotMg-Hover "*CO-L-RotMg-Hover*" + +CO-M-Repair-HalfTrack "*CO-M-Repair-HalfTrack*" +CO-M-CBS-Halftrack "*CO-M-CBS-Halftrack*" +CO-M-Vstrike-Halftrack "*CO-M-Vstrike-Halftrack*" +CO-M-VTOLCBS-Halftrack "*CO-M-VTOLCBS-Halftrack*" +CO-M-Command-Track "*CO-M-Command-Track*" +CO-H-Command-Track "*CO-H-Command-Track*" +CO-L-HMG-Wheels "*CO-L-HMG-Wheels*" +CO-L-POD-Wheels "*CO-L-POD-Wheels*" +CO-M-HPVCannon-Tracks "*CO-M-HPVCannon-Tracks*" +CO-M-MRL-Halftrack "*CO-M-MRL-Halftrack*" +CO-M-Rocket-LtA-T-Halftrack "*CO-M-Rocket-LtA-T-Halftrack*" +CO-M-Rocket-BB-Halftrack "*CO-M-Rocket-BB-Halftrack*" +CO-M-Rocket-HvyA-T-Track "*CO-M-Rocket-HvyA-T-Track*" +CO-H-RotCan-Track "*CO-H-RotCan-Track*" +CO-H-HPVCannon-Tracks "*CO-H-HPVCannon-Tracks*" +CO-H-Rocket-BB-Halftrack "*CO-H-BB-Halftrack*" +CO-M-HvMortar-Halftrack "*CO-M-HvMortar-Halftrack*" +CO-M-RotMortar-Halftrack "*CO-M-RotMortar-Halftrack*" +CO-H-RotHow-Track "*CO-H-RotHow-Track*" +CO-L-Rocket-LtA-T-VTOL "*CO-L-LtATRkt-VTOL*" +CO-L-MG2-VTOL "*CO-L-MG2-VTOL*" +CO-L-RotMG-VTOL "*CO-L-RotMG-VTOL*" +CO-M-Bomb1-VTOL "*CO-M-Bomb1-VTOL*" +CO-M-Bomb2-VTOL "*CO-M-Bomb2-VTOL*" +CO-M-QuadMG1AA-Halftrack "*CO-M-QuadMG1AA-Halftrack*" +CO-H-QuadRotAA-Halftrack "*CO-H-QuadRotAA-Halftrack*" +CO-L-Rocket-LtA-T-Hover "*CO-L-Rocket-LtA-T-Hover*" + +/* PLAYER 3 - NX VEHICLES */ + +//NX-M-Missile-LtSAM-HT "*NX-M-SAMissle1-HT*" +//NX-M-PulseLas1-Track "*NX-M-PulseLas1-Track*" +NX-M-Rail2-Hover "*NX-M-Rail2-Hover*" +NX-L-PulseLas-VTOL "*NX-L-PulseLas-VTOL*" +NX-L-Missile-A-T-VTOL "*NX-L-ASMiss-VTOL*" +//NX-L-Rail1-Whl "*NX-L-Rail1-Whl*" +NX-L-Sens-Hov "*NX-L-Sens-Hov*" +NX-M-Missile-A-T-Hover "*NX-M-ATMiss-Hov*" +NX-M-Com-Hover "*NX-M-Com-Track*" +NX-M-Con-Hover "*NX-M-Con-Hover*" +NX-L-Repair-Hover "*NX-L-Repair-Hover*" +NX-M-Link-Hover "*NX-M-Link-Hover*" +NX-M-Strike-Hover "*NX-M-Strike-Hover*" +NX-H-CBS-Hover "*NX-H-CBS-Hover*" +NX-M-VTOLCBS-Hover "*NX-M-VTOLCBS-Hover*" +NX-M-PulseLas-Hover "*NX-M-Laser2-Hover*" +NX-H-Rail3-Hover "*NX-H-Rail3-Hover*" +NX-H-BeamLas-Hover "*NX-H-BeamLas-Hover*" +NX-L-Missile-MdArt-Hover "*NX-L-MdMiss-Hover*" +NX-H-HvMiss-Hover "*NX-H-HvMiss-Hover*" +//NX-L-Missile-BB-VTOL "*NX-L-BBMiss-VTOL*" +NX-L-Rail1-VTOL "*NX-L-Rail1-VTOL*" +NX-H-Rail2-VTOL "*NX-H-Rail2-VTOL*" +//NX-M-HvySAM-Htrack "*NX-M-HvySAM-Htrack*" + +// NEXUS only Cyborgs +NX-Cyb-HvMiss-JUMP "*NX-Cyb-HvMiss-JUMP*" +NX-Cyb-PulseLas-JUMP "*NX-Cyb-PulseLas-JUMP*" +NX-Cyb-Rail1-JUMP "*NX-Cyb-JUMP*" +NX-Cyb-Miss-JUMP "*NX-Cyb-Miss-JUMP*" +Cyb-NXCybRail1-GRD "*Cyb-NXCybRail1-GRD*" +Cyb-NXCybATmiss-GRD "*Cyb-NXCybATmiss-GRD*" +Cyb-NXPulseLas-GRD "*Cyb-NXPulseLas-GRD*" +Cyb-NXCybRail1-JUMP "*Cyb-NXCybRail1-JUMP*" +Cyb-NXCybATmiss-JUMP "*Cyb-NXCybATmiss-JUMP*" +Cyb-NXPulseLas-JUMP "*Cyb-NXPulseLas-JUMP*" + +/* PLAYER 4 - FORCE EDITOR VEHICLES */ +ViperLtCannonWheels "Viper Light Cannon Wheels" +ViperFlameWheels "Viper Flamer Wheels" +ViperSensorWheels "Viper Sensor Wheels" +ViperLtCannonTracks "Viper Light Cannon Tracks" + +CobraHMGHalfTrack "Cobra Heavy Machinegun Half-track" +CobraMortarHalfTrack "Cobra Mortar Half-track" +CobraLtCnTrks "Cobra Light Cannon Tracks" + +/* PLAYER 5 - MULTIPLAYER VEHICLES */ +ConstructorDroid "Truck" +CyborgRotMgGround "Assault Gunner" + +/* PLAYER 6 - TEST VEHICLES */ + +// new player cyborgs - for Pete + +Cyb-CybChnGun-JUMP "*Cyb-CybChnGun-JUMP*" +ATESTVEHICLE "*TEST VEHICLE*" +ATESTVTOL "*TEST VTOL*" +ASPOTTER "*SPOTTER*" +AVTOLSPOTTER "*VTOL SPOTTER*" +Superbody "*Kev's Super Body*" +Superweapon "*Kev's Super Weapon*" +Superweapon2 "*Alex's Super Weapon*" +SuperTank "*Kev's Super Tank*" +SuperTank2 "*Alex's Killa*" + +ViperMedCnTrks "Viper Medium Cannon Tracks" +ViperRepairWheels "Viper Repair Wheels" +ViperRepairHalftrack "Viper Repair Half-track" +ViperMG01Wheels "Viper Machine Gun Wheels" +ViperMG02Wheels "Viper Twin Machinegun Wheels" +ViperMG02Halftrack "Viper Twin Machinegun Half-track" +ViperHMGHalftrack "Viper Heavy Machinegun Half-track" +ViperHMGTracks "Viper Heavy Machinegun Tracks" +ViperLtA-Twheels "Viper Lancer Wheels" +ViperPODWheels "Viper Mini-Pod Rockets Wheels" +ViperMRLWheels "Viper Mini-Rocket Artillery Wheels" +ViperBBWheels "Viper Bunker Buster Rockets Wheels" +ViperLtCannonHTracks "Viper Light Cannon Half Tracks" + +CobraMedCnTrks "Cobra Medium Cannon Tracks" +CobraHvyCnTrks "Cobra Heavy Cannon Tracks" +CobraSpadeTracks "Cobra Truck" +CobraSensorHalftrack "Cobra Sensor Half-track" +CobraFlameTracks "Cobra Flamer Tracks" +CobraHvyMortarHalftrack "Cobra Bombard Half-track" +CobraComHalftrack "Cobra Command Turret Half-track" +CobraLtA-Thalftrack "Cobra Lancer Half-track" +CobraMRLHalftrack "Cobra Mini-Rocket Artillery Half-track" + +PythonLtCnTrks "Python Light Cannon Tracks" +PythonMedCnTrks "Python Medium Cannon Tracks" +PythonHvyCnTrks "Python Heavy Cannon Tracks" +PythonComTracks "Python Commander Tracks" + +/* PLAYER 7 - SCAVENGER VEHICLES */ +BaBaPeople "Scavenger" +BabaJeep "Jeep" +BarbarianTrike "Trike" +BarbarianBuggy "Buggy" +BarbarianRKBuggy "Rocket Buggy" +BabaRKJeep "Rocket Jeep" +BabaFireTruck "Fire Truck" +BabaPickUp "Pick-Up Truck" +BabaFireCan "Fire Cannon" +BabaBusCan "School Bus" +BaBaCivilian "Civilian" + +/* FINAL CYBORGS */ +CyborgChain01Ground "Machinegunner" +CyborgFlamer01Grd "Flamer" +CyborgRkt01Ground "Lancer" +CyborgCannon01Grd "Heavy Gunner" + +CyborgChain01CGround "Machinegunner" +CyborgFlamer01CGrd "Flamer" +CyborgRkt01CGround "Lancer" +CyborgCannon01CGrd "Heavy Gunner" + +// Cyborgs - shared +Cyb-Chain-GROUND "Machinegunner" +Cyb-Flamer-GROUND "Cyborg Flamer" +Cyb-Cannon-GROUND "Heavy Gunner" +Cyb-Rocket-GROUND "Lancer" +Cyb-RotMG-GROUND "Assault Gunner" + +/* TEST CYBORGS */ +CyborgCan01Air "*TEST - Cyborg Cannon01 Air*" +CyborgCan01Ground "Cyborg Cannon" +CyborgRkt01Air "*TEST - Cyborg Rocket01 Air*" + +/* + * COMPONENTS * + */ + +/* BODIES */ +Body1REC "Viper" +Body2SUP "Leopard" +Body3MBT "Retaliation" +Body4ABT "Bug" +Body5REC "Cobra" +Body6SUPP "Panther" +Body7ABT "Retribution" +Body8MBT "Scorpion" +Body9REC "Tiger" +Body10MBT "Vengeance" +Body11ABT "Python" +Body12SUP "Mantis" + +TransporterBody "Transport Body" +ZNULLBODY "*Z NULL BODY*" + +B1BaBaPerson01 "*BaBa Body*" +B2JeepBody "*Jeep Body*" +B3body-sml-buggy01 "*Buggy Body*" +B4body-sml-trike01 "*Trike Body" +B3bodyRKbuggy01 "*Rocket Buggy Body*" +B2RKJeepBody "*Rocket Jeep Body*" +BusBody "*School Bus Body*" +FireBody "*Fire Engine Body*" + +/* Test Cyborg Body Parts */ +//CyborgCan1Air "*CyborgCannon1Air*" +//CyborgCan1Ground "*CyborgCannon1Ground*" +CyborgChain1Ground "*CyborgChaingun1Ground*" +//CyborgFlame1Ground "*CyborgFlamer1Ground*" +//CyborgRkt1Air "*CyborgRocket1Air*" +CyborgRkt1Ground "CyborgRocket1Ground*" +NX-Cyb-Rail1 "*NX-Cyb-Rail1*" +CyborgRotMG "*CyborgRotMG*" +//NX-CybMissGrnd "*NX-CybMissGrnd*" +NX-CybLasGrnd "*NX-CybLasGrnd*" +//NX-CybChain1Grnd "*NX-CybChain1Grnd*" + +// New Cyborg Bodies - Unique body for EACH template +CyborgCannonGrd "*Cyborg Cannon*" +// "*Cyborg Machine Gun*" +CyborgFlamerGrd "*Cyborg Flamer*" +CyborgCan1CGround "*Cyborg Cannon*" +CyborgChn1CCGround "*Cyborg Machine Gun*" +//CyborgChn01Ground "*Cyborg Machine Gun*" +CybFlamer01CGrd "*Cyborg Flamer*" +//CybRocketGrd "*Cyborg Rocket*" +CybRotMgGrd "*Cyborg Assault Gun*" + +//CyborgNXATMissGrd "*CyborgNXATMissGrd*" +//CyborgNXATMissJmp "*CyborgNXATMissJ*" +// "*CybNXCybRail1Grd*" +//CybNXCybRail1Jmp "*CybNXCybRail1J*" +CybNXPulseLasJmp "*CybNXPulseLasJ*" +//CybNXHvMissJmp "*CybNXHvMissJ*" +CybNXMissJmp "*CybNXMissJmp*" +//CybNXPulseLasJmp "*CybNXPulseLasJ*" +CybNXRail1Jmp "*CybNXRail1Jmp*" +//CybNXPulseLaserGrd "*CybNXPulseLaserJ*" +//NX-Cyb-HvMissile-JUMP "*NX-Cyb-HvMissile-J*" +//NX-Cyb-Missile-JUMP "*NX-CybMissGrnd*" +//NX-CybLasGrnd "*NX-CybLasGrnd*" +//NX-Cyb-Rail1-JUMP "*NX-Cyb-J*" + +/* BRAIN */ +ZNULLBRAIN "Z NULL BRAIN" +StandardBrain "*TEST - Standard Brain*" +ConstructionBrain "*TEST - ConstructionBrain*" +CommandBrain01 "Command Turret" + +/* PROGRAM */ +ZNULLPROGRAM "Z NULL PROGRAM" +program1 "*TEST - program #1" +Construct "*TEST - Construct" +RadarProgram "*TEST - Radar Program" +Demolish "Demolish" + +/* CONSTRUCTION */ +ZNULLCONSTRUCT "Z NULL CONSTRUCT" +Spade1Mk1 "Truck" + +/* PROPULSION */ +ZNULLPROP "Z NULL PROP" +wheeled01 "Wheels" +wheeled02 "Wheels II" +wheeled03 "Wheels III" +tracked01 "Tracks" +tracked02 "Tracks II" +tracked03 "Tracks III" +hover01 "Hover" +hover02 "Hover II" +hover03 "Hover III" +V-Tol "VTOL" +V-Tol02 "VTOL II" +V-Tol03 "VTOL III" +HalfTrack "Half-tracks" +HalfTrack02 "Half-tracks II" +HalfTrack03 "Half-tracks III" +CyborgLegs02 "Cyborg Propulsion II" +CyborgLegs03 "Cyborg Propulsion III" +//CyborgJets02 "Cyborg Jump Pack II" +//CyborgJets03 "Cyborg Jump Pack III" + +/*BABARIAN PROPULSIONS*/ +BaBaProp "BaBaProp" +BaBaLegs "BaBaLegs" + +/*CYBORG PROPULSIONS*/ +CyborgLegs "Cyborg Propulsion" +//CyborgJets "Cyborg Jump Pack" + +/* VEHICLE AUTO-REPAIR */ +ZNULLREPAIR "Z NULL REPAIR" +LightRepair1 "Mobile Repair Turret" + +/* ECM */ +ZNULLECM "Z NULL ECM" +//ECM1PylonMk1 "Jammer Tower" +//ECM1TurretMk1 "Jammer Turret" +//ECM1DefaultMk1 "*TEST - ECM1 Default Mk1*" +ECM1Default "*TEST - Baba ECM Default*" +//ECM2PylonMk1 "Jammer Tower II" +//ECM2TurretMk1 "Jammer Turret III" +//ECM2DefaultMk1 "*Improved ECM Default Mk1*" +//ECM3PylonMk1 "Jammer Tower III" +//ECM3TurretMk1 "Jammer Turret III" +//ECM3DefaultMk1 "*ECM3DefaultMk1*" + +/* SENSORS */ +ZNULLSENSOR "Z NULL SENSOR" +BaBaSensor "*BaBa Default Sensor*" +CCSensor "*CC Sensor*" +DefaultSensor1Mk1 "*Default Sensor1 Mk1*" +NavGunSensor "*NavGunSensor*" +SensorTower1Mk1 "Sensor Tower" +SensorTower2Mk1 "Hardened Sensor Tower" +SensorTurret1Mk1 "Sensor Turret" +Sys-CBTower01 "*CB Tower" +Sys-VTOLCBTower01 "VTOL CB Radar Tower" +Sys-VTOLRadarTower01 "VTOL CB Radar Tower" +UplinkSensor "Uplink Sensor" + +Sys-CBTurret01 "CB Radar Turret" +Sys-VstrikeTurret01 "VTOL Strike Turret" +Sys-VTOLCBTurret01 "VTOL CB Radar Turret" +Sys-NXLinkTurret01 "NEXUS Link" + +SpyTurret01 "Nexus Link Turret" + +/* PLAYER STRUCTURES */ +A0ResourceExtractor "Oil Derrick" +A0CommandCentre "Command Center" +A0LightFactory "Factory" +A0FacMod1 "Factory Module" +A0PowerGenerator "Power Generator" +A0PowMod1 "Power Module" +A0ResearchFacility "Research Facility" +A0ResearchModule1 "Research Module" +A0ADemolishStructure "Demolish Structure" +DemolishStructure "Demolish" +A0RepairCentre "Repair Center" +A0ComDroidControl "Command Relay Center" +A0HardcreteMk1CWall "Hardcrete Corner Wall" +A0HardcreteMk1Wall "Hardcrete Wall" + +A0VTolFactory1 "VTOL Factory" +A0CyborgFactory "Cyborg Factory" + +/* DEFENSIVE STRUCTURES */ +Tower-Projector "Inferno Emplacement" //previously "Inferno Guard Tower" +WallTower-Projector "Inferno Hardpoint" +Emplacement-RotMor "Pepperpot Pit" +Emplacement-RotHow "Hellstorm Emplacement" +//SuperEmplacement "*Super Gun*" +//PlasmaEmplacement "*Plasma Weapon*" + +AASite-TwinBof "Tornado AA Site" +AASite-QuadBof "Cyclone AA Site" +AASite-QuadMg1 "Hurricane AA Site" +AASite-QuadRotMg "Whirlwind AA Site" + +Emplacement-Rocket06-IDF "Ripple Rocket Battery" +//Tower-Missile1 "Lancer Guard Tower" +//Tower-Missile2 "Mini-Pod Rocket Guard Tower" +Tower-VulcanCan "Assault Cannon Guard Tower" +Tower-RotMg "Assault Gun Guard Tower" +Wall-RotMg "Assault Gun Hardpoint" +Wall-VulcanCan "Assault Cannon Hardpoint" + +/*SENSOR TOWERS*/ +Sys-SensoTower01 "Sensor Tower" +Sys-SensoTower02 "Hardened Sensor Tower" +//Sys-ECMTower01 "Jammer Tower" +Sys-CB-Tower01 "CB Tower" +Sys-VTOL-CB-Tower01 "VTOL CB Tower" +Sys-VTOL-RadarTower01 "VTOL Strike Tower" + +/*WALLTOWERS*/ +WallTower01 "Heavy Machinegun Hardpoint" +WallTower02 "Light Cannon Hardpoint" +WallTower03 "Medium Cannon Hardpoint" +WallTower04 "Heavy Cannon Hardpoint" +WallTower05 "Flamer Hardpoint" +WallTower06 "Lancer Hardpoint" + +GuardTower1 "Machinegun Guard Tower" +GuardTower2 "Twin Machinegun Guard Tower" +GuardTower3 "Heavy Machinegun Guard Tower" +GuardTower4 "Flamer Guard Tower" +GuardTower5 "Lancer Guard Tower" +GuardTower6 "Mini-Pod Rocket Guard Tower" + +/*PILLBOXES*/ +PillBox1 "Machinegun Bunker" +PillBox2 "Twin Machinegun Bunker" +PillBox3 "Heavy Machinegun Bunker" +PillBox4 "Light Cannon Bunker" +PillBox5 "Flamer Bunker" +PillBox6 "Lancer Bunker" + +/*TANKTRAPS*/ +A0TankTrap "Tank Traps" +A0TankTrap2 "Dragon's Teeth" +TankTrapC "Tank Traps" +TankTrap2C "Dragon's Teeth" + +/*VTOL STRUCTURES*/ +A0VtolPad "VTOL Rearming Pad" + +/* EMPLACEMENTS */ +Emplacement-Howitzer105 "Howitzer Emplacement" +Emplacement-PrisLas "Flashlight Emplacement" +//Emplacement-Super "*Emplacement-SuperGun*" +WallTower-PulseLas "Flashlight Hardpoint" +WallTower-Rail2 "Rail Gun Hardpoint" +GuardTower-BeamLas "*GuardTower-BeamLas*" +GuardTower-ATMiss "Scourge Missile Tower" +GuardTower-Rail1 "Needle Gun Tower" +Emplacement-Rail3 "Gauss Cannon Emplacement" + +/* PLAYER WEAPONS */ +Cannon1Mk1 "Light Cannon" +Cannon2A-TMk1 "Medium Cannon" +Cannon375mmMk1 "Heavy Cannon" +Cannon4AUTOMk1 "Hyper Velocity Cannon" +Cannon5VulcanMk1 "Assault Cannon" + +Flame1Mk1 "Flamer" +Flame2 "Inferno" + +Howitzer105Mk1 "Howitzer" +Howitzer105Mk1-Pit "Howitzer Emplacement" +Howitzer150Mk1 "Ground Shaker" +Howitzer150Mk1-Pit "Ground Shaker Emplacement" +Howitzer03-Rot "Hellstorm" +Howitzer03-Rot-Pit "Hellstorm Emplacement" +//Howitzer04-Inc "Hellfire" + +//Laser1PRISMATICMk1 "Flashlight" +Laser2PULSEMk1 "Pulse Laser" + + +MG1Mk1 "Machinegun" +MG1-Pillbox "Machinegun Bunker" +MG2Mk1 "Twin Machinegun" +MG2-Pillbox "Twin Machinegun Bunker" +MG3Mk1 "Heavy Machinegun" +MG3-Pillbox "Heavy Machinegun Bunker" +MG4ROTARYMk1 "Assault Gun" + +//Missile-BB "Devastator Missile" +Missile-A-T "Scourge Missile" +Missile-MdArt "Angel Missile" +Missile-HvySAM "Vindicator SAM" +Missile-HvyArt "Archangel Missile" + +Missile-LtSAM "Avenger SAM" +//Missile-VTOL-BB "VTOL Devastator Missile" +Missile-VTOL-AT "VTOL Scourge Missile" + +Mortar1Mk1 "Mortar" +Mortar1Mk1-Pit "Mortar Emplacement" +Mortar2Mk1 "Bombard" +Mortar2Mk1-Pit "Bombard Emplacement" +Mortar3ROTARYMk1 "Pepperpot" +Mortar3ROTARYMk1-Pit "Peperpot Emplacement" +RailGun1Mk1 "Needle Gun" +RailGun2Mk1 "Rail Gun" +RailGun3Mk1 "Gauss Cannon" +Rocket-LtA-T "Lancer" +Rocket-MRL "Mini-Rocket Artillery" +Rocket-BB "Bunker Buster" +//Rocket04-Scud "*Earthshaker*" +Rocket-Pod "Mini-Pod" +Rocket-IDF "Ripple Rockets" +Rocket-HvyA-T "Tank Killer" +Rocket-VTOL-BB "VTOL Bunker Buster" +Rocket-VTOL-Pod "VTOL Mini-Pod" +Rocket-VTOL-LtA-T "VTOL Lancer" +Rocket-VTOL-HvyA-T "VTOL Tank Killer" + +CyborgCannon "Heavy Gunner" +CyborgCannon01 "*Cyborg Cannon*" +CyborgRocket "Lancer" +CyborgChaingun "Machine Gunner" +CyborgFlamer01 "Flamer" + +TUTMG "Machinegun" + +CommandTurret1 "Command Turret" + +AAGun1Mk1 "Tornado Flak Turret" +AAGun2Mk1 "Cyclone Flak Turret" + +//Supergun "*Supergun*" +PlasmaHeavy "*Heavy Plasma Launcher*" + +QuadRotAAGun "Whirlwind AA Turret" +QuadMg1AAGun "Hurricane AA Turret" +NavaroneGun "*NavaroneGun*" + +NX-CyborgMiss "*NX-CyborgMiss*" +NX-CyborgChaingun "*NX-CyborgChaingun*" +NX-CyborgPulseLas "*NX-CyborgPulseLas*" + +LasSat "LasSat" + +Cannon1-VTOL "VTOL Cannon" +Cannon4AUTO-VTOL "VTOL Hyper Velocity Cannon" +Cannon5Vulcan-VTOL "VTOL Assault Cannon" +Laser2PULSE-VTOL "VTOL Pulse Laser" + +MG1-VTOL "VTOL Machinegun" +MG2-VTOL "VTOL Twin Machinegun" +MG3-VTOL "VTOL Heavy Machinegun" +MG4ROTARY-VTOL "VTOL Assault Gun" +RailGun1-VTOL "VTOL Needle Gun" +RailGun2-VTOL "VTOL Rail Gun" + +PBomb "Proximity Bomb Turret" +SPBomb "Proximity Superbomb Turret" + +Bomb1-VTOL-LtHE "VTOL Cluster Bombs Bay" +Bomb2-VTOL-HvHE "VTOL Heap Bomb Bay" +Bomb3-VTOL-LtINC "VTOL Phosphor Bomb Bay" +Bomb4-VTOL-HvyINC "VTOL Thermite Bomb Bay" + +// Collective Specific Defensive Structures +CollectiveWall "Collective Wall" +CollectiveCWall "Collective CWall" +CO-Tower-MG3 "*CO-Tower-MG3*" +CO-Tower-RotMG "*CO-Tower-RotMG*" +CO-Tower-MdCan "*CO-Tower-MdCan*" +CO-WallTower-HvCan "*CO-WallTower-HvCan*" +CO-WallTower-RotCan "*CO-WallTower-RotCan*" +CO-Tower-HVCan "*CO-Tower-HVCan*" +CO-Tower-HvFlame "*CO-Tower-HvFlame*" +CO-Tower-HvATRkt "*CO-Tower-HvATRkt*" +CO-Tower-LtATRkt "*CO-Tower-LtATRkt*" +CO-Emp-Mortar2-Pit "*CO-Emp-Mortar2-Pit*" +CO-Emp-How105-Pit "*CO-Emp-How105-Pit*" +//CO-Emp-How150-Pit "*CO-Emp-How150-Pit*" +//CO-Emp-RotHow-Pit "*CO-Emp-RotHow-Pit*" +CO-Emp-RotMortar-Pit "*CO-Emp-RotMortar-Pit*" +// CO-AASite-Flak1 "*CO-AASite-Flak1*" +// CO-AASite-Flak2 "*CO-AASite-Flak2*" +// CO-AASite-QuadMg1 "*CO-AASite-QuadMg1*" +// CO-AASite-QuadRotMg "*CO-AASite-QuadRotMg*" +CO-AASite-SAM1 "*CO-AASite-SAM1*" + +// NEXUS Specific Defensive Structures +NEXUSWall "NEXUS Wall" +NEXUSCWall "NEXUS CWall" +NX-Tower-Rail1 "*NX-Tower-Rail1*" +NX-Tower-ATMiss "*NX-Tower-ATMiss*" +NX-Tower-PulseLas "*NX-Tower-PulseLas*" +NX-WallTower-Rail2 "*NX-WallTower-Rail2*" +NX-WallTower-BeamLas "*NX-WallTower-BeamLas*" +NX-WallTower-Rail3 "*NX-WallTower-Rail3*" +NX-Emp-MedArtMiss-Pit "*NX-Emp-MedArtMiss-Pit*" +NX-Emp-MultiArtMiss-Pit "*NX-Emp-MultiArtMiss-Pit*" +NX-Emp-Plasma-Pit "*NX-Emp-Plasma-Pit*" +NX-AASite-SAM1 "*NX-AASite-SAM1*" +NX-AASite-SAM2 "*NX-AASite-SAM2*" + +/* + * RESEARCH TOPICS + */ +ZNullResearch "*Z Null Research*" + +CAM1RESEARCH "CAM1 RESEARCH" +ADVANCEDRESEARCH "ADVANCED RESEARCH" +CAM1VEHICLES "CAM1 VEHICLES" +CAM1WEAPONS "CAM1 WEAPONS" +CAM1SYSTEMS "CAM1 SYSTEMS" +CAM1DEFENSES "CAM1 DEFENSES" +CAM1STRUCTURES "CAM1 STRUCTURES" +CAM2RESEARCH "CAM2 RESEARCH" +CAM2VEHICLES "CAM2 VEHICLES" +CAM2CYBORGS "CAM2 CYBORGS" +CAM2WEAPONS "CAM2 WEAPONS" +CAM2SYSTEMS "CAM2 SYSTEMS" +CAM2DEFENSES "CAM2 DEFENSES" +CAM2STRUCTURES "CAM2 STRUCTURES" +//CAM2-COWall "CAM2 Collective Wall" +CAM3RESEARCH "CAM3 RESEARCH" +//CAM3VEHICLES "CAM3 VEHICLES" +//CAM3CYBORGS "CAM3 CYBORGS" +//CAM3WEAPONS "CAM3 WEAPONS" +//CAM3SYSTEMS "CAM3 SYSTEMS" +//CAM3DEFENSES "CAM3 DEFENSES" +//CAM3NOTUSED "CAM3 NOT USED" +//CAM3-NXWall "CAM3 NEXUS Wall" + +//R-Comp-IDFAccuracy01 "*IDF Fire Accuracy*" +R-Comp-CommandTurret01 "Command Turret" +R-Comp-SynapticLink "Synaptic Link" + +R-Comp-MissileCodes01 "Missile Targeting Codes" +R-Comp-MissileCodes02 "Second Level Missile Targeting Codes" +R-Comp-MissileCodes03 "Third Level Missile Firing Codes" + +R-Cyborg-Armor-Heat01 "Cyborg Thermal Armor" +R-Cyborg-Armor-Heat02 "Cyborg Thermal Armor Mk2" +R-Cyborg-Armor-Heat03 "Cyborg Thermal Armor Mk3" +R-Cyborg-Armor-Heat04 "Cyborg High Intensity Thermal Armor" +R-Cyborg-Armor-Heat05 "Cyborg High Intensity Thermal Armor Mk2" +R-Cyborg-Armor-Heat06 "Cyborg High Intensity Thermal Armor Mk3" + +R-Cyborg-Metals01 "Cyborg Composite Alloys" +R-Cyborg-Metals02 "Cyborg Composite Alloys Mk2" +R-Cyborg-Metals03 "Cyborg Composite Alloys Mk3" +R-Cyborg-Metals04 "Cyborg Dense Composite Alloys" +R-Cyborg-Metals05 "Cyborg Dense Composite Alloys Mk2" +R-Cyborg-Metals06 "Cyborg Dense Composite Alloys Mk3" +R-Cyborg-Metals07 "Cyborg Superdense Composite Alloys" +R-Cyborg-Metals08 "Cyborg Superdense Composite Alloys Mk2" +R-Cyborg-Metals09 "Cyborg Superdense Composite Alloys Mk3" +//R-Cyborg-Metals10 "Cyborg Bonded Laminates" + +R-Cyborg-Transport "Cyborg Transport" + +R-Cyborg-Wpn-BB "Bunker Blaster" +R-Cyborg-Wpn-Cannon "Heavy Gunner" +R-Cyborg-Wpn-Flamer "Flamer" +R-Cyborg-Wpn-MG "Machine Gunner" +R-Cyborg-Wpn-Rocket "Lancer" +R-Cyborg-Wpn-RotMG-Grd "Assault Gunner" +R-Cyborg-Wpn-Rail1-Grd "Needle Gunner" +R-Cyborg-Wpn-ATMiss-Grd "Scourge" +R-Cyborg-Wpn-Laser1-Grd "Flashlight Gunner" + +R-Cyborg-Wpn-BB-Jump "Jump Bunker Blaster" +R-Cyborg-Wpn-Cannon-Jump "Jump Heavy Gunner" +R-Cyborg-Wpn-Rocket-Jump "Jump Lancer" +R-Cyborg-Wpn-RotMG-Jump "Jump Assault Gunner" +R-Cyborg-Wpn-Rail1-Jump "Jump Needle Gunner" +R-Cyborg-Wpn-ATMiss-Jump "Jump Scourge" +R-Cyborg-Wpn-Laser1-Jump "Jump Flashlight Gunner" + +R-Cyborg-Jump01 "Cyborg Jump Pack" +R-Cyborg-Legs01 "Cyborg Propulsion" +R-Cyborg-Legs02 "Cyborg Propulsion II" +R-Cyborg-Legs03 "Cyborg Propulsion III" + +/* RESEARCH - DEFENSES */ +R-Defense-HardcreteWall "Hardcrete" +//R-Defense-HardcreteWall-CO "CO-Hardcrete" +R-Defense-HardcreteWall-NP "NP-Hardcrete" +//R-Defense-HardcreteWall-NX "NX-Hardcrete" +R-Defense-WallUpgrade01 "Improved Hardcrete" +R-Defense-WallUpgrade02 "Improved Hardcrete Mk2" +R-Defense-WallUpgrade03 "Improved Hardcrete Mk3" +R-Defense-WallUpgrade04 "Supercrete" +R-Defense-WallUpgrade05 "Supercrete Mk2" +R-Defense-WallUpgrade06 "Supercrete Mk3" +R-Defense-WallUpgrade07 "Plascrete" +R-Defense-WallUpgrade08 "Plascrete Mk2" +R-Defense-WallUpgrade09 "Plascrete MK3" +R-Defense-WallUpgrade10 "Plasteel" +R-Defense-WallUpgrade11 "Plasteel Mk2" +R-Defense-WallUpgrade12 "Plasteel Mk3" + +R-Defense-AASite-QuadBof "Cyclone AA Site" +R-Defense-AASite-QuadMg1 "Hurricane AA Site" +R-Defense-AASite-QuadRotMg "Whirlwind AA Site" +R-Defense-AASite-TwinBof "Tornado AA Flak Site" + +R-Defense-Emplacement-HPVcannon "HPV Cannon Emplacement" + +R-Defense-Howitzer "Howitzer Emplacement" +R-Defense-HvyA-Trocket "Tank Killer Emplacement" +R-Defense-HvyFlamer "Inferno Emplacement" +R-Defense-HvyHowitzer "Ground Shaker Emplacement" +R-Defense-HvyMor "Bombard Pit" + +//R-Defense-IncHow "Hellfire Emplacement" +R-Defense-IDFRocket "Ripple Rocket Battery" + +R-Defense-MdArtMissile "Angel Missile Battery" +R-Defense-HvyArtMissile "Archangel Missile Battery" +R-Defense-MortarPit "Mortar Pit" +R-Defense-MRL "Mini-Rocket Battery" + +R-Defense-Pillbox01 "Machinegun Bunker" +R-Defense-Pillbox03 "Heavy Machinegun Bunker" +R-Defense-Pillbox04 "Light Cannon Bunker" +R-Defense-Pillbox05 "Flamer Bunker" +R-Defense-Pillbox06 "Lancer Bunker" +R-Defense-PulseLas "Pulse Laser Emplacement" + +R-DefenssLas "Flashlight Emplacement" + +R-Defense-Rail2 "Rail Gun Emplacement" +R-Defense-Rail3 "Gauss Cannon Emplacement" +R-Defense-RotCannon "Assault Cannon Emplacement" +R-Defense-RotHow "Hellstorm Emplacement" +R-Defense-RotMG "Assault Gun Emplacement" +R-Defense-RotMor "Pepperpot Pit" + +R-Defense-SamSite1 "Avenger SAM Site" +R-Defense-SamSite2 "Vindicator SAM Site" + +R-Defense-TankTrap01 "Tank Traps" +R-Defense-TankTrap02 "Dragon's Teeth" + +R-Defense-Tower01 "Machinegun Guard Tower" +R-Defense-Tower03 "Heavy Machinegun Guard Tower" +R-Defense-Tower04 "Flamer Guard Tower" +R-Defense-Tower05 "Lancer Guard Tower" +R-Defense-Tower06 "Mini-Pod Rocket Guard Tower" + +R-Defense-GuardTower-ATMiss "Scourge Missile Tower" +R-Defense-GuardTower-Rail1 "Needle Gun Tower" + +R-Defense-WallTower01 "Heavy Machinegun Hardpoint" +R-Defense-WallTower02 "Light Cannon Hardpoint" +R-Defense-WallTower03 "Medium Cannon Hardpoint" +R-Defense-WallTower04 "Heavy Cannon Hardpoint" +R-Defense-WallTower05 "Flamer Hardpoint" +R-Defense-WallTower06 "Lancer Hardpoint" +R-Defense-Wall-RotMg "Assault Gun Hardpoint" +R-Defense-Wall-VulcanCan "Assault Cannon Hardpoint" +R-Defense-WallTower-A-Tmiss "Scourge Missile Hardpoint" +R-Defense-WallTower-HvyFlamer "Inferno Hardpoint" +R-Defense-WallTower-HvyA-Trocket "Tank Killer Hardpoint" +R-Defense-WallTower-HPVcannon "HPV Cannon Hardpoint" +R-Defense-WallTower-PulseLas "Flashlight Hardpoint" +R-Defense-WallTower-Rail2 "Rail Gun Hardpoint" +R-Defense-WallTower-Rail3 "Gauss Cannon Hardpoint" + +R-Struc-CommandRelay "Command Relay Post" + +R-Struc-Factory-Cyborg "Cyborg Factory" +R-Struc-Factory-Cyborg-Upgrade01 "Automated Cyborg Production" +R-Struc-Factory-Cyborg-Upgrade02 "Automated Cyborg Production Mk2" +R-Struc-Factory-Cyborg-Upgrade03 "Automated Cyborg Production Mk3" +R-Struc-Factory-Cyborg-Upgrade04 "Robotic Cyborg Production" +R-Struc-Factory-Cyborg-Upgrade05 "Robotic Cyborg Production Mk2" +R-Struc-Factory-Cyborg-Upgrade06 "Robotic Cyborg Production Mk3" +R-Struc-Factory-Cyborg-Upgrade07 "Advanced Cyborg Production" +R-Struc-Factory-Cyborg-Upgrade08 "Advanced Cyborg Production Mk2" +R-Struc-Factory-Cyborg-Upgrade09 "Advanced Cyborg Production Mk3" +//R-Struc-Factory-Cyborg-Upgrade10 "Self-Replicating Cyborg Production" +R-Struc-Factory-Module "Factory Module" +R-Struc-Factory-Upgrade01 "Automated Factory Production" +R-Struc-Factory-Upgrade02 "Automated Factory Production Mk2" +R-Struc-Factory-Upgrade03 "Automated Factory Production Mk3" +R-Struc-Factory-Upgrade04 "Robotic Factory Production" +R-Struc-Factory-Upgrade05 "Robotic Factory Production Mk2" +R-Struc-Factory-Upgrade06 "Robotic Factory Production Mk3" +R-Struc-Factory-Upgrade07 "Advanced Factory Production" +R-Struc-Factory-Upgrade08 "Advanced Factory Production Mk2" +R-Struc-Factory-Upgrade09 "Advanced Factory Production Mk3" +//R-Struc-Factory-Upgrade10 "Self-Replicating Factory Production" + +R-Struc-Materials01 "Reinforced Base Structure Materials" +R-Struc-Materials02 "Reinforced Base Structure Materials Mk2" +R-Struc-Materials03 "Reinforced Base Structure Materials Mk3" +R-Struc-Materials04 "Hardened Base Structure Materials" +R-Struc-Materials05 "Hardened Base Structure Materials Mk2" +R-Struc-Materials06 "Hardened Base Structure Materials Mk3" +R-Struc-Materials07 "Advanced Base Structure Materials" +R-Struc-Materials08 "Advanced Base Structure Materials Mk2" +R-Struc-Materials09 "Advanced Base Structure Materials Mk3" +//R-Struc-Materials10 "High Density Base Structure Materials" + +R-Struc-PowerModuleMk1 "Power Module" +R-Struc-Power-Upgrade01 "Gas Turbine Generator" +R-Struc-Power-Upgrade02 "Vapor Turbine Generator" + +R-Struc-RepairFacility "Repair Facility" +R-Struc-RprFac-Upgrade01 "Automated Repair Facility" +R-Struc-RprFac-Upgrade02 "Automated Repair Facility Upgrade Mk2" +R-Struc-RprFac-Upgrade03 "Automated Repair Facility Upgrade Mk3" +R-Struc-RprFac-Upgrade04 "Robotic Repair Facility Upgrade" +R-Struc-RprFac-Upgrade05 "Robotic Repair Facility Upgrade Mk2" +R-Struc-RprFac-Upgrade06 "Robotic Repair Facility Upgrade Mk3" +R-Struc-RprFac-Upgrade07 "Advanced Repair Facility Upgrade" +R-Struc-RprFac-Upgrade08 "Advanced Repair Facility Upgrade Mk2" +R-Struc-RprFac-Upgrade09 "Advanced Repair Facility Upgrade Mk3" + +R-Struc-Research-Module "Research Module" +R-Struc-Research-Upgrade01 "Synaptic Link Data Analysis" +R-Struc-Research-Upgrade02 "Synaptic Link Data Analysis Mk2" +R-Struc-Research-Upgrade03 "Synaptic Link Data Analysis Mk3" +R-Struc-Research-Upgrade04 "Dedicated Synaptic Link Data Analysis" +R-Struc-Research-Upgrade05 "Dedicated Synaptic Link Data Analysis Mk2" +R-Struc-Research-Upgrade06 "Dedicated Synaptic Link Data Analysis Mk3" +R-Struc-Research-Upgrade07 "Neural Synapse Research Brain" +R-Struc-Research-Upgrade08 "Neural Synapse Research Brain Mk2" +R-Struc-Research-Upgrade09 "Neural Synapse Research Brain Mk3" + +R-Struc-VTOLPad "VTOL Rearming Pad" +R-Struc-VTOLPad-Upgrade01 "Automated VTOL Rearming" +R-Struc-VTOLPad-Upgrade02 "Automated VTOL Rearming Mk2" +R-Struc-VTOLPad-Upgrade03 "Automated VTOL Rearming Mk3" +R-Struc-VTOLPad-Upgrade04 "Robotic VTOL Rearming" +R-Struc-VTOLPad-Upgrade05 "Robotic VTOL Rearming Mk2" +R-Struc-VTOLPad-Upgrade06 "Robotic VTOL Rearming Mk3" +R-Struc-VTOLPad-Upgrade07 "Robotic VTOL Rearming Mk4" +R-Struc-VTOLFactory "VTOL Factory" +R-Struc-VTOLFactory-Upgrade01 "Robotic VTOL Production" +R-Struc-VTOLFactory-Upgrade02 "Robotic VTOL Production Mk2" +R-Struc-VTOLFactory-Upgrade03 "Robotic VTOL Production Mk3" +R-Struc-VTOLFactory-Upgrade04 "Advanced VTOL Production" +R-Struc-VTOLFactory-Upgrade05 "Advanced VTOL Production Mk2" +R-Struc-VTOLFactory-Upgrade06 "Advanced VTOL Production Mk3" + +R-Sys-Autorepair-Cyborg "Cyborg Self-Repair" +R-Sys-Autorepair-Cyborg-Upgrade01 "Automated Cyborg Repair Mk2" +R-Sys-Autorepair-Cyborg-Upgrade02 "Automated Cyborg Repair Mk3" + +R-Sys-Autorepair-Def "Defenses Self-Repair" +R-Sys-Autorepair-Def-Upgrade01 "Automated Defenses Repair Mk2" +R-Sys-Autorepair-Def-Upgrade02 "Automated Defenses Repair Mk3" + +R-Sys-Autorepair-Struc "Base Structure Self-Repair" +R-Sys-Autorepair-Struc-Upgrade01 "Automated Base Structure Repair Mk2" +R-Sys-Autorepair-Struc-Upgrade02 "Automated Base Structure Repair Mk3" + +R-Sys-Autorepair-Vehicle "Vehicle Self-Repair" +R-Sys-Autorepair-Vehicle-Upgrade01 "Automated Vehicle Repair Mk2" +R-Sys-Autorepair-Vehicle-Upgrade02 "Automated Vehicle Repair Mk3" + +R-Sys-Autorepair-General "Auto-Repair" + +R-Sys-Sensor-Upgrade01 "Sensor Upgrade" + +R-Sys-Spade1Mk1 "Construction Unit" + +R-Sys-Engineering01 "Engineering" +R-Sys-Engineering02 "Improved Engineering" +R-Sys-Engineering03 "Advanced Engineering" + +R-Sys-MobileRepairTurret01 "Mobile Repair Turret" +R-Sys-MobileRepairTurret02 "Heavy Mobile Repair Turret" +R-Sys-MobileRepairTurret-01 "Mobile Repair Upgrade" +R-Sys-MobileRepairTurret-02 "Mobile Repair Upgrade Mk2" + +R-Sys-Sensor-Turret01 "Sensor Turret" +R-Sys-Sensor-Tower01 "Sensor Tower" +R-Sys-Sensor-Tower02 "Hardened Sensor Tower" + +R-Sys-CBSensor-Turret01 "CB Turret" +R-Sys-CBSensor-Tower01 "CB Tower" +R-Sys-CBSensor-Upgrade01 "CB Sensor Upgrade" +R-Sys-CBSensor-Upgrade02 "CB Sensor Upgrade 2" +R-Sys-CBSensor-Upgrade03 "CB Sensor Upgrade 3" + +R-Sys-VTOLCBS-Turret01 "VTOL CB Turret" +//R-Sys-VTOL-RadarTower01 "VTOL Radar Tower" +R-Sys-VTOLCBS-Tower01 "VTOL CB Tower" +R-Sys-VTOLCBS-Upgrade01 "VTOL CB Upgrade" +R-Sys-VTOLCBS-Upgrade02 "VTOL CB Upgrade 2" +R-Sys-VTOLCBS-Upgrade03 "VTOL CB Upgrade 3" +R-Sys-VTOLStrike-Upgrade01 "VTOL Strike Upgrade" +R-Sys-VTOLStrike-Upgrade02 "VTOL Strike Upgrade Mk2" +R-Sys-VTOLStrike-Upgrade03 "VTOL Strike Upgrade Mk3" +R-Sys-VTOLStrike-Turret01 "VTOL Strike Turret" +R-Sys-VTOLStrike-Tower01 "VTOL Strike Tower" + +R-Sys-SpyTurret "Nexus Link Turret" +R-Sys-SpyTurret-Upgrade01 "Improved Scrambler" +R-Sys-SpyTurret-Upgrade02 "Scrambler Turret Mk2" + +R-Sys-Resistance "NEXUS Intruder Program" +R-Sys-Resistance-Upgrade01 "NEXUS Resistance Circuits" +R-Sys-Resistance-Upgrade02 "NEXUS Resistance Circuits Mk2" +R-Sys-Resistance-Upgrade03 "NEXUS Resistance Circuits Mk3" + +R-Sys-SensorLock "Sensor Lock" + + +/* RESEARCH - VEHICLES */ +R-Vehicle-Armor-Heat01 "Thermal Armor" +R-Vehicle-Armor-Heat02 "Thermal Armor Mk2" +R-Vehicle-Armor-Heat03 "Thermal Armor Mk3" +R-Vehicle-Armor-Heat04 "High Intensity Thermal Armor" +R-Vehicle-Armor-Heat05 "High Intensity Thermal Armor Mk2" +R-Vehicle-Armor-Heat06 "High Intensity Thermal Armor Mk3" + +R-Vehicle-Body01 "Light Body - Viper" +R-Vehicle-Body02 "Light Body - Leopard" +R-Vehicle-Body03 "Light Body - Retaliation" +R-Vehicle-Body04 "Light Body - Bug" +R-Vehicle-Body05 "Medium Body - Cobra" +R-Vehicle-Body06 "Medium Body - Panther" +R-Vehicle-Body07 "Medium Body - Retribution" +R-Vehicle-Body08 "Medium Body - Scorpion" +R-Vehicle-Body09 "Heavy Body - Tiger" +R-Vehicle-Body10 "Heavy Body - Vengeance" +R-Vehicle-Body11 "Heavy Body - Python" +R-Vehicle-Body12 "Heavy Body - Mantis" + +R-Vehicle-Engine01 "Fuel Injection Engine" +R-Vehicle-Engine02 "Fuel Injection Engine Mk2" +R-Vehicle-Engine03 "Fuel Injection Engine Mk3" +R-Vehicle-Engine04 "Turbo-Charged Engine" +R-Vehicle-Engine05 "Turbo-Charged Engine Mk2" +R-Vehicle-Engine06 "Turbo-Charged Engine Mk3" +R-Vehicle-Engine07 "Gas Turbine Engine" +R-Vehicle-Engine08 "Gas Turbine Engine Mk2" +R-Vehicle-Engine09 "Gas Turbine Engine Mk3" +//R-Vehicle-Engine10 "Ionizing Turbine Engine" + +R-Vehicle-Metals01 "Composite Alloys" +R-Vehicle-Metals02 "Composite Alloys Mk2" +R-Vehicle-Metals03 "Composite Alloys Mk3" +R-Vehicle-Metals04 "Dense Composite Alloys" +R-Vehicle-Metals05 "Dense Composite Alloys Mk2" +R-Vehicle-Metals06 "Dense Composite Alloys Mk3" +R-Vehicle-Metals07 "Superdense Composite Alloys" +R-Vehicle-Metals08 "Superdense Composite Alloys Mk2" +R-Vehicle-Metals09 "Superdense Composite Alloys Mk3" +//R-Vehicle-Metals10 "Bonded Laminates" + +R-Vehicle-Prop-Hover "Hover Propulsion" +R-Vehicle-Prop-Hover02 "Hover Propulsion II" +//R-Vehicle-Prop-Hover03 "Hover Propulsion III" +R-Vehicle-Prop-Halftracks "Half-tracked Propulsion" +R-Vehicle-Prop-Halftracks02 "Half-tracked Propulsion II" +//R-Vehicle-Prop-Halftracks03 "Half-tracked Propulsion III" +R-Vehicle-Prop-Tracks "Tracked Propulsion" +R-Vehicle-Prop-Tracks02 "Tracked Propulsion II" +//R-Vehicle-Prop-Tracks03 "Tracked Propulsion III" +R-Vehicle-Prop-VTOL "VTOL Propulsion" +R-Vehicle-Prop-VTOL02 "VTOL Propulsion II" +//R-Vehicle-Prop-VTOL03 "VTOL Propulsion III" +R-Vehicle-Prop-Wheels "Wheeled Propulsion" +R-Vehicle-Prop-Wheels02 "Wheeled Propulsion II" +//R-Vehicle-Prop-Wheels03 "Wheeled Propulsion III" + +R-Wpn-AAGun01 "Tornado Flak Turret" +R-Wpn-AAGun02 "Cyclone Flak Turret" +R-Wpn-AAGun03 "Hurricane AA Turret" +R-Wpn-AAGun04 "Whirlwind AATurret" +R-Wpn-AAGun-Accuracy01 "AA Thermal Imaging Sensor" +R-Wpn-AAGun-Accuracy02 "AA Target Acquisition Shells" +R-Wpn-AAGun-Accuracy03 "AA Target Prediction Computer" +R-Wpn-AAGun-Damage01 "AA HE Flak" +R-Wpn-AAGun-Damage02 "AA HE Flak Mk2" +R-Wpn-AAGun-Damage03 "AA HE Flak Mk3" +R-Wpn-AAGun-Damage04 "AA HEAP Flak" +R-Wpn-AAGun-Damage05 "AA HEAP Flak Mk2" +R-Wpn-AAGun-Damage06 "AA HEAP Flak Mk3" +R-Wpn-AAGun-ROF01 "AA Ammunition Hopper" +R-Wpn-AAGun-ROF02 "AA Ammunition Hopper Mk2" +R-Wpn-AAGun-ROF03 "AA Ammunition Hopper Mk3" +R-Wpn-AAGun-ROF04 "AA Chainfeed Loader" +R-Wpn-AAGun-ROF05 "AA Chainfeed Loader Mk2" +R-Wpn-AAGun-ROF06 "AA Chainfeed Loader Mk3" + +//R-Wpn-Pbomb "Proximity Bomb Turret" +//R-Wpn-SPBomb "Proximity Superbomb Turret" + +R-Wpn-Bomb01 "Cluster Bombs Bay" +R-Wpn-Bomb02 "HEAP Bomb Bay" +R-Wpn-Bomb03 "Phosphor Bomb Bay" +R-Wpn-Bomb04 "Thermite Bomb Bay" + +R-Wpn-Bomb-Accuracy01 "Thermal Imaging Bombsight" +R-Wpn-Bomb-Accuracy02 "Laser Guided Bombsight" +R-Wpn-Bomb-Accuracy03 "Target Acquisition Bombsight" + +R-Wpn-Cannon-Accuracy01 "Cannon Laser Rangefinder" +R-Wpn-Cannon-Accuracy02 "Cannon Laser Designator" +R-Wpn-Cannon-Damage01 "HEAT Cannon Shells" +R-Wpn-Cannon-Damage02 "HEAT Cannon Shells Mk2" +R-Wpn-Cannon-Damage03 "HEAT Cannon Shells Mk3" +R-Wpn-Cannon-Damage04 "APFSDS Cannon Rounds" +R-Wpn-Cannon-Damage05 "APFSDS Cannon Rounds Mk2" +R-Wpn-Cannon-Damage06 "APFSDS Cannon Rounds Mk3" +R-Wpn-Cannon-Damage07 "HVAPFSDS Cannon Rounds" +R-Wpn-Cannon-Damage08 "HVAPFSDS Cannon Rounds Mk2" +R-Wpn-Cannon-Damage09 "HVAPFSDS Cannon Rounds Mk3" + +//R-Wpn-Cannon-Damage10 "*ARGH*" + +R-Wpn-Cannon-ROF01 "Cannon Autoloader" +R-Wpn-Cannon-ROF02 "Cannon Autoloader Mk2" +R-Wpn-Cannon-ROF03 "Cannon Autoloader Mk3" +R-Wpn-Cannon-ROF04 "Cannon Rapid Loader" +R-Wpn-Cannon-ROF05 "Cannon Rapid Loader Mk2" +R-Wpn-Cannon-ROF06 "Cannon Rapid Loader Mk3" + +R-Wpn-Cannon1Mk1 "Light Cannon" +R-Wpn-Cannon2Mk1 "Medium Cannon" +R-Wpn-Cannon3Mk1 "Heavy Cannon" +R-Wpn-Cannon4AMk1 "Hyper Velocity Cannon" +R-Wpn-Cannon5 "Assault Cannon" + +R-Wpn-Energy-Accuracy01 "Improved Laser Focusing" +R-Wpn-Energy-Accuracy02 "Improved Laser Focusing Mk2" +R-Wpn-Energy-Accuracy03 "Improved Laser Focusing Mk3" +R-Wpn-Energy-Damage01 "Hi-Energy Laser Emitter" +R-Wpn-Energy-Damage02 "Hi-Energy Laser Emitter Mk2" +R-Wpn-Energy-Damage03 "Hi-Energy Laser Emitter Mk3" +R-Wpn-Energy-ROF01 "Thermopole Energizer" +R-Wpn-Energy-ROF02 "Thermopole Energizer Mk2" +R-Wpn-Energy-ROF03 "Thermopole Energizer Mk3" + +R-Wpn-Flamer-Damage01 "High Temperature Flamer Gel" +R-Wpn-Flamer-Damage02 "High Temperature Flamer Gel Mk2" +R-Wpn-Flamer-Damage03 "High Temperature Flamer Gel Mk3" +R-Wpn-Flamer-Damage04 "Superhot Flamer Gel" +R-Wpn-Flamer-Damage05 "Superhot Flamer Gel Mk2" +R-Wpn-Flamer-Damage06 "Superhot Flamer Gel Mk3" +R-Wpn-Flamer-ROF01 "Flamer Autoloader" +R-Wpn-Flamer-ROF02 "Flamer Autoloader Mk2" +R-Wpn-Flamer-ROF03 "Flamer Autoloader Mk3" +R-Wpn-Flamer01Mk1 "Flamer" +R-Wpn-Flame2 "Heavy Flamer - Inferno" + +R-Wpn-HowitzerMk1 "Howitzer" +R-Wpn-HvyHowitzer "Heavy Howitzer - Ground Shaker" +R-Wpn-Howitzer03-Rot "Rotary Howitzer - Hellstorm" +//R-Wpn-Howitzer04-Inc "Incendiary Howitzer - Hellfire" + +R-Wpn-Howitzer-Accuracy01 "Target Acquisition Artillery Shells" +R-Wpn-Howitzer-Accuracy02 "Target Acquisition Artillery Shells Mk2" +R-Wpn-Howitzer-Accuracy03 "Target Prediction Artillery Shells" + +R-Wpn-Howitzer-Damage01 "HE Howitzer Shells" +R-Wpn-Howitzer-Damage02 "HE Howitzer Shells Mk2" +R-Wpn-Howitzer-Damage03 "HE Howitzer Shells Mk3" +R-Wpn-Howitzer-Damage04 "HEAP Howitzer Shells" +R-Wpn-Howitzer-Damage05 "HEAP Howitzer Shells Mk2" +R-Wpn-Howitzer-Damage06 "HEAP Howitzer Shells Mk3" + +R-Wpn-Howitzer-ROF01 "Howitzer Autoloader" +R-Wpn-Howitzer-ROF02 "Howitzer Autoloader Mk2" +R-Wpn-Howitzer-ROF03 "Howitzer Autoloader Mk3" +R-Wpn-Howitzer-ROF04 "Fast Loader" + +R-Wpn-Laser01 "Laser - Flashlight" +R-Wpn-Laser02 "Pulse Laser" + +R-Wpn-MG-Damage01 "Hardened MG Bullets" +R-Wpn-MG-Damage02 "APDSB MG Bullets" +R-Wpn-MG-Damage03 "APDSB MG Bullets Mk2" +R-Wpn-MG-Damage04 "APDSB MG Bullets Mk3" +R-Wpn-MG-Damage05 "Tungsten-Tipped MG Bullets" +R-Wpn-MG-Damage06 "Tungsten-Tipped MG Bullets Mk2" +R-Wpn-MG-Damage07 "Tungsten-Tipped MG Bullets Mk3" +R-Wpn-MG-Damage08 "Depleted Uranium MG Bullets" +R-Wpn-MG-Damage09 "Depleted Uranium MG Bullets Mk2" +//R-Wpn-MG-Damage10 "C-60 MG Bullets Mk3" +R-Wpn-MG-Damage11 "R-Wpn-MG-Damage11" + +R-Wpn-MG-ROF01 "Chaingun Upgrade" +R-Wpn-MG-ROF02 "Rapid Fire Chaingun" +R-Wpn-MG-ROF03 "Hyper Fire Chaingun Upgrade" +R-Wpn-MG1Mk1 "Machinegun" +R-Wpn-MG2Mk1 "Twin Machinegun" +R-Wpn-MG3Mk1 "Heavy Machinegun" +R-Wpn-MG4 "Assault Gun" + +R-Wpn-Missile-Accuracy01 "Target Prediction Missiles" +R-Wpn-Missile-Accuracy02 "Search & Destroy Missiles" +R-Wpn-Missile-Damage01 "Advanced Missile Warhead" +R-Wpn-Missile-Damage02 "Advanced Missile Warhead Mk2" +R-Wpn-Missile-Damage03 "Advanced Missile Warhead Mk3" +R-Wpn-Missile-ROF01 "Advanced Missile Allocation System" +R-Wpn-Missile-ROF02 "Advanced Missile Allocation System Mk2" +R-Wpn-Missile-ROF03 "Advanced Missile Allocation System Mk3" +R-Wpn-MissileSlow-Damage01 "HEAP Missile Warhead" +R-Wpn-MissileSlow-Damage02 "HEAP Missile Warhead Mk2" +R-Wpn-MissileSlow-Damage03 "HEAP Missile Warhead Mk3" +R-Wpn-MissileSlow-ROF01 "Improved Missile Loading System" + +//R-Wpn-Missile-ASM-AT "*Missile-ASM-AT*" +//R-Wpn-Misisile-ASM-BB "Devastator Missile" +R-Wpn-Missile-LtSAM "Avenger SAM" +R-Wpn-Missile-HvSAM "Vindicator SAM" +R-Wpn-Missile2A-T "Scourge Missile" +R-Wpn-MdArtMissile "Angel Missile" +R-Wpn-HvArtMissile "Archangel Missile" +//R-Wpn-Missile-SAM "*R-Wpn-Missile-SAM*" + +R-Wpn-Mortar-Acc01 "Mortar Targeting Computer" +R-Wpn-Mortar-Acc02 "Thermal Imaging Mortar Shells" +R-Wpn-Mortar-Acc03 "Target Acquisition Mortar Shells" +R-Wpn-Mortar-Damage01 "HE Mortar Shells" +R-Wpn-Mortar-Damage02 "HE Mortar Shells Mk2" +R-Wpn-Mortar-Damage03 "HE Mortar Shells Mk3" +R-Wpn-Mortar-Damage04 "HEAP Mortar Shells" +R-Wpn-Mortar-Damage05 "HEAP Mortar Shells Mk2" +R-Wpn-Mortar-Damage06 "HEAP Mortar Shells Mk3" +R-Wpn-Mortar-ROF01 "Mortar Autoloader" +R-Wpn-Mortar-ROF02 "Mortar Autoloader Mk2" +R-Wpn-Mortar-ROF03 "Mortar Autoloader Mk3" +R-Wpn-Mortar-ROF04 "Mortar Fast Loader" +R-Wpn-Mortar01Lt "Mortar" +R-Wpn-Mortar02Hvy "Heavy Mortar - Bombard" +R-Wpn-Mortar3 "Rotary Mortar - Pepperpot" + +R-Wpn-RailGun01 "Needle Gun" +R-Wpn-RailGun02 "Rail Gun" +R-Wpn-RailGun03 "Gauss Cannon" +R-Wpn-Rail-Accuracy01 "Target Prediction Computer" +R-Wpn-Rail-Damage01 "Hardened Rail Dart" +R-Wpn-Rail-Damage02 "Hardened Rail Dart Mk2" +R-Wpn-Rail-Damage03 "Hardened Rail Dart Mk3" +R-Wpn-Rail-ROF01 "Rail Gun ROF" +R-Wpn-Rail-ROF02 "Rail Gun ROF Mk2" +R-Wpn-Rail-ROF03 "Rail Gun ROF Mk3" + +R-Wpn-Rocket-Accuracy01 "Stabilized Mini-Rockets" +R-Wpn-Rocket-Accuracy02 "Stabilized Mini-Rockets Mk2" +R-Wpn-Rocket-Damage01 "HE Mini-Rockets" +R-Wpn-Rocket-Damage02 "HE Mini-Rockets Mk2" +R-Wpn-Rocket-Damage03 "HE Mini-Rockets Mk3" +R-Wpn-Rocket-Damage04 "HEAP Mini-Rockets" +R-Wpn-Rocket-Damage05 "HEAP Mini-Rockets Mk2" +R-Wpn-Rocket-Damage06 "HEAP Mini-Rockets Mk3" +R-Wpn-Rocket-ROF01 "Fast Fire Mini-Rockets" +R-Wpn-Rocket-ROF02 "Fast Fire Mini-Rockets Mk2" +R-Wpn-Rocket-ROF03 "Fast Fire Mini-Rockets Mk3" +R-Wpn-Rocket-ROF04 "Rapid Fire Mini-Rockets" +R-Wpn-Rocket-ROF05 "Rapid Fire Mini-Rockets Mk2" +R-Wpn-Rocket-ROF06 "Rapid Fire Mini-Rockets Mk3" +R-Wpn-RocketSlow-Accuracy01 "Improved Rocket Wire Guidance" +R-Wpn-RocketSlow-Accuracy02 "Rocket Laser Designator" +R-Wpn-RocketSlow-Accuracy03 "Thermal Imaging Rockets" +R-Wpn-RocketSlow-Damage01 "HEAT Rocket Warhead" +R-Wpn-RocketSlow-Damage02 "HEAT Rocket Warhead Mk2" +R-Wpn-RocketSlow-Damage03 "HEAT Rocket Warhead Mk3" +R-Wpn-RocketSlow-Damage04 "HESH Rocket Warhead" +R-Wpn-RocketSlow-Damage05 "HESH Rocket Warhead Mk2" +R-Wpn-RocketSlow-Damage06 "HESH Rocket Warhead Mk3" +R-Wpn-RocketSlow-ROF01 "Rocket Autoloader" +R-Wpn-RocketSlow-ROF02 "Rocket Autoloader Mk2" +R-Wpn-RocketSlow-ROF03 "Rocket Autoloader Mk3" + +R-Wpn-Rocket01-LtAT "Lancer AT Rocket" +R-Wpn-Rocket02-MRL "Mini-Rocket Artillery" +R-Wpn-Rocket03-HvAT "Bunker Buster Rocket" +R-Wpn-Rocket05-MiniPod "Mini-Pod Rockets" +R-Wpn-Rocket06-IDF "Ripple Rockets" +R-Wpn-Rocket07-Tank-Killer "Tank Killer Rocket" + +R-Wpn-TUTMG "Machine Gun Artifact" + +/* ENEMY STRUCTURES */ +A0CommandCentreNP "New Paradigm Command Center" +A0CommandCentreCO "Collective Command Center" +A0CommandCentreNE "*CommandCenterNE*" +UplinkCentre "*UplinkCentre*" +NuclearReactor "*NuclearReactor*" +CoolingTower "*CoolingTower*" +GunsOfNav2 "*GunsOfNavaroneTwo*" +GunsOfNav1 "*GunsOfNavaroneOne*" +Sys-NEXUSLinkTOW "*Sys-NEXUSLinkTOW*" + +/* BARBARIAN STRUCTURES */ +A0BaBaFactory "Scavenger Factory" +A0BaBaGunTower "Scavenger Gun Tower" +A0BaBaHorizontalWall "Scavenger Horizontal Wall" +A0BaBaPowerGenerator "Scavenger Power Generator" +A0BaBaRocketPit "Scavenger Rocket Pit" +A0BaBaRocketPitAT "Scavenger AT-Rocket Pit" +A0BaBaBunker "Scavenger Bunker" +A0BabaCornerWall "Scavenger CornerWall" +A0BaBaFlameTower "Scavenger Flame Tower" +A0BaBaFlameTowerEnd "Scavenger Flame Tower End" +LookOutTower "Look-Out Tower" +A0CannonTower "Cannon Tower" +A0BaBaGunTowerEND "*Scavenger End Tower*" +Barrier "*Barrier*" +A0BaBaMortarPit "*BaBaMortarPit*" +Emplacement-MortarPit01 " Mortar Pit" +// MissileBunker "Missile Bunker" +A0BaBaFlameTow "*A0BaBaFlameTow*" + +/* BARBARIAN WEAPONS*/ +ZNULLWEAPON "*Z NULL Weapon*" +BaBaCannon "*BaBa Cannon*" +BaBaMG "*BaBa MG*" +BabaFlame "*Flamer*" +BJeepMG "*Jeep MG*" +BTowerMG "*Tower MG*" +bTrikeMG "*Trike MG*" +BuggyMG "*Buggy MG*" +BabaRocket "*BabaRocket*" +BusCannon "*BusCannon*" +BabaPitRocket "*Baba Rocket Pit Launcher*" +BabaPitRocketAT "*AT Rocket Pit" + +/* FEATURES */ +Crate "Artifact" +OilResource "Oil Resource" +Boulder1 "*Boulder 1*" +Boulder2 "*Boulder 2*" +Boulder3 "*Boulder 3*" +Chevy "*Chevy*" +BlueCar "*Blue Car*" +Pickup "*Pickup*" +Crane "*Crane*" +WaterTower "*Water Tower*" +OilTower "*Oil Tower*" +building1 "*Building 1*" +building2 "*Building 2*" +building3 "*Building 3*" +building4 "*Building 4*" +building5 "*Building 5*" +building6 "*Building 6*" +building7 "*Building 7*" +building8 "*Building 8*" +building10 "*Building 10*" +building11 "*Building 11*" +building12 "*Building 12*" +Ruin5 "*Ruin5*" +Ruin4 "*Ruin4*" +Ruin3 "*Ruin3*" +Ruin1 "*Ruin1*" +miruin2 "*miruin*2" +bridge "Bridge" +bridge1 "*Bridge 1*" +bridge5 "*Bridge 5*" +BarbTechRuin "Ruined Factory" +BarbWarehouse1 "Warehouse" +BarbHUT "Hut" +BarbWarehouse2 "*Warehouse2*" +BarbWarehouse3 "*Warehouse3*" +Pipe "*Pipe*" +Pipe1 "*Pipe1*" +WaterBuilding "*Water Building*" +WaterBuilding2 "*Water Building2*" +WaterBuilding3 "*Water Building3*" +OilDrum "Oil Drum" +//OilPipe1 "*Oil Pipe 1*" +//OilPipe2 "*Oil Pipe 2*" +//OilPipe3 "*Oil Pipe 3*" +Pylon "*Pylon*" +Tree1 "*Tree1*" +Tree2 "*Tree2*" +Tree3 "*Tree3*" +TreeSnow1 "*Snowy Tree1*" +TreeSnow2 "*Snowy Tree2*" +TreeSnow3 "*Snowy Tree3*" +LogCabin1 "*LogCabin1*" +LogCabin2 "*LogCabin2*" +LogCabin3 "*LogCabin3*" +LogCabin4 "*LogCabin4*" +LogCabin5 "*LogCabin5*" +OldFactory "*OldFactory*" +AirTrafficControl "*AirTrafficControl*" +WreckedDroidHub "Wreck" +//WreckedHovercraft "Wrecked Hovercraft" +WreckedTank "Wrecked Tank" +//WreckedBuilding1 "*Wrecked Building 1*" +//Wreckedbuilding2 "*Wrecked Building 2*" +//WreckedBuilding3 "*Wrecked Building 3*" +//WreckedBuilding4 "*Wrecked Building 4*" +//WreckedBuilding "*Wrecked Building 5*" +WreckedBuilding6 "*Wrecked Building 6*" +WreckedBuilding7 "*Wrecked Building 7*" +WreckedBuilding8 "*Wrecked Building 8*" +WreckedBuilding9 "*Wrecked Building 9*" +WreckedBuilding10 "*Wrecked Building 10*" +WreckedBuilding11 "*Wrecked Building 11*" +WreckedBuilding12 "*Wrecked Building 12*" +WreckedBuilding13 "*Wrecked Building 13*" +WreckedBuilding14 "*Wrecked Building 14*" +WreckedBuilding15 "*Wrecked Building 15*" +WreckedBuilding16 "*Wrecked Building 16*" +WreckedBuilding17 "*Wrecked Building 17*" +WreckedBridge "Wrecked Bridge" +WreckedVertCampVan "Wrecked Van" +WreckedSuzukiJeep "Wrecked Vehicle" +WreckedTankerV "Wrecked Tanker" +//WreckedTankerH "Wrecked Tanker" + +/* LABS */ +Z-Lab01 "Cyborg Laboratory" +Z-Lab02 "Advanced Warfare Laboratory" +Z-Lab03 "Engineering Laboratory" +Z-Lab04 "Robotics Laboratory" +Z-Lab05 "Laser Optics Laboratory" +Z-Lab06 "Electronics Laboratory" +Z-Lab07 "Chemical Laboratory" +Z-Lab08 "*Advanced Materials Lab*" +Z-Lab09 "*VTOL Lab*" +Z-Lab10 "*Electro-Magnetics Lab*" +Z-Lab11 "*Nanotech Lab*" +Z-Lab12 "*High Energy Lab*" + +/* LABS RESEARCH */ +R-Lab-AdvWarfare "Advanced Warfare" +R-Lab-Chemical "Chemical Laboratory" +R-Lab-Cyborg "Cyborg Laboratory" +R-Lab-Electronics "Electronics Laboratory" +R-Lab-Engineering "Engineering Laboratory" +R-Lab-Robotics "Robotics Laboratory" + +// *New Names...... Keith + +P0PythonHvyCnTrks "Python Heavy Cannon Tracks" +P0CobraSpadeTracks "Cobra Truck" +P0CobraFlameTracks "Cobra Flamer Tracks" +P0CobraMedCnTrks "Cobra Medium Cannon Tracks" + +//CyborgChain01GroundP0 "Gunner" +//CyborgRkt01GroundP0 "Lancer" +//CyborgCannon01GrdP0 "Heavy Gunner" +//CyborgFlamer01GrdP0 "Flamer" + +// Cyborgs used in PSX scripts - copied to Player2 and renamed P2 + +//CyborgFlamer01GrdP2 "*CyborgFlamer01GrdP2*" +//CyborgCannon01GrdP2 "*CyborgCannon01GrdP2*" +//CyborgRkt01GroundP2 "*CyborgRkt01GroundP2*" +//CyborgChain01GroundP2 "*CyborgChain01GroundP2*" + +// added in by Keith + +R-Defense-PrisLas "Flashlight Emplacement" +P0-AASite-SAM1 "Avenger SAM Site" +P0-AASite-SAM2 "Vindicator SAM Site" +Howitzer04-Inc-pit "*Howitzer04-Inc-pit*" +//P0-Emp-IncHow-Pit "Hellfire Emplacement" +Rocket-MRL-pit "*Rocket-MRL-pit*" +Emplacement-MRL-pit "MRL Emplacement" +GuardTower-RotMg "Assault Gun Guard Tower" + +Emplacement-HvyATrocket "Tank Killer Emplacement" +//Rocket-HvyA-T-pit "*Tank Killer-pit*" +Emplacement-HPVcannon "HPV Cannon Emplacement" +Emplacement-PulseLaser "Pulse Laser Emplacement" +Emplacement-Rail2 "Railgun Emplacement" +Emplacement-MdART-pit "Angel Missile Emplacement" +Missile-MdArt-pit "*Angle Missile-pit*" +Emplacement-HvART-pit "Archangel Missile Emplacement" +Missile-HvyArt-pit "*Missile-HvyArt-pit*" +WallTower-HvATrocket "Tank Killer Hardpoint" +WallTower-HPVcannon "HPV Cannon Hardpoint" +WallTower-Atmiss "Scourge Missile Hardpoint" +WallTower-Rail3 "Gauss Cannon Hardpoint" + +// added by Pete +//R-Cyborg-Wpn-Missile "Revenger" + +//ResMod-Cyb-MG-GRD "*ResMod-Cyb-MG-GRD*" + +//NEW VEHICLES +CO-M-HvFlame-Track "*CO-M-HvFlame-Track*" +CO-M-RR-HT "*CO-M-RR-HT*" +CO-H-Rkt-BB-T "*CO-H-Rkt-BB-T*" +CO-M-HMG-T "*CO-M-HMG-T*" +CO-H-COM-H "*CO-H-COM-H*" +CO-M-LTAT-Hover "*CCO-M-LTAT-Hover*" +CO-M-HVAT-Hover "*CCO-M-HVAT-Hover*" +CO-M-HvMortar-T "*CO-M-HvMortar-T*" +CO-M-Repair-T "*CO-M-Repair-T*" +CO-M-Rocket-BB-T "*CO-M-Rocket-BB-T*" +CO-M-Rocket-LtA-T-T "*CO-M-Rocket-LtA-T-T*" +CO-M-RotMortar-T "*CO-M-RotMortar-T*" +CO-M-Sensor-T "*CO-M-Sensor-T*" +CO-M-Vstrike-T "*CO-M-Vstrike-T*" +CO-M-VTOLCBS-T "*CO-M-VTOLCBS-T*" +CO-M-Con-T "*CO-M-Con-T*" +CO-M-CBS-T "*CO-M-CBS-T*" +CO-M-ROTMG-T "*CO-M-ROTMG-T*" +CO-M-HVAT-V "*CO-M-HVAT-V*" +CO-L-Bomb1-VTOL "*CO-L-Bomb1-VTOL*" + +CO-H-QuadRotAA-T "*CO-H-QuadRotAA-T*" +CO-H-QuadBofAA-T "*CO-H-QuadBofAA-T*" + +Rocket-IDF-Emp "*Rocket-IDF-Emp*" + + +// Additional templates for Player 0 entering start of cam2 + +P0CobraLtATRktHtrack "Lancer Cobra Half-tracks" +P0CobraHvyMGHtrack "HMG Cobra Half-tracks" +P0PythonComTracks "Commander Python Tracks" +P0CobraRepairTrks "Repair Cobra Tracks" + +// New Cyborg Bodies +Cyb-Bod-Atmiss "*Cyb-Bod-Atmiss*" +Cyb-Bod-BB-Rkt "*Cyb-Bod-BB-Rkt*" +Cyb-Bod-Las1 "*Cyb-Bod-Las1*" +Cyb-Bod-Rail1 "*Cyb-Bod-Rail1*" + +Cyb-Wpn-Atmiss "*Cyb-Wpn-Atmiss*" +Cyb-Wpn-BB-Rkt "*Cyb-Wpn-BB-Rkt*" +Cyb-Wpn-Laser "*Cyb-Wpn-Laser*" +Cyb-Wpn-Rail1 "*Cyb-Wpn-Rail1*" + +Cyb-Atmiss-GROUND "Scourge" +Cyb-BB-Rkt-GROUND "Bunker Blaster" +Cyb-Laser1-GROUND "Flashlight Gunner" +Cyb-Rail1-GROUND "Needle Gunner" +WreckedTransporter "Downed Transport" + +// Multiplayer VTOLs +P6-L-LTAT-V "*Skirmish ATVTOL*" +P6-L-Bomb1-V "*Skirmish BOMBVTOL*" +P6-M-QMG1-HT "*P6-M-QMG1-HT*" + +// New Style Repair Center - replaces all instances of A0RepairCentre +A0RepairCentre2 "Repair Center" +A0RepairCentre3 "Repair Facility" +RepairCentre "*RepairCenter*" + +Emplacement-MortarPit02 "Bombard Pit" +Emplacement-Howitzer150 "Ground Shaker Emplacement" + + +// CAM3 Start - Available Units +P0cam3CobCONTrk "Truck" +P0cam3PyHvyATTrk "Tank Killer Python Tracks" +P0cam3PyHPVcanTrk "HPV Cannon Python Tracks" +P0cam3PyFlakHT "Cyclone AA Python Half-tracks" +P0cam3PyAsltGnTrk "Assault Gun Python Tracks" + +R-Sys-NEXUSrepair "*R-Sys-NEXUSrepair*" +NEXUSrepair "*NEXUSrepair*" + +// name change - moved to bottom of Names.TXT by Keith 9/2/99 +Laser3BEAMMk1 "Flashlight" +Laser3BEAM-VTOL "VTOL Flashlight" + +MG4ROTARY-Pillbox "*MG4ROTARY-Pillbox*" +Pillbox-RotMG "Rotary MG Bunker" +R-Defense-Pillbox-RotMG "Rotary MG Bunker" + +NX-M-Bomb4-VTOL "*NX-M-Bomb4-VTOL*" + +// Added Cruise Missile Launcher Struc (CAM3-1) and ANTI-SAT Launcher (CAM3-4) +NX-ANTI-SATSite "Missile Silo" +NX-CruiseSite "Missile Silo" + +NEXUSlink "*NEXUSlink*" + +// Added 21st Feb 99 - New NEXUS Versions of Sensor Towers, etc. + +Sys-NX-SensorTower "*Sys-NX-SensorTower*" +Sys-NX-CBTower "*Sys-NX-CBTower*" +Sys-NX-VTOL-CB-Tow "*Sys-NX-VTOL-CB-Tow*" +Sys-NX-VTOL-RadTow "*Sys-NX-VTOL-RadTow*" +NX-M-HvSam-Hover "*NX-M-HvSam-Hover*" +NX-L-Link-Hov "*NX-L-Link-Hov*" +NX-M-Bomb2-VTOL "*NX-M-Bomb2-VTOL*" + +// Latest Additions +NX-L-Flash-Hover "*NX-L-Flash-Hover*" + + +//New Skirmish Units +Sk-PythonHvCanTrack "Python Heavy Cannon Tracks" +Sk-CobraBBHover "Cobra Bunker Buster Hover" + +R-Sys-Sensor-Upgrade02 "Sensor Upgrade" +R-Struc-Power-Upgrade03 "Power Upgrade" +R-Struc-Power-Cam2 "R-Struc-Power-Cam2" +MP-Cyb-ATmiss-GRD "Scourge" +MP-Cyb-Laser1-GRD "Flashlight Gunner" + +R-Struc-Power-Upgrade01b "Power Upgrade" +R-Struc-Power-Upgrade01c "Power Upgrade" + +// Cam3NewTech starts here +R-Struc-Power-Upgrade03a "Power Upgrade" + +// New Skirmish Units May28th wdg + +SK-Bug-Hover-HMG "*SK-Bug-Hover-HMG*" +SK-Cobra-Hover-BB "*SK-Cobra-Hover-BB*" +SK-Cobra-Hover-HMG "*SK-Cobra-Hover-HMG*" +SK-Cobra-Hover-Lancer "*SK-Cobra-Hover-Lancer*" +SK-Cobra-Track-HVC "*SK-Cobra-Track-HVC*" +SK-Cobra-Track-TK "*SK-Cobra-Track-TK*" +SK-Leopard-Hover-Needle "*SK-Leopard-Hover-Needle*" +SK-Leopard-HTrk-ASGun "*SK-Leopard-HTrk-ASGun*" +SK-Leopard-Htrk-Needle "*SK-Leopard-Htrk-Needle*" +SK-Leopard-Track-Lancer "*SK-Leopard-Track-Lancer*" +SK-Mantis-Hover-Hcannon "*SK-Mantis-Hover-Hcannon*" +SK-Mantis-Hover-HVC "*SK-Mantis-Hover-HVC*" +SK-Panther-Hover-HVC "*SK-Panther-Hover-HVC*" +SK-Panther-Hover-TK "*SK-Panther-Hover-TK*" +SK-Panther-Htrk-ASGun "*SK-Panther-Htrk-ASGun*" +SK-Panther-Htrk-BB "*SK-Panther-Htrk-BB*" +SK-Panther-Track-HVC "*SK-Panther-Track-HVC*" +SK-Panther-Track-RailGun "*SK-Panther-Track-RailGun*" +SK-Panther-Track-TK "*SK-Panther-Track-TK*" +SK-Python-Hover-Hcannon "*SK-Python-Hover-Hcannon*" +SK-Python-Hover-Lancer "*SK-Python-Hover-Lancer*" +SK-Python-Hover-Mcannon "*SK-Python-Hover-Mcannon*" +SK-Python-Track-Hcannon "*SK-Python-Track-Hcannon*" +SK-Retal-Track-Needle "*SK-Retal-Track-Needle*" +SK-Retre-Hover-RailGun "*SK-Retre-Hover-RailGun*" +SK-Retre-Hover-Scourge "*SK-Retre-Hover-Scourge*" +SK-Retre-Htrk-Pepper "*SK-Retre-Htrk-Pepper*" +SK-Retre-Track-FlashLight "*SK-Retre-Track-FlashLight*" +SK-Retre-Track-PulseLsr "*SK-Retre-Track-PulseLsr*" +SK-Retre-Track-RailGun "*SK-Retre-Track-RailGun*" +SK-Retre-Track-Scourge "*SK-Retre-Track-Scourge*" +SK-Scorp-Hover-ASGUN "*SK-Scorp-Hover-ASGUN*" +SK-Scorp-Hover-BB "*SK-Scorp-Hover-BB*" +SK-Scorp-Hover-Bombard "*SK-Scorp-Hover-Bombard*" +SK-Scorp-Hover-Lancer "*SK-Scorp-Hover-Lancer*" +SK-Scorp-Hover-Mcannon "*SK-Scorp-Hover-Mcannon*" +SK-Tiger-Hover-ASCannon "*SK-Tiger-Hover-ASCannon*" +SK-Tiger-Hover-Gauss "*SK-Tiger-Hover-Gauss*" +SK-Tiger-Hover-Hcannon "*SK-Tiger-Hover-Hcannon*" +SK-Tiger-Hover-HVC "*SK-Tiger-Hover-HVC*" +SK-Tiger-Hover-Scourge "*SK-Tiger-Hover-Scourge*" +SK-Tiger-Hover-TK "*SK-Tiger-Hover-TK*" +SK-Tiger-Track-ASCannon "*SK-Tiger-Track-ASCannon*" +SK-Tiger-Track-Gauss "*SK-Tiger-Track-Gauss*" +SK-Tiger-Track-Hcannon "*SK-Tiger-Track-Hcannon*" +SK-Tiger-Track-HVC "*SK-Tiger-Track-HVC*" +SK-Tiger-Track-Scourge "*SK-Tiger-Track-Scourge*" +SK-Tiger-Track-TK "*SK-Tiger-Track-TK*" +SK-Veng-Hover-Gauss "*SK-Veng-Hover-Gauss*" +SK-Veng-Hover-PulseLsr "*SK-Veng-Hover-PulseLsr*" +SK-Veng-Hover-Scourge "*SK-Veng-Hover-Scourge*" +SK-Veng-Track-Gauss "*SK-Veng-Track-Gauss*" +SK-Veng-Track-PulseLsr "*SK-Veng-Track-PulseLsr*" +SK-Veng-Track-Scourge "*SK-Veng-Track-Scourge*" +SK-Bug-Hover-Sensor "*SK-Bug-Hover-Sensor*" +SK-Bug-Hover-Repair "*SK-Bug-Hover-Repair*" +SK-Leopard-Hover-Sensor "*SK-Leopard-Hover-Sensor*" +SK-Leopard-Hover-Repair "*SK-Leopard-Hover-Repair*" +SK-Panther-Track-Repair "*SK-Panther-Track-Repair*" +SK-Retal-Hover-Repair "*SK-Retal-Hover-Repair*" +SK-Retal-Hover-Sensor "*SK-Retal-Hover-Sensor*" +SK-Bug-VTOL-CLBomb "*SK-Bug-VTOL-CLBomb*" +SK-Bug-VTOL-BB "*SK-Bug-VTOL-BB*" +SK-Scorpion-VTOL-BB "*SK-Scorpion-VTOL-BB*" +SK-Scorpion-VTOL-Hbomb "*SK-Scorpion-VTOL-Hbomb*" +SK-Mantis-VTOL-BB "*SK-Mantis-VTOL-BB*" +SK-Leopard-VTOL-BB "*SK-Leopard-VTOL-BB*" +SK-Leopard-VTOL-PhosBomb "*SK-Leopard-VTOL-PhosBomb*" +SK-Panther-VTOL-Thermite "*SK-Panther-VTOL-Thermite*" +SK-Panther-VTOL-BB "*SK-Panther-VTOL-BB*" +SK-Panther-VTOL-Phosbomb "*SK-Panther-VTOL-Phosbomb*" +SK-Panther-VTOL-TK "*SK-Panther-VTOL-TK*" +SK-Retal-VTOL-Phosbomb "*SK-Retal-VTOL-Phosbomb*" +SK-Retre-VTOL-Thermite "*SK-Retre-VTOL-Thermite*" +SK-Retre-VTOL-PulseLsr "*SK-Retre-VTOL-PulseLsr*" +SK-Retre-VTOL-Scourge "*SK-Retre-VTOL-Scourge*" + +// added by keith 26th may 1999 for 005 patch +MP-Cyb-Needle-GRD "Needle Gunner" + +// New Cyborgs - Thermite and Grenadier +R-Cyborg-Wpn-Thermite "Thermite Flamer" +Cyb-Wpn-Thermite "*Cybrog Thermite Weapon*" +Cyb-Bod-Thermite "*Thermite Body*" +Cyb-Thermite "Thermite Flamer" + +R-Cyborg-Wpn-Grenade "Grenadier" +Cyb-Wpn-Grenade "*Cyborg Grenade Weapon*" +Cyb-Bod-Grenade "*Grenadier Body*" +Cyb-Gren "Grenadier" + +// New Cyborgs - added by Marc 8th June 1999 Combat Engineer & Mechanic + +R-Cyborg-Sys-ComEng "Combat Engineer" +CyborgSpade "*Combat Engineer*" +Cyb-Bod-ComEng "*Combat Engineer*" +Cyb-ComEng "Combat Engineer" + +R-Cyborg-Sys-Mechanic "Cyborg Mechanic" +CyborgRepair "*Cyborg Mechanic*" +Cyb-Bod-Mechanic "*Cyborg Mechanic*" +Cyb-Mechanic "Cyborg Mechanic" + +// added by Marc 9th June 1999 Incendiary Howitzer/Incenediary Mortar/Plasmite Flamer/Heavy Repair + +R-Wpn-Howitzer-Incenediary "Incenediary Howitzer" +Howitzer-Incenediary "Incenediary Howitzer" +R-Defense-Howitzer-Incenediary "Incenediary Howitzer Emplacement" +Emplacement-Howitzer-Incenediary "Incenediary Howitzer Emplacement" +R-Wpn-Plasmite-Flamer "Plasmite Flamer" +PlasmiteFlamer "Plasmite Flamer" +R-Defense-PlasmiteFlamer "Plasmite Flamer" +Plasmite-flamer-bunker "Plasmite Flamer" +R-Wpn-Mortar-Incenediary "Incenediary Mortar" +Mortar-Incenediary "Incenediary Mortar" +R-Defense-MortarPit-Incenediary "Incenediary Mortar" +Emplacement-MortarPit-Incenediary "Incenediary Mortar" +R-Sys-MobileRepairTurretHvy "Heavy Repair Turret" +HeavyRepair "Heavy Repair Turret" + +R-Cyborg-Armor-Heat07 "Cyborg Superdense Thermal Armor" +R-Cyborg-Armor-Heat08 "Cyborg Superdense Thermal Armor Mk2" +R-Cyborg-Armor-Heat09 "Cyborg Superdense Thermal Armor Mk3" + +R-Vehicle-Armor-Heat07 "Vehicle Superdense Thermal Armor" +R-Vehicle-Armor-Heat08 "Vehicle Superdense Thermal Armor Mk2" +R-Vehicle-Armor-Heat09 "Vehicle Superdense Thermal Armor Mk3" + +// added by Marc 15th June 1999 Tech 2 Super-Cyborgs and Heavy Laser + +R-Cyborg-Hvywpn-Mcannon "Super Heavy-Gunner" +Cyb-Hvy-Mcannon "Super Heavy-Gunner" +Cyb-Hvybod-Mcannon "Super Heavy-Gunner" +Cyb-Hvywpn-Mcannon "Super Heavy-Gunner" + +R-Cyborg-Hvywpn-Acannon "Super Auto-Cannon Cyborg" +Cyb-Hvy-Acannon "Super Auto-Cannon Cyborg" +Cyb-Hvybod-Acannon "Super Auto-Cannon Cyborg" +Cyb-Hvywpn-Acannon "Super Auto-Cannon Cyborg" + +R-Cyborg-Hvywpn-HPV "Super HPV Cyborg" +Cyb-Hvy-HPV "Super HPV Cyborg" +Cyb-Hvybod-HPV "Super HPV Cyborg" +Cyb-Hvywpn-HPV "Super HPV Cyborg" + +R-Cyborg-Hvywpn-TK "Super Tank-Killer Cyborg" +Cyb-Hvy-TK "Super Tank-Killer Cyborg" +Cyb-Hvybod-TK "Super Tank-Killer Cyborg" +Cyb-Hvywpn-TK "Super Tank-Killer Cyborg" + +R-Wpn-HvyLaser "Heavy Laser" +HeavyLaser "Heavy Laser" +HeavyLaser-VTOL "Heavy Laser" +Emplacement-HeavyLaser "Heavy Laser Emplacement" +R-Defense-HeavyLas "Heavy Laser Emplacement" + +// added by SEBG 17 June 1999 + +R-Sys-Resistance-Circuits "Resistance Circuits" + +Cannon6TwinAslt "Twin Assault Cannon" +R-Wpn-Cannon6TwinAslt "Twin Assault Cannon" +R-Defense-Cannon6 "Twin Assault Cannon Bunker" +PillBox-Cannon6 "Twin Assault Cannon Bunker" + +A0LasSatCommand "Laser Satellite Command Post" +A0Sat-linkCentre "Satellite Uplink Center" +Sensor-WideSpec "Wide Spectrum Sensor" +Sys-SensoTowerWS "Wide Spectrum Sensor Tower" +R-Sys-Sensor-WS "Wide Spectrum Sensor" +R-Sys-Sensor-WSTower "Wide Spectrum Sensor Tower" +R-Sys-Sensor-SatLink "Satellite Uplink Center" +R-Wpn-LasSat "Laser Satellite Command Post" +R-Sys-Sensor-UpLink "Satellite Uplink Center" +LasSatCommandSensor "*LasSatCommandSensor*" + +// added by SEBG 5 July 1999 + +SK-Veng-Track-C6TwinAslt "*SK-Veng-Track-C6TwinAslt*" +SK-Veng-Track-HvyLaser "*SK-Veng-Track-HvyLaser*" + +AutoRepair "*AutoRepair*" + +// added by Marc 23rd June 1999 Tech 3 Super-Cyborgs, Plasma Cannon and EMP Cannon + +R-Wpn-PlasmaCannon "Plasma Cannon" +Laser4-PlasmaCannon "Plasma Cannon" +R-Defense-PlasmaCannon "Plasma Cannon Emplacement" +Emplacement-PlasmaCannon "Plasma Cannon Emplacement" + +R-Cyborg-Hvywpn-PulseLsr "Super Pulse Laser Cyborg" +Cyb-Hvy-PulseLsr "Super Pulse Laser Cyborg" +Cyb-Hvybod-PulseLsr "Super Pulse Laser Cyborg" +Cyb-Hvywpn-PulseLsr "Super Pulse Laser Cyborg" + +R-Cyborg-Hvywpn-RailGunner "Super Rail-Gunner" +Cyb-Hvy-RailGunner "Super Rail-Gunner" +Cyb-Hvybod-RailGunner "Super Rail-Gunner" +Cyb-Hvywpn-RailGunner "Super Rail-Gunner" + +R-Cyborg-Hvywpn-A-T "Super Scourge Cyborg" +Cyb-Hvy-A-T "Super Scourge Cyborg" +Cyb-Hvybod-A-T "Super Scourge Cyborg" +Cyb-Hvywpn-A-T "Super Scourge Cyborg" + +Sys-SpyTower "NEXUS Link Tower" +R-Sys-SpyTower "NEXUS Link Tower" + +EMP-Cannon "EMP Cannon" +WallTower-EMP "EMP Cannon Tower" +R-Defense-EMPCannon "EMP Cannon Tower" +R-Wpn-EMPCannon "EMP Cannon" + +// added by SEBG for September patch + +X-Super-MassDriver "Mass Driver Fortress" +MassDriver "*Mass Driver Weapon*" +R-Defense-MassDriver "Mass Driver Fortress" + +X-Super-Cannon "Cannon Fortress" +CannonSuper "*Fortress Cannon Weapon*" +R-Defense-Super-Cannon "Cannon Fortress" + +X-Super-Rocket "Heavy Rocket Bastion" +RocketSuper "*Rocket Bastion Weapon*" +R-Defense-Super-Rocket "Heavy Rocket Bastion" + +X-Super-Missile "Missile Fortress" +MissileSuper "*Missile Fortress Weapon*" +R-Defense-Super-Missile "Missile Fortress" + +// added by Marc 1st September - Super Heavy bodies, Flamer Upgrades + +R-Vehicle-Body13 "Super Heavy Body - Wyvern" +Body13SUP "Wyvern" + +R-Vehicle-Body14 "Super Heavy Body - Dragon" +Body14SUP "Dragon" + +R-Wpn-Flamer-Damage07 "Superhot Plasmite gel" +R-Wpn-Flamer-Damage08 "Superhot Plasmite gel Mk2" +R-Wpn-Flamer-Damage09 "Superhot Plasmite gel Mk3" + +// added by Marc 13th September - EMP Mortar, AA laser, AA Hardpoints, Sam Hardpoints + +MortarEMP "EMP Mortar" +Emplacement-MortarEMP "EMP Mortar" +R-Wpn-MortarEMP "EMP Mortar" +R-Defense-EMPMortar "EMP Mortar" +AAGunLaser "Stormbringer AA Laser" +R-Defense-AA-Laser "Stormbringer AA Laser" +R-Wpn-AALaser "Stormbringer AA Laser" +P0-AASite-Laser "Stormbringer AA Laser" +R-Defense-WallTower-SamHvy "Vindicator Hardpoint" +WallTower-SamHvy "Vindicator Hardpoint" +WallTower-QuadRotAAGun "Whirlwind Hardpoint" +R-Defense-WallTower-QuadRotAA "Whirlwind Hardpoint" +WallTower-DoubleAAGun "Cyclone Hardpoint" +R-Defense-WallTower-DoubleAAgun "Cyclone Hardpoint" +R-Defense-WallTower-SamSite "Avenger Hardpoint" +WallTower-SamSite "Avenger Hardpoint" + +// added by Marc 15th September - Twin Rotary MG, VTOL Plasmite Bomb and VTOL EMP Missile Launcher + +MG5TWINROTARY "Twin Assault Gun" +R-Wpn-MG5 "Twin Assault Gun" +WallTower-TwinAssaultGun "Twin Assault Gun" +R-Defense-WallTower-TwinAGun "Twin Assault Gun" + +Bomb5-VTOL-Plasmite "Plasmite Bomb" +R-Wpn-Bomb05 "Plasmite Bomb" +Bomb6-VTOL-EMP "EMP Missile Launcher" +R-Wpn-Bomb06 "EMP Missile Launcher" + +// added by Marc 15th September - Upgraded Command Turrets + +CommandTurret2 "Command turret MkII" +R-Comp-CommandTurret02 "Command turret MkII" +CommandTurret3 "Command turret MkIII" +R-Comp-CommandTurret03 "Command turret MkIII" +CommandTurret4 "Command turret MkIV" +R-Comp-CommandTurret04 "Command turret MkIV" + + + ///////////////// + //NEW TEMPLATES// + ///////////////// + + /* Aivolution */ +//TransporterU _("Unit transport") +//TransporterBodyU _("Unit transport Body") +//R-Cyborg-TransportU _("Unit transport") +CobraHRepairHover _("Heavy Repair Turret Cobra Hover") +ViperHMGWheels _("Heavy Machinegun Viper Wheels") +Scourge-Mantis-H _("Scourge Mantis Hover") +TK-Mantis-H _("Tank Killer Mantis Hover") +CobraHMGTracks _("Heavy Machinegun Cobra Tracks") +Cobra-Hover-HC _("Heavy Cannon Cobra Hover") + +//====================================================================== +//GK +//====================================================================== +A-Viper-Wheels-MG _("Machinegun Viper Wheels") +A-Viper-Wheels-TMG _("Twin Machinegun Viper Wheels") +A-Viper-Wheels-HMG _("Heavy Machinegun Viper Wheels") +A-Cobra-Wheels-HMG _("Heavy Machinegun Cobra Wheels") +A-Cobra-Hover-HMG _("Heavy Machinegun Cobra Hover") + +A-Viper-Trk-MG _("Machinegun Viper Tracks") +A-Viper-Trk-TMG _("Twin Machinegun Viper Tracks") +A-Viper-Trk-HMG _("Heavy Machinegun Viper Tracks") +A-Cobra-Trk-HMG _("Heavy Machinegun Cobra Tracks") + +A-Cobra-Hover-MC _("Medium Cannon Cobra Hover") +A-Scorp-Hover-MC _("Medium Cannon Scorpion Hover") +A-Scorp-Trk-MC _("Medium Cannon Scorpion Tracks") +A-Python-Hover-MC _("Medium Cannon Python Hover") +A-Python-Hover-HC _("Heavy Cannon Python Hover") +A-Python-Trk-HC _("Heavy Cannon Python Tracks") +A-Mantis-Trk-Rail _("Rail Gun Mantis Tracks") +A-Mantis-Trk-Pulse _("Pulse Laser Mantis Tracks") +A-Python-Trk-Lancer _("Lancer Python Tracks") +A-Mantis-Trk-Lancer _("Lancer Mantis Tracks") +A-Veng-Trk-TK _("Tank Killer Vengeance Tracks") + +//A-Python-Trk-HLaser _("Heavy Laser Python Tracks") +//A-Python-Trk-Scour _("Scourge Python Tracks") + +A-Tiger-Trk-HC _("Heavy Cannon Tiger Tracks") +A-Tiger-Trk-Needle _("Needle Gun Tiger Tracks") +A-Retrib-Trk-Needle _("Needle Gun Retribution Tracks") +A-Veng-Trk-Needle _("Needle Gun Vengeance Tracks") +A-Veng-Trk-Rail _("Vengeance Tracks Rail Gun") +A-Veng-Trk-Guass _("Vengeance Tracks Gauss Cannon") +A-Veng-Trk-Scourge _("Vengeance Tracks Gauss Scourge") + +//Anti Structure VTOLs +V-Bug-ClusterBomb _("VTOL Cluster Bomb Bay Bug VTOL") +V-Bug-BB _("VTOL Bunker Buster Bug VTOL") +V-Scor-ClusterBomb _("VTOL Cluster Bomb Bay Scorpion VTOL") +V-Scor-BB _("VTOL Bunker Buster Scorpion VTOL") + +//Anti Tank VTOLs +V-Bug-Lancer _("VTOL Lancer Bug VTOL") +V-Bug-HPV _("VTOL HPV Cannon Bug VTOL") +V-Scor-Lancer _("VTOL Lancer Scorpion VTOL") +V-Scor-HPV _("VTOL HPV Cannon Scorpion VTOL") +V-Mantis-Lancer _("VTOL Lancer Mantis VTOL") +V-Mantis-HPV _("VTOL HPV Cannon Mantis VTOL") + +//Repair +A-Rep-Cobra-Trk _("Repair Turret Cobra Tracks") +A-Rep-Mantis-Trk _("Repair Turret Mantis Tracks") + +H-Scorp-Trk-Lancer _("Lancer Scorpion Tracks") +H-Scorp-Trk-HC _("Heavy Cannon Scorpion Tracks") +H-Scorp-VTOL-Lancer _("Lancer Scorpion VTOL") +H-Scorp-VTOL-BB _("Bunker Buster Scorpion VTOL") + +Viper-Trk-Com _("Command Turret Viper Tracks") +Cobra-Trk-Com _("Command Turret Cobra Tracks") +Scorp-Trk-Com _("Command Turret Scorpion Tracks") +Mantis-Trk-Com _("Command Turret Mantis Tracks") + +CobraTrkLancer _("Lancer Cobra Tracks") +MantisTrkHC _("Heavy Cannon Mantis Tracks") +MantisTKTracks _("Tank Killer Mantis Tracks") +MantisScourgeTracks _("Scourge Mantis Tracks") +ScorpTrkHMG _("Heavy Machinegun Scorpion Tracks") + +ScorpRepairTrk _("Repair Scorpion Tracks") +ScorpHRepairHover _("Heavy Repair Scorpion Hover") + +// Hover Truck Templates +CobraHoverTruck _("Truck Cobra Hover") +ScorpHoverTruck _("Truck Scorpion Hover") +MantisHoverTruck _("Truck Mantis Hover") + +// Bunker Buster Templates +CobraBBTracks _("Bunker Buster Cobra Tracks") +ScorpBBTracks _("Bunker Buster Scorpion Tracks") +MantisBBTracks _("Bunker Buster Mantis Tracks") + +ViperTrkLancer _("Lancer Viper Tracks") + +CobraPODHTracks _("Mini-Rocket Cobra Half-Tracks") +CobraPODTracks _("Mini-Rocket Cobra Tracks") +CobraMRLTracks _("Mini-Rocket Artillery Cobra Tracks") + +CobraInfernoHTracks _("Inferno Cobra Half-Tracks") +PythonHoverHVC _("HPV Cannon Python Hover") + +PythonTKTracks _("Tank Killer Python Tracks") +PythonMedCanTracks _("Medium Cannon Python Tracks") +PythonScourgeTracks _("Scourge Python Tracks") +PythonGaussTracks _("Gauss Cannon Python Tracks") +PythonPulseTracks _("Pulse Laser Python Tracks") +TigerPulseTracks _("Pulse Laser Tiger Tracks") +TigerHvLaserTracks _("Heavy Laser Tiger Tracks") +WyvernGaussTracks _("Gauss Cannon Wyvern Tracks") +WyvernPulseTracks _("Pulse Laser Wyvern Tracks") +WyvernHvLaserTracks _("Heavy Laser Wyvern Tracks") + +ViperLtMGHalfTracks _("Machinegun Viper Half-Tracks") +ViperFlameHalfTracks _("Flamer Viper Half-Tracks") + +//Added for DyDo-AI +CobraInfernoHover _("Inferno Cobra Hover") +CobraMedCnHTrks _("Medium Cannon Cobra Half Track") +PythonHoverInferno _("Inferno Python Hover") +PhytonHoverAssGun _("Assault Gun Python Hover") +PhytonHTrackAssGun _("Assault Gun Python Half Track") +ScorpHTrackHMG _("Heavy Machinegun Scorpion Half Tracks") +MantisHoverAC _("Assault Cannon Mantis Hover") +LeopardHoverPulseLas _("Pulse Laser Leopard Hover") +PantherHoverPulseLas _("Pulse Laser Panther Hover") +TigerHoverRailGun _("Rail Gun Tiger Hover") +TigerHoverPulseLas _("Pulse Laser Tiger Hover") +WyvernPlasmaCTracks _("Plasma Cannon Wyvern Tracks") +WyvernScourgeTracks _("Scourge Missile Wyvern Tracks") +RetreHoverFlashLight _("Flashlight Retribution Hover") +ViperPODHalfTracks _("Mini-Rocket Viper Half Track") +ViperMRLHalfTracks _("Mini-Rocket Array Viper Half Track") +SK-Mantis-VTOL-PBB _("Phosphor Bomb Bay Mantis VTOL") +SK-Mantis-VTOL-HBB _("Heap Bomb Bay Mantis VTOL") +SK-Retre-VTOL-HBB _("Heap Bomb Bay Retribution VTOL") +SK-Retal-VTOL-Scourge _("Scourge Retaliation VTOL") diff --git a/data/mods/multiplay/old-1.10-balance/stats/body.txt b/data/mods/multiplay/old-1.10-balance/stats/body.txt index 6a6dc6cd7..21400af40 100644 --- a/data/mods/multiplay/old-1.10-balance/stats/body.txt +++ b/data/mods/multiplay/old-1.10-balance/stats/body.txt @@ -1,50 +1,50 @@ -ZNULLBODY,Level All,LIGHT,0,0,0,0,MIBNKBOD.PIE,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -TransporterBody,Level All,MEDIUM,325,637,250,200,drcytran.pie,100,1,2000,20,9,20,9,20,9,20,9,20,9,20,9,0,0 -Superbody,Level All,HEAVY,10,10,2700,9000,DRHBOD11.PIE,500,1,40000,999,999,999,999,999,999,999,999,999,999,999,999,0,0 -FireBody,Level One,LIGHT,4,75,3000,200,EXFIRE.PIE,50,1,4000,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -CybRotMgGrd,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgRkt1Ground,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgFlamerGrd,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgChn1CCGround,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgChain1Ground,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgCannonGrd,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CyborgCan1CGround,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -CybNXRail1Jmp,Level All,LIGHT,30,125,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 -CybNXPulseLasJmp,Level All,LIGHT,30,125,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 -CybNXMissJmp,Level All,LIGHT,30,125,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 -CybFlamer01CGrd,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Hvybod-TK,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-RailGunner,Level Three,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-PulseLsr,Level Three,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-Mcannon,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-HPV,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-Acannon,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Hvybod-A-T,Level Three,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 -Cyb-Bod-Thermite,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Rail1,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Mechanic,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Las1,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Grenade,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-ComEng,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -Cyb-Bod-Atmiss,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 -BusBody,Level One,LIGHT,4,75,2000,200,EXSCHOOL.PIE,50,1,4000,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -Body9REC,Level All,HEAVY,90,420,3300,225,DRHBOD09.PIE,500,1,18000,22,15,22,15,22,15,22,15,22,15,22,15,fxvtl09.pie,1 -Body8MBT,Level All,MEDIUM,37,250,1500,125,DRMBOD08.PIE,250,1,15000,12,12,12,12,12,12,12,12,12,12,12,12,fxvtl5to8.pie,1 -Body7ABT,Level Three,MEDIUM,150,600,1500,200,DRMBOD07.PIE,250,1,15000,24,20,24,20,24,20,24,20,24,20,24,20,fxvtl5to8.pie,1 -Body6SUPP,Level Two-Three,MEDIUM,70,300,2500,145,DRMBOD06.PIE,250,1,13000,18,9,18,9,18,9,18,9,18,9,18,9,fxvtl5to8.pie,1 -Body5REC,Level All,MEDIUM,50,250,2000,130,DRMBOD05.PIE,250,1,15000,15,6,15,6,15,6,15,6,15,6,15,6,fxvtl5to8.pie,1 -Body4ABT,Level All,LIGHT,20,100,450,55,DRLBOD04.PIE,100,1,5000,8,8,8,8,8,8,8,8,8,8,8,8,fxvtl04.pie,1 -Body3MBT,Level Three,LIGHT,100,400,450,100,DRLBOD03.PIE,100,1,5000,20,15,20,15,20,15,20,15,20,15,20,15,fxvtl2and3.pie,1 -Body2SUP,Level All,LIGHT,50,220,750,85,DRLBOD02.PIE,100,1,4000,12,6,12,6,12,6,12,6,12,6,12,6,fxvtl2and3.pie,1 -Body1REC,Level All,LIGHT,30,150,600,65,DRLBOD01.PIE,100,1,5000,10,4,10,4,10,4,10,4,10,4,10,4,fxvtl01.pie,1 -Body14SUP,Level Three,HEAVY,300,1000,6000,400,DRHBOD14.PIE,500,1,30000,30,30,30,30,30,30,30,30,30,30,30,30,fxvtl12.pie,1 -Body13SUP,Level Three,HEAVY,250,900,5000,350,DRMBOD13.PIE,500,1,25000,28,28,28,28,28,28,28,28,28,28,28,28,fxvtl12.pie,1 -Body12SUP,Level All,HEAVY,55,350,2100,180,DRHBOD12.PIE,500,1,20000,18,18,18,18,18,18,18,18,18,18,18,18,fxvtl12.pie,1 -Body11ABT,Level All,HEAVY,70,350,2700,200,DRHBOD11.PIE,500,1,20000,20,9,20,9,20,9,20,9,20,9,20,9,fxvtl11.pie,1 -Body10MBT,Level Three,HEAVY,200,800,2500,300,DRHBOD10.PIE,500,1,23000,28,25,28,25,28,25,28,25,28,25,28,25,fxvtl10.pie,1 -B4body-sml-trike01,Level One,LIGHT,2,65,675,80,extrike.PIE,35,1,2100,1,1,1,1,1,1,1,1,1,1,1,1,0,0 -B3bodyRKbuggy01,Level One,LIGHT,3,80,900,100,exbugRK.PIE,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 -B3body-sml-buggy01,Level One,LIGHT,3,80,900,100,exbuggy.PIE,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 -B2RKJeepBody,Level One,LIGHT,4,75,900,120,EXjeepRK.PIE,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -B2JeepBody,Level One,LIGHT,4,75,900,120,EXjeep.PIE,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 -B1BaBaPerson01,Level All,HEAVY,1,20,100,29,EXBLOKE.PIE,50,1,125,1,1,1,1,1,1,1,1,1,1,1,1,0,0 +ZNULLBODY,Level All,LIGHT,0,0,0,0,MIBNKBOD.PIE,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +TransporterBody,Level All,MEDIUM,325,637,250,200,drcytran.pie,100,1,2000,20,9,20,9,20,9,20,9,20,9,20,9,0,0 +Superbody,Level All,HEAVY,10,10,2700,9000,DRHBOD11.PIE,500,1,40000,999,999,999,999,999,999,999,999,999,999,999,999,0,0 +FireBody,Level One,LIGHT,4,75,3000,200,EXFIRE.PIE,50,1,4000,4,1,4,1,4,1,4,1,4,1,4,1,0,0 +CybRotMgGrd,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CyborgRkt1Ground,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CyborgFlamerGrd,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CyborgChn1CCGround,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CyborgChain1Ground,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CyborgCannonGrd,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CyborgCan1CGround,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +CybNXRail1Jmp,Level All,LIGHT,30,125,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 +CybNXPulseLasJmp,Level All,LIGHT,30,125,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 +CybNXMissJmp,Level All,LIGHT,30,125,150,370,cybd_std.pie,100,1,675,18,15,18,15,18,15,18,15,18,15,18,15,0,0 +CybFlamer01CGrd,Level All,LIGHT,25,100,150,200,cybd_std.pie,100,1,600,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Hvybod-TK,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Hvybod-RailGunner,Level Three,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Hvybod-PulseLsr,Level Three,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Hvybod-Mcannon,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Hvybod-HPV,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Hvybod-Acannon,Level Two,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Hvybod-A-T,Level Three,LIGHT,60,240,150,300,scbd_std.pie,100,1,500,15,8,15,8,15,8,15,8,15,8,15,8,0,0 +Cyb-Bod-Thermite,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Bod-Rail1,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Bod-Mechanic,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Bod-Las1,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Bod-Grenade,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Bod-ComEng,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +Cyb-Bod-Atmiss,Level All,LIGHT,30,125,150,200,cybd_std.pie,100,1,500,12,6,12,6,12,6,12,6,12,6,12,6,0,0 +BusBody,Level One,LIGHT,4,75,2000,200,EXSCHOOL.PIE,50,1,4000,4,1,4,1,4,1,4,1,4,1,4,1,0,0 +Body9REC,Level All,HEAVY,90,420,3300,225,DRHBOD09.PIE,500,1,18000,22,15,22,15,22,15,22,15,22,15,22,15,fxvtl09.pie,1 +Body8MBT,Level All,MEDIUM,37,250,1500,125,DRMBOD08.PIE,250,1,15000,12,12,12,12,12,12,12,12,12,12,12,12,fxvtl5to8.pie,1 +Body7ABT,Level Three,MEDIUM,150,600,1500,200,DRMBOD07.PIE,250,1,15000,24,20,24,20,24,20,24,20,24,20,24,20,fxvtl5to8.pie,1 +Body6SUPP,Level Two-Three,MEDIUM,70,300,2500,145,DRMBOD06.PIE,250,1,13000,18,9,18,9,18,9,18,9,18,9,18,9,fxvtl5to8.pie,1 +Body5REC,Level All,MEDIUM,50,250,2000,130,DRMBOD05.PIE,250,1,15000,15,6,15,6,15,6,15,6,15,6,15,6,fxvtl5to8.pie,1 +Body4ABT,Level All,LIGHT,20,100,450,55,DRLBOD04.PIE,100,1,5000,8,8,8,8,8,8,8,8,8,8,8,8,fxvtl04.pie,1 +Body3MBT,Level Three,LIGHT,100,400,450,100,DRLBOD03.PIE,100,1,5000,20,15,20,15,20,15,20,15,20,15,20,15,fxvtl2and3.pie,1 +Body2SUP,Level All,LIGHT,50,220,750,85,DRLBOD02.PIE,100,1,4000,12,6,12,6,12,6,12,6,12,6,12,6,fxvtl2and3.pie,1 +Body1REC,Level All,LIGHT,30,150,600,65,DRLBOD01.PIE,100,1,5000,10,4,10,4,10,4,10,4,10,4,10,4,fxvtl01.pie,1 +Body14SUP,Level Three,HEAVY,300,1000,6000,400,DRHBOD14.PIE,500,1,30000,30,30,30,30,30,30,30,30,30,30,30,30,fxvtl12.pie,1 +Body13SUP,Level Three,HEAVY,250,900,5000,350,DRMBOD13.PIE,500,1,25000,28,28,28,28,28,28,28,28,28,28,28,28,fxvtl12.pie,1 +Body12SUP,Level All,HEAVY,55,350,2100,180,DRHBOD12.PIE,500,1,20000,18,18,18,18,18,18,18,18,18,18,18,18,fxvtl12.pie,1 +Body11ABT,Level All,HEAVY,70,350,2700,200,DRHBOD11.PIE,500,1,20000,20,9,20,9,20,9,20,9,20,9,20,9,fxvtl11.pie,1 +Body10MBT,Level Three,HEAVY,200,800,2500,300,DRHBOD10.PIE,500,1,23000,28,25,28,25,28,25,28,25,28,25,28,25,fxvtl10.pie,1 +B4body-sml-trike01,Level One,LIGHT,2,65,675,80,extrike.PIE,35,1,2100,1,1,1,1,1,1,1,1,1,1,1,1,0,0 +B3bodyRKbuggy01,Level One,LIGHT,3,80,900,100,exbugRK.PIE,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 +B3body-sml-buggy01,Level One,LIGHT,3,80,900,100,exbuggy.PIE,50,1,2200,3,1,3,1,3,1,3,1,3,1,3,1,0,0 +B2RKJeepBody,Level One,LIGHT,4,75,900,120,EXjeepRK.PIE,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 +B2JeepBody,Level One,LIGHT,4,75,900,120,EXjeep.PIE,50,1,2200,4,1,4,1,4,1,4,1,4,1,4,1,0,0 +B1BaBaPerson01,Level All,HEAVY,1,20,100,29,EXBLOKE.PIE,50,1,125,1,1,1,1,1,1,1,1,1,1,1,1,0,0 diff --git a/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/prresearch.txt b/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/prresearch.txt index 613a54205..e8f7e8f7b 100644 --- a/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/prresearch.txt +++ b/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/prresearch.txt @@ -1,638 +1,640 @@ -CAM1DEFENSES,CAM1RESEARCH,456 -CAM1STRUCTURES,CAM1RESEARCH,457 -CAM1SYSTEMS,CAM1RESEARCH,455 -CAM1WEAPONS,CAM1RESEARCH,454 -R-Comp-CommandTurret01,R-Struc-CommandRelay,407 -R-Comp-CommandTurret02,R-Vehicle-Metals03,1164 -R-Comp-CommandTurret02,R-Comp-CommandTurret01,1164 -R-Comp-CommandTurret03,R-Comp-CommandTurret02,1166 -R-Comp-CommandTurret03,R-Vehicle-Metals06,1166 -R-Comp-CommandTurret04,R-Comp-CommandTurret03,1167 -R-Comp-CommandTurret04,R-Vehicle-Metals09,1167 -R-Comp-SynapticLink,R-Comp-SynapticLink,376 -R-Cyborg-Armor-Heat01,R-Cyborg-Metals04,988 -R-Cyborg-Armor-Heat02,R-Cyborg-Armor-Heat01,989 -R-Cyborg-Armor-Heat03,R-Cyborg-Armor-Heat02,990 -R-Cyborg-Armor-Heat04,R-Cyborg-Armor-Heat03,991 -R-Cyborg-Armor-Heat04,R-Cyborg-Metals07,991 -R-Cyborg-Armor-Heat05,R-Cyborg-Armor-Heat04,992 -R-Cyborg-Armor-Heat06,R-Cyborg-Armor-Heat05,993 -R-Cyborg-Armor-Heat07,R-Cyborg-Armor-Heat06,1082 -R-Cyborg-Armor-Heat08,R-Cyborg-Armor-Heat07,1083 -R-Cyborg-Armor-Heat09,R-Cyborg-Armor-Heat08,1084 -R-Cyborg-Hvywpn-A-T,R-Cyborg-Wpn-ATMiss-Grd,1112 -R-Cyborg-Hvywpn-A-T,R-Wpn-Missile2A-T,1112 -R-Cyborg-Hvywpn-Acannon,R-Wpn-Cannon5,1092 -R-Cyborg-Hvywpn-Acannon,R-Cyborg-Hvywpn-HPV,1092 -R-Cyborg-Hvywpn-HPV,R-Cyborg-Hvywpn-Mcannon,960 -R-Cyborg-Hvywpn-HPV,R-Wpn-Cannon4AMk1,960 -R-Cyborg-Hvywpn-Mcannon,R-Cyborg-Wpn-Cannon,1090 -R-Cyborg-Hvywpn-Mcannon,R-Cyborg-Metals04,1090 -R-Cyborg-Hvywpn-Mcannon,R-Wpn-Cannon2Mk1,1090 -R-Cyborg-Hvywpn-PulseLsr,R-Wpn-Laser02,1110 -R-Cyborg-Hvywpn-RailGunner,R-Wpn-RailGun02,1111 -R-Cyborg-Hvywpn-TK,R-Cyborg-Metals04,1094 -R-Cyborg-Hvywpn-TK,R-Wpn-Rocket07-Tank-Killer,1094 -R-Cyborg-Metals01,R-Struc-Factory-Module,449 -R-Cyborg-Metals01,R-Struc-Research-Module,449 -R-Cyborg-Metals01,R-Cyborg-Wpn-MG,449 -R-Cyborg-Metals02,R-Cyborg-Metals01,450 -R-Cyborg-Metals03,R-Cyborg-Metals02,451 -R-Cyborg-Metals03,R-Cyborg-Wpn-MG,451 -R-Cyborg-Metals04,R-Cyborg-Metals03,581 -R-Cyborg-Metals04,R-Struc-Research-Upgrade04,581 -R-Cyborg-Metals05,R-Cyborg-Metals04,582 -R-Cyborg-Metals06,R-Cyborg-Metals05,583 -R-Cyborg-Metals07,R-Cyborg-Metals06,584 -R-Cyborg-Metals08,R-Cyborg-Metals07,585 -R-Cyborg-Metals09,R-Cyborg-Metals08,586 -R-Cyborg-Sys-ComEng,R-Sys-Engineering01,1043 -R-Cyborg-Sys-ComEng,R-Cyborg-Wpn-MG,1043 -R-Cyborg-Sys-Mechanic,R-Sys-MobileRepairTurret01,1044 -R-Cyborg-Sys-Mechanic,R-Cyborg-Wpn-MG,1044 -R-Cyborg-Transport,R-Struc-Factory-Cyborg,1081 -R-Cyborg-Transport,R-Struc-VTOLFactory,1081 -R-Cyborg-Wpn-ATMiss-Grd,R-Wpn-Missile2A-T,643 -R-Cyborg-Wpn-Cannon,R-Cyborg-Wpn-MG,425 -R-Cyborg-Wpn-Cannon,R-Wpn-Cannon1Mk1,425 -R-Cyborg-Wpn-Flamer,R-Cyborg-Wpn-MG,424 -R-Cyborg-Wpn-Flamer,R-Wpn-Flamer01Mk1,424 -R-Cyborg-Wpn-Grenade,R-Wpn-Mortar01Lt,1042 -R-Cyborg-Wpn-Grenade,R-Cyborg-Wpn-MG,1042 -R-Cyborg-Wpn-Laser1-Grd,R-Wpn-Laser01,644 -R-Cyborg-Wpn-MG,R-Struc-Factory-Cyborg,361 -R-Cyborg-Wpn-Rail1-Grd,R-Wpn-RailGun01,642 -R-Cyborg-Wpn-Rocket,R-Cyborg-Wpn-MG,427 -R-Cyborg-Wpn-Rocket,R-Wpn-Rocket01-LtAT,427 -R-Cyborg-Wpn-RotMG-Grd,R-Wpn-MG4,641 -R-Cyborg-Wpn-Thermite,R-Wpn-Flame2,1041 -R-Cyborg-Wpn-Thermite,R-Cyborg-Wpn-Flamer,1041 -R-Defense-AA-Laser,R-Wpn-AALaser,1152 -R-Defense-AASite-QuadBof,R-Wpn-AAGun02,555 -R-Defense-AASite-QuadMg1,R-Wpn-AAGun03,556 -R-Defense-AASite-QuadRotMg,R-Wpn-AAGun04,557 -R-Defense-AASite-QuadRotMg,R-Defense-AASite-QuadMg1,557 -R-Defense-Cannon6,R-Defense-WallUpgrade04,1102 -R-Defense-Cannon6,R-Wpn-Cannon6TwinAslt,1102 -R-Defense-EMPCannon,R-Wpn-EMPCannon,1116 -R-Defense-Emplacement-HPVcannon,R-Wpn-Cannon4AMk1,663 -R-Defense-EMPMortar,R-Defense-EMPCannon,1153 -R-Defense-GuardTower-ATMiss,R-Wpn-Missile2A-T,566 -R-Defense-GuardTower-Rail1,R-Wpn-RailGun01,568 -R-Defense-HardcreteWall,R-Sys-Engineering01,142 -R-Defense-HeavyLas,R-Wpn-HvyLaser,1105 -R-Defense-Howitzer,R-Wpn-HowitzerMk1,569 -R-Defense-Howitzer-Incenediary,R-Defense-Howitzer,1075 -R-Defense-Howitzer-Incenediary,R-Wpn-Howitzer-Incenediary,1075 -R-Defense-HvyA-Trocket,R-Wpn-Rocket07-Tank-Killer,662 -R-Defense-HvyArtMissile,R-Wpn-HvArtMissile,668 -R-Defense-HvyFlamer,R-Wpn-Flame2,653 -R-Defense-HvyHowitzer,R-Defense-Howitzer,656 -R-Defense-HvyHowitzer,R-Wpn-HvyHowitzer,656 -R-Defense-HvyMor,R-Defense-MortarPit,660 -R-Defense-HvyMor,R-Wpn-Mortar02Hvy,660 -R-Defense-IDFRocket,R-Wpn-Rocket06-IDF,661 -R-Defense-IDFRocket,R-Defense-MRL,661 -R-Defense-MassDriver,R-Wpn-RailGun03,1129 -R-Defense-MassDriver,R-Wpn-Rail-ROF03,1129 -R-Defense-MassDriver,R-Defense-WallUpgrade10,1129 -R-Defense-MdArtMissile,R-Wpn-MdArtMissile,667 -R-Defense-MortarPit,R-Defense-HardcreteWall,571 -R-Defense-MortarPit,R-Wpn-Mortar01Lt,571 -R-Defense-MortarPit-Incenediary,R-Wpn-Mortar-Incenediary,1080 -R-Defense-MortarPit-Incenediary,R-Defense-HvyMor,1080 -R-Defense-MRL,R-Wpn-Rocket02-MRL,657 -R-Defense-MRL,R-Defense-HardcreteWall,657 -R-Defense-Pillbox01,R-Defense-HardcreteWall,419 -R-Defense-Pillbox01,R-Wpn-MG-Damage01,419 -R-Defense-Pillbox04,R-Defense-HardcreteWall,422 -R-Defense-Pillbox04,R-Wpn-Cannon1Mk1,422 -R-Defense-Pillbox05,R-Defense-HardcreteWall,423 -R-Defense-Pillbox05,R-Wpn-Flamer01Mk1,423 -R-Defense-Pillbox06,R-Defense-HardcreteWall,468 -R-Defense-Pillbox06,R-Wpn-Rocket01-LtAT,468 -R-Defense-PlasmaCannon,R-Wpn-PlasmaCannon,1114 -R-Defense-PlasmiteFlamer,R-Wpn-Plasmite-Flamer,1077 -R-Defense-PrisLas,R-Wpn-Laser01,561 -R-Defense-PulseLas,R-Wpn-Laser02,664 -R-Defense-Rail2,R-Wpn-RailGun02,665 -R-Defense-Rail3,R-Wpn-RailGun03,666 -R-Defense-RotHow,R-Wpn-Howitzer03-Rot,563 -R-Defense-RotMG,R-Wpn-MG4,658 -R-Defense-RotMor,R-Wpn-Mortar3,564 -R-Defense-SamSite1,R-Wpn-Missile-LtSAM,654 -R-Defense-SamSite2,R-Wpn-Missile-HvSAM,655 -R-Defense-Super-Cannon,R-Wpn-Cannon-Damage05,1130 -R-Defense-Super-Cannon,R-Defense-WallUpgrade05,1130 -R-Defense-Super-Missile,R-Defense-WallUpgrade10,1132 -R-Defense-Super-Missile,R-Wpn-Missile2A-T,1132 -R-Defense-Super-Missile,R-Wpn-Missile-ROF03,1132 -R-Defense-Super-Rocket,R-Wpn-RocketSlow-Accuracy03,1131 -R-Defense-Super-Rocket,R-Defense-WallUpgrade05,1131 -R-Defense-Super-Rocket,R-Wpn-RocketSlow-Damage06,1131 -R-Defense-TankTrap01,R-Sys-Engineering01,409 -R-Defense-Tower01,R-Wpn-MG1Mk1,411 -R-Defense-Tower06,R-Defense-HardcreteWall,416 -R-Defense-Tower06,R-Wpn-Rocket05-MiniPod,416 -R-Defense-Wall-RotMg,R-Wpn-MG4,574 -R-Defense-Wall-RotMg,R-Defense-RotMG,574 -R-Defense-Wall-VulcanCan,R-Wpn-Cannon5,575 -R-Defense-WallTower-A-Tmiss,R-Wpn-Missile2A-T,671 -R-Defense-WallTower-DoubleAAgun,R-Wpn-AAGun02,1158 -R-Defense-WallTower-HPVcannon,R-Wpn-Cannon4AMk1,670 -R-Defense-WallTower-HvyA-Trocket,R-Wpn-Rocket07-Tank-Killer,669 -R-Defense-WallTower-PulseLas,R-Wpn-Laser01,577 -R-Defense-WallTower-QuadRotAA,R-Defense-HardcreteWall,1155 -R-Defense-WallTower-QuadRotAA,R-Defense-AASite-QuadRotMg,1155 -R-Defense-WallTower-Rail2,R-Wpn-RailGun02,578 -R-Defense-WallTower-Rail3,R-Wpn-RailGun03,953 -R-Defense-WallTower-SamHvy,R-Wpn-Missile-HvSAM,1154 -R-Defense-WallTower-SamHvy,R-Defense-WallUpgrade07,1154 -R-Defense-WallTower-SamSite,R-Defense-WallUpgrade07,1159 -R-Defense-WallTower-SamSite,R-Defense-SamSite1,1159 -R-Defense-WallTower-TwinAGun,R-Wpn-MG5,1161 -R-Defense-WallTower01,R-Defense-Pillbox01,248 -R-Defense-WallTower01,R-Defense-HardcreteWall,248 -R-Defense-WallTower01,R-Wpn-MG3Mk1,248 -R-Defense-WallTower02,R-Defense-HardcreteWall,247 -R-Defense-WallTower02,R-Wpn-Cannon1Mk1,247 -R-Defense-WallTower03,R-Wpn-Cannon2Mk1,251 -R-Defense-WallTower03,R-Defense-WallTower02,251 -R-Defense-WallTower04,R-Defense-WallTower03,249 -R-Defense-WallTower04,R-Wpn-Cannon3Mk1,249 -R-Defense-WallTower06,R-Wpn-Rocket01-LtAT,467 -R-Defense-WallTower06,R-Defense-HardcreteWall,467 -R-Defense-WallUpgrade01,R-Sys-Engineering01,374 -R-Defense-WallUpgrade01,R-Defense-HardcreteWall,374 -R-Defense-WallUpgrade02,R-Defense-WallUpgrade01,432 -R-Defense-WallUpgrade03,R-Defense-WallUpgrade02,434 -R-Defense-WallUpgrade04,R-Sys-Engineering02,673 -R-Defense-WallUpgrade04,R-Struc-Research-Upgrade04,673 -R-Defense-WallUpgrade04,R-Defense-WallUpgrade03,673 -R-Defense-WallUpgrade05,R-Defense-WallUpgrade04,674 -R-Defense-WallUpgrade06,R-Defense-WallUpgrade05,675 -R-Defense-WallUpgrade07,R-Defense-WallUpgrade06,676 -R-Defense-WallUpgrade07,R-Sys-Engineering03,676 -R-Defense-WallUpgrade08,R-Defense-WallUpgrade07,677 -R-Defense-WallUpgrade09,R-Defense-WallUpgrade08,678 -R-Defense-WallUpgrade10,R-Defense-WallUpgrade09,1133 -R-Defense-WallUpgrade11,R-Defense-WallUpgrade10,1134 -R-Defense-WallUpgrade12,R-Defense-WallUpgrade11,1135 -R-Struc-CommandRelay,R-Sys-Sensor-Tower01,375 -R-Struc-Factory-Cyborg,R-Comp-SynapticLink,360 -R-Struc-Factory-Cyborg,R-Wpn-MG-Damage01,360 -R-Struc-Factory-Cyborg-Upgrade01,R-Struc-Factory-Module,687 -R-Struc-Factory-Cyborg-Upgrade01,R-Struc-Factory-Cyborg,687 -R-Struc-Factory-Cyborg-Upgrade02,R-Struc-Factory-Cyborg-Upgrade01,688 -R-Struc-Factory-Cyborg-Upgrade03,R-Struc-Factory-Cyborg-Upgrade02,689 -R-Struc-Factory-Cyborg-Upgrade04,R-Struc-Factory-Cyborg-Upgrade03,690 -R-Struc-Factory-Cyborg-Upgrade05,R-Struc-Factory-Cyborg-Upgrade04,691 -R-Struc-Factory-Cyborg-Upgrade06,R-Struc-Factory-Cyborg-Upgrade05,692 -R-Struc-Factory-Cyborg-Upgrade07,R-Sys-Engineering03,1147 -R-Struc-Factory-Cyborg-Upgrade08,R-Struc-Factory-Cyborg-Upgrade07,1148 -R-Struc-Factory-Cyborg-Upgrade09,R-Struc-Factory-Cyborg-Upgrade08,1149 -R-Struc-Factory-Module,R-Struc-Factory-Cyborg,166 -R-Struc-Factory-Module,R-Sys-Engineering01,166 -R-Struc-Factory-Module,R-Struc-PowerModuleMk1,166 -R-Struc-Factory-Upgrade01,R-Struc-Factory-Module,444 -R-Struc-Factory-Upgrade02,R-Struc-Factory-Upgrade01,445 -R-Struc-Factory-Upgrade03,R-Struc-Factory-Upgrade02,446 -R-Struc-Factory-Upgrade04,R-Struc-Factory-Upgrade03,680 -R-Struc-Factory-Upgrade05,R-Struc-Factory-Upgrade04,681 -R-Struc-Factory-Upgrade06,R-Struc-Factory-Upgrade05,682 -R-Struc-Factory-Upgrade07,R-Sys-Engineering03,1144 -R-Struc-Factory-Upgrade08,R-Struc-Factory-Upgrade07,1145 -R-Struc-Factory-Upgrade09,R-Struc-Factory-Upgrade08,1146 -R-Struc-Materials01,R-Defense-WallUpgrade01,435 -R-Struc-Materials02,R-Struc-Materials01,436 -R-Struc-Materials03,R-Struc-Materials02,437 -R-Struc-Materials04,R-Defense-WallUpgrade04,711 -R-Struc-Materials04,R-Struc-Materials03,711 -R-Struc-Materials05,R-Struc-Materials04,712 -R-Struc-Materials06,R-Struc-Materials05,713 -R-Struc-Materials07,R-Defense-WallUpgrade07,714 -R-Struc-Materials07,R-Struc-Materials06,714 -R-Struc-Materials08,R-Struc-Materials07,715 -R-Struc-Materials09,R-Struc-Materials08,716 -R-Struc-Power-Upgrade01,R-Struc-Research-Upgrade04,718 -R-Struc-Power-Upgrade01,R-Struc-PowerModuleMk1,718 -R-Struc-Power-Upgrade01b,R-Struc-Power-Upgrade01,1038 -R-Struc-Power-Upgrade01c,R-Struc-Power-Upgrade01b,1039 -R-Struc-Power-Upgrade02,R-Struc-Research-Upgrade07,719 -R-Struc-Power-Upgrade02,R-Struc-Power-Upgrade01c,719 -R-Struc-Power-Upgrade03,R-Struc-Power-Upgrade02,1036 -R-Struc-Power-Upgrade03a,R-Struc-Power-Upgrade03,1040 -R-Struc-PowerModuleMk1,R-Vehicle-Engine01,225 -R-Struc-RepairFacility,R-Sys-MobileRepairTurret01,281 -R-Struc-RepairFacility,R-Struc-Factory-Module,281 -R-Struc-Research-Module,R-Struc-CommandRelay,118 -R-Struc-Research-Module,R-Comp-SynapticLink,118 -R-Struc-Research-Upgrade01,R-Struc-Research-Module,441 -R-Struc-Research-Upgrade02,R-Struc-Research-Upgrade01,442 -R-Struc-Research-Upgrade03,R-Struc-Research-Upgrade02,443 -R-Struc-Research-Upgrade04,R-Struc-Research-Upgrade03,720 -R-Struc-Research-Upgrade05,R-Struc-Research-Upgrade04,721 -R-Struc-Research-Upgrade06,R-Struc-Research-Upgrade05,722 -R-Struc-Research-Upgrade07,R-Struc-Research-Upgrade06,723 -R-Struc-Research-Upgrade08,R-Struc-Research-Upgrade07,724 -R-Struc-Research-Upgrade09,R-Struc-Research-Upgrade08,725 -R-Struc-RprFac-Upgrade01,R-Struc-Factory-Upgrade01,499 -R-Struc-RprFac-Upgrade01,R-Struc-RepairFacility,499 -R-Struc-RprFac-Upgrade02,R-Struc-RprFac-Upgrade01,500 -R-Struc-RprFac-Upgrade02,R-Struc-Factory-Upgrade02,500 -R-Struc-RprFac-Upgrade03,R-Struc-Factory-Upgrade03,501 -R-Struc-RprFac-Upgrade03,R-Struc-RprFac-Upgrade02,501 -R-Struc-RprFac-Upgrade04,R-Struc-RprFac-Upgrade03,727 -R-Struc-RprFac-Upgrade05,R-Struc-RprFac-Upgrade04,728 -R-Struc-RprFac-Upgrade06,R-Struc-RprFac-Upgrade05,729 -R-Struc-VTOLFactory,R-Vehicle-Prop-VTOL,520 -R-Struc-VTOLFactory-Upgrade01,R-Struc-VTOLPad,697 -R-Struc-VTOLFactory-Upgrade02,R-Struc-VTOLFactory-Upgrade01,698 -R-Struc-VTOLFactory-Upgrade03,R-Struc-VTOLFactory-Upgrade02,699 -R-Struc-VTOLFactory-Upgrade04,R-Struc-VTOLFactory-Upgrade03,700 -R-Struc-VTOLFactory-Upgrade05,R-Struc-VTOLFactory-Upgrade04,701 -R-Struc-VTOLFactory-Upgrade06,R-Struc-VTOLFactory-Upgrade05,702 -R-Struc-VTOLPad,R-Vehicle-Prop-VTOL,519 -R-Struc-VTOLPad,R-Struc-VTOLFactory,519 -R-Struc-VTOLPad-Upgrade01,R-Struc-VTOLPad,704 -R-Struc-VTOLPad-Upgrade02,R-Struc-VTOLPad-Upgrade01,705 -R-Struc-VTOLPad-Upgrade03,R-Struc-VTOLPad-Upgrade02,706 -R-Struc-VTOLPad-Upgrade04,R-Struc-VTOLFactory-Upgrade03,707 -R-Struc-VTOLPad-Upgrade05,R-Struc-VTOLPad-Upgrade04,708 -R-Struc-VTOLPad-Upgrade06,R-Struc-VTOLPad-Upgrade05,709 -R-Sys-Autorepair-General,R-Struc-Research-Upgrade08,1099 -R-Sys-CBSensor-Tower01,R-Sys-Sensor-Upgrade01,769 -R-Sys-CBSensor-Tower01,R-Wpn-Mortar-Damage03,769 -R-Sys-CBSensor-Turret01,R-Sys-CBSensor-Tower01,766 -R-Sys-Engineering01,CAM1SYSTEMS,290 -R-Sys-Engineering02,R-Sys-Engineering01,749 -R-Sys-Engineering02,R-Struc-Research-Upgrade04,749 -R-Sys-Engineering03,R-Struc-Research-Upgrade08,750 -R-Sys-Engineering03,R-Sys-Engineering02,750 -R-Sys-MobileRepairTurret01,R-Sys-Engineering01,430 -R-Sys-MobileRepairTurretHvy,R-Sys-Engineering03,1088 -R-Sys-Resistance-Circuits,R-Sys-Engineering03,1100 -R-Sys-Resistance-Circuits,R-Struc-Research-Upgrade08,1100 -R-Sys-Resistance-Circuits,R-Sys-Sensor-WSTower,1100 -R-Sys-Sensor-Tower01,R-Defense-Tower01,243 -R-Sys-Sensor-Tower01,R-Sys-Sensor-Turret01,243 -R-Sys-Sensor-Tower02,R-Defense-WallUpgrade02,628 -R-Sys-Sensor-Tower02,R-Sys-Sensor-Tower01,628 -R-Sys-Sensor-Turret01,CAM1SYSTEMS,262 -R-Sys-Sensor-Upgrade01,R-Struc-Research-Upgrade04,463 -R-Sys-Sensor-Upgrade01,R-Sys-Sensor-Tower01,463 -R-Sys-Sensor-Upgrade02,R-Sys-Sensor-Upgrade01,1035 -R-Sys-Sensor-UpLink,R-Struc-Research-Upgrade08,1107 -R-Sys-Sensor-UpLink,R-Sys-Sensor-WSTower,1107 -R-Sys-Sensor-UpLink,R-Sys-Engineering03,1107 -R-Sys-Sensor-WS,R-Struc-Research-Upgrade07,1156 -R-Sys-Sensor-WS,R-Sys-VTOLCBS-Tower01,1156 -R-Sys-Sensor-WS,R-Sys-Sensor-Tower02,1156 -R-Sys-Sensor-WS,R-Sys-VTOLStrike-Tower01,1156 -R-Sys-Sensor-WS,R-Sys-CBSensor-Tower01,1156 -R-Sys-Sensor-WSTower,R-Sys-VTOLStrike-Tower01,1106 -R-Sys-Sensor-WSTower,R-Sys-CBSensor-Tower01,1106 -R-Sys-Sensor-WSTower,R-Sys-VTOLCBS-Tower01,1106 -R-Sys-Sensor-WSTower,R-Sys-Sensor-Tower02,1106 -R-Sys-Sensor-WSTower,R-Struc-Research-Upgrade07,1106 -R-Sys-Sensor-WSTower,R-Sys-Sensor-WS,1106 -R-Sys-Spade1Mk1,CAM1SYSTEMS,489 -R-Sys-SpyTower,R-Sys-SpyTurret,1113 -R-Sys-SpyTurret,R-Sys-Engineering03,470 -R-Sys-SpyTurret,R-Struc-Research-Upgrade08,470 -R-Sys-SpyTurret,R-Sys-Sensor-WSTower,470 -R-Sys-VTOLCBS-Tower01,R-Sys-VTOLStrike-Tower01,779 -R-Sys-VTOLCBS-Tower01,R-Sys-CBSensor-Tower01,779 -R-Sys-VTOLCBS-Turret01,R-Sys-VTOLCBS-Tower01,776 -R-Sys-VTOLCBS-Turret01,R-Sys-CBSensor-Turret01,776 -R-Sys-VTOLStrike-Tower01,R-Struc-VTOLPad,788 -R-Sys-VTOLStrike-Tower01,R-Sys-Sensor-Upgrade01,788 -R-Sys-VTOLStrike-Turret01,R-Sys-VTOLStrike-Tower01,785 -R-Sys-VTOLStrike-Turret01,R-Sys-Sensor-Turret01,785 -R-Vehicle-Armor-Heat01,R-Vehicle-Metals04,970 -R-Vehicle-Armor-Heat02,R-Vehicle-Armor-Heat01,971 -R-Vehicle-Armor-Heat03,R-Vehicle-Armor-Heat02,972 -R-Vehicle-Armor-Heat04,R-Vehicle-Armor-Heat03,973 -R-Vehicle-Armor-Heat04,R-Vehicle-Metals07,973 -R-Vehicle-Armor-Heat05,R-Vehicle-Armor-Heat04,974 -R-Vehicle-Armor-Heat06,R-Vehicle-Armor-Heat05,975 -R-Vehicle-Armor-Heat07,R-Vehicle-Armor-Heat06,1085 -R-Vehicle-Armor-Heat08,R-Vehicle-Armor-Heat07,1086 -R-Vehicle-Armor-Heat09,R-Vehicle-Armor-Heat08,1087 -R-Vehicle-Body01,R-Vehicle-Body01,229 -R-Vehicle-Body02,R-Vehicle-Body01,230 -R-Vehicle-Body02,R-Vehicle-Metals04,230 -R-Vehicle-Body03,R-Vehicle-Metals07,233 -R-Vehicle-Body03,R-Vehicle-Body04,233 -R-Vehicle-Body04,R-Vehicle-Metals01,234 -R-Vehicle-Body04,R-Vehicle-Body01,234 -R-Vehicle-Body05,R-Struc-Factory-Module,235 -R-Vehicle-Body05,R-Vehicle-Body01,235 -R-Vehicle-Body06,R-Vehicle-Body02,236 -R-Vehicle-Body06,R-Struc-Factory-Module,236 -R-Vehicle-Body06,R-Vehicle-Body05,236 -R-Vehicle-Body07,R-Struc-Factory-Module,237 -R-Vehicle-Body07,R-Vehicle-Body06,237 -R-Vehicle-Body07,R-Vehicle-Metals08,237 -R-Vehicle-Body07,R-Vehicle-Body03,237 -R-Vehicle-Body08,R-Vehicle-Body05,238 -R-Vehicle-Body08,R-Vehicle-Metals02,238 -R-Vehicle-Body09,R-Vehicle-Metals03,239 -R-Vehicle-Body09,R-Vehicle-Body11,239 -R-Vehicle-Body09,R-Vehicle-Body06,239 -R-Vehicle-Body10,R-Vehicle-Body09,240 -R-Vehicle-Body10,R-Vehicle-Metals09,240 -R-Vehicle-Body10,R-Vehicle-Body07,240 -R-Vehicle-Body11,R-Vehicle-Body05,241 -R-Vehicle-Body11,R-Vehicle-Metals02,241 -R-Vehicle-Body12,R-Vehicle-Body11,242 -R-Vehicle-Body12,R-Vehicle-Metals05,242 -R-Vehicle-Body13,R-Vehicle-Metals09,1139 -R-Vehicle-Body13,R-Vehicle-Engine09,1139 -R-Vehicle-Body13,R-Vehicle-Armor-Heat06,1139 -R-Vehicle-Body13,R-Vehicle-Body10,1139 -R-Vehicle-Body14,R-Vehicle-Metals09,1140 -R-Vehicle-Body14,R-Vehicle-Engine09,1140 -R-Vehicle-Body14,R-Vehicle-Armor-Heat06,1140 -R-Vehicle-Body14,R-Vehicle-Body13,1140 -R-Vehicle-Engine01,R-Sys-Engineering01,381 -R-Vehicle-Engine02,R-Vehicle-Engine01,382 -R-Vehicle-Engine03,R-Vehicle-Engine02,384 -R-Vehicle-Engine04,R-Vehicle-Prop-VTOL,794 -R-Vehicle-Engine04,R-Struc-Power-Upgrade01,794 -R-Vehicle-Engine05,R-Vehicle-Engine04,795 -R-Vehicle-Engine06,R-Vehicle-Engine05,796 -R-Vehicle-Engine07,R-Vehicle-Body03,797 -R-Vehicle-Engine08,R-Vehicle-Body07,798 -R-Vehicle-Engine08,R-Vehicle-Engine07,798 -R-Vehicle-Engine09,R-Vehicle-Engine08,799 -R-Vehicle-Engine09,R-Vehicle-Body10,799 -R-Vehicle-Metals01,R-Struc-Factory-Module,438 -R-Vehicle-Metals01,R-Struc-Research-Module,438 -R-Vehicle-Metals02,R-Vehicle-Metals01,439 -R-Vehicle-Metals03,R-Vehicle-Metals02,440 -R-Vehicle-Metals04,R-Struc-Research-Upgrade04,590 -R-Vehicle-Metals04,R-Vehicle-Metals03,590 -R-Vehicle-Metals05,R-Vehicle-Metals04,591 -R-Vehicle-Metals06,R-Vehicle-Metals05,592 -R-Vehicle-Metals07,R-Struc-Research-Upgrade07,593 -R-Vehicle-Metals07,R-Vehicle-Metals06,593 -R-Vehicle-Metals08,R-Vehicle-Metals07,594 -R-Vehicle-Metals09,R-Vehicle-Metals08,595 -R-Vehicle-Prop-Halftracks,R-Sys-Engineering01,465 -R-Vehicle-Prop-Hover,R-Vehicle-Engine02,106 -R-Vehicle-Prop-Hover,R-Struc-Factory-Module,106 -R-Vehicle-Prop-Tracks,R-Sys-Engineering01,105 -R-Vehicle-Prop-Tracks,R-Vehicle-Prop-Halftracks,105 -R-Vehicle-Prop-VTOL,R-Struc-Factory-Upgrade01,518 -R-Vehicle-Prop-VTOL,R-Vehicle-Prop-Hover,518 -R-Vehicle-Prop-VTOL,R-Vehicle-Engine03,518 -R-Vehicle-Prop-Wheels,CAM1RESEARCH,487 -R-Wpn-AAGun-Accuracy01,R-Wpn-RocketSlow-Accuracy03,810 -R-Wpn-AAGun-Accuracy02,R-Wpn-Howitzer-Accuracy01,811 -R-Wpn-AAGun-Accuracy02,R-Wpn-AAGun-Accuracy01,811 -R-Wpn-AAGun-Accuracy03,R-Wpn-Rail-Accuracy01,812 -R-Wpn-AAGun-Accuracy03,R-Wpn-AAGun-Accuracy02,812 -R-Wpn-AAGun-Damage01,R-Wpn-AAGun03,816 -R-Wpn-AAGun-Damage02,R-Wpn-AAGun-Damage01,817 -R-Wpn-AAGun-Damage03,R-Wpn-AAGun-Damage02,818 -R-Wpn-AAGun-Damage04,R-Wpn-Cannon-Damage08,819 -R-Wpn-AAGun-Damage05,R-Wpn-AAGun-Damage04,820 -R-Wpn-AAGun-Damage06,R-Wpn-AAGun-Damage05,821 -R-Wpn-AAGun-ROF01,R-Wpn-AAGun-Damage01,823 -R-Wpn-AAGun-ROF01,R-Wpn-MG-ROF01,823 -R-Wpn-AAGun-ROF02,R-Wpn-AAGun-ROF01,824 -R-Wpn-AAGun-ROF03,R-Wpn-AAGun04,825 -R-Wpn-AAGun-ROF03,R-Wpn-AAGun-ROF02,825 -R-Wpn-AAGun-ROF04,R-Wpn-Cannon-ROF04,826 -R-Wpn-AAGun-ROF05,R-Wpn-AAGun-ROF04,827 -R-Wpn-AAGun-ROF06,R-Wpn-AAGun-ROF05,828 -R-Wpn-AAGun02,R-Wpn-AAGun03,523 -R-Wpn-AAGun02,R-Wpn-AAGun-Damage02,523 -R-Wpn-AAGun03,R-Wpn-MG2Mk1,529 -R-Wpn-AAGun04,R-Wpn-MG4,530 -R-Wpn-AAGun04,R-Wpn-AAGun02,530 -R-Wpn-AALaser,R-Wpn-Energy-ROF03,1151 -R-Wpn-Bomb-Accuracy01,R-Wpn-Mortar-Acc02,1009 -R-Wpn-Bomb-Accuracy01,R-Wpn-Bomb01,1009 -R-Wpn-Bomb-Accuracy01,R-Vehicle-Prop-VTOL,1009 -R-Wpn-Bomb-Accuracy02,R-Wpn-Bomb-Accuracy01,1010 -R-Wpn-Bomb-Accuracy03,R-Wpn-Mortar-Acc02,1011 -R-Wpn-Bomb01,R-Vehicle-Prop-VTOL,830 -R-Wpn-Bomb02,R-Wpn-Bomb01,831 -R-Wpn-Bomb02,R-Wpn-Bomb-Accuracy01,831 -R-Wpn-Bomb03,R-Wpn-Bomb01,832 -R-Wpn-Bomb03,R-Wpn-Flamer-Damage04,832 -R-Wpn-Bomb04,R-Wpn-Flamer-Damage05,833 -R-Wpn-Bomb04,R-Wpn-Bomb03,833 -R-Wpn-Bomb05,R-Wpn-Plasmite-Flamer,1162 -R-Wpn-Bomb05,R-Wpn-Bomb04,1162 -R-Wpn-Bomb06,R-Wpn-EMPCannon,1163 -R-Wpn-Bomb06,R-Wpn-Bomb04,1163 -R-Wpn-Cannon-Accuracy01,R-Wpn-Cannon-Damage02,469 -R-Wpn-Cannon-Accuracy01,R-Struc-Research-Upgrade01,469 -R-Wpn-Cannon-Accuracy02,R-Struc-Research-Upgrade04,626 -R-Wpn-Cannon-Accuracy02,R-Wpn-Cannon-Accuracy01,626 -R-Wpn-Cannon-Damage01,R-Wpn-Cannon1Mk1,392 -R-Wpn-Cannon-Damage02,R-Wpn-Cannon-Damage01,393 -R-Wpn-Cannon-Damage03,R-Wpn-Cannon-Damage02,394 -R-Wpn-Cannon-Damage04,R-Wpn-Cannon-Damage03,600 -R-Wpn-Cannon-Damage05,R-Wpn-Cannon-Damage04,601 -R-Wpn-Cannon-Damage06,R-Wpn-Cannon-Damage05,602 -R-Wpn-Cannon-Damage07,R-Wpn-Cannon-Damage06,603 -R-Wpn-Cannon-Damage08,R-Wpn-Cannon-Damage07,604 -R-Wpn-Cannon-Damage09,R-Wpn-Cannon-Damage08,605 -R-Wpn-Cannon-ROF01,R-Wpn-Cannon-Damage04,397 -R-Wpn-Cannon-ROF02,R-Struc-Factory-Upgrade04,617 -R-Wpn-Cannon-ROF02,R-Wpn-Cannon-ROF01,617 -R-Wpn-Cannon-ROF03,R-Wpn-Cannon-ROF02,618 -R-Wpn-Cannon-ROF04,R-Wpn-Cannon-Damage07,619 -R-Wpn-Cannon-ROF04,R-Wpn-Cannon-ROF03,619 -R-Wpn-Cannon-ROF05,R-Wpn-Cannon-ROF04,620 -R-Wpn-Cannon-ROF06,R-Wpn-Cannon-ROF05,621 -R-Wpn-Cannon1Mk1,R-Wpn-MG-Damage01,149 -R-Wpn-Cannon2Mk1,R-Struc-Factory-Module,193 -R-Wpn-Cannon2Mk1,R-Wpn-Cannon-Damage01,193 -R-Wpn-Cannon3Mk1,R-Wpn-Cannon-Damage03,291 -R-Wpn-Cannon3Mk1,R-Struc-Factory-Module,291 -R-Wpn-Cannon3Mk1,R-Vehicle-Body11,291 -R-Wpn-Cannon3Mk1,R-Wpn-Cannon2Mk1,291 -R-Wpn-Cannon4AMk1,R-Wpn-Cannon-Damage05,282 -R-Wpn-Cannon4AMk1,R-Wpn-Cannon2Mk1,282 -R-Wpn-Cannon5,R-Wpn-Cannon2Mk1,522 -R-Wpn-Cannon5,R-Wpn-Cannon-ROF03,522 -R-Wpn-Cannon6TwinAslt,R-Wpn-Cannon5,1101 -R-Wpn-Cannon6TwinAslt,R-Struc-Research-Upgrade07,1101 -R-Wpn-EMPCannon,R-Sys-SpyTower,1157 -R-Wpn-EMPCannon,R-Sys-Sensor-UpLink,1157 -R-Wpn-Energy-Accuracy01,R-Wpn-Laser01,849 -R-Wpn-Energy-Damage01,R-Wpn-Energy-Accuracy01,852 -R-Wpn-Energy-Damage02,R-Wpn-Energy-Damage01,853 -R-Wpn-Energy-Damage03,R-Wpn-Energy-Damage02,854 -R-Wpn-Energy-ROF01,R-Wpn-Energy-Damage01,855 -R-Wpn-Energy-ROF02,R-Wpn-Energy-ROF01,856 -R-Wpn-Energy-ROF03,R-Wpn-Energy-ROF02,857 -R-Wpn-Flame2,R-Vehicle-Body05,524 -R-Wpn-Flame2,R-Wpn-Flamer-Damage04,524 -R-Wpn-Flame2,R-Wpn-Flamer01Mk1,524 -R-Wpn-Flamer-Damage01,R-Wpn-Flamer01Mk1,385 -R-Wpn-Flamer-Damage02,R-Wpn-Flamer-Damage01,386 -R-Wpn-Flamer-Damage03,R-Wpn-Flamer-Damage02,387 -R-Wpn-Flamer-Damage04,R-Wpn-Flamer-Damage03,834 -R-Wpn-Flamer-Damage05,R-Wpn-Flamer-Damage04,835 -R-Wpn-Flamer-Damage06,R-Wpn-Flamer-Damage05,836 -R-Wpn-Flamer-Damage07,R-Wpn-Flamer-Damage06,1141 -R-Wpn-Flamer-Damage07,R-Wpn-Plasmite-Flamer,1141 -R-Wpn-Flamer-Damage08,R-Wpn-Flamer-Damage07,1142 -R-Wpn-Flamer-Damage09,R-Wpn-Flamer-Damage08,1143 -R-Wpn-Flamer-ROF01,R-Wpn-Flamer-Damage02,388 -R-Wpn-Flamer-ROF02,R-Wpn-Flame2,389 -R-Wpn-Flamer-ROF03,R-Wpn-Flamer-ROF02,390 -R-Wpn-Flamer01Mk1,R-Wpn-MG1Mk1,216 -R-Wpn-Flamer01Mk1,R-Vehicle-Engine01,216 -R-Wpn-Howitzer-Accuracy01,R-Wpn-HowitzerMk1,837 -R-Wpn-Howitzer-Accuracy02,R-Struc-Research-Upgrade04,838 -R-Wpn-Howitzer-Accuracy02,R-Wpn-Howitzer-Accuracy01,838 -R-Wpn-Howitzer-Accuracy03,R-Wpn-Howitzer-Accuracy02,839 -R-Wpn-Howitzer-Damage01,R-Wpn-HowitzerMk1,843 -R-Wpn-Howitzer-Damage02,R-Wpn-Howitzer-Damage01,844 -R-Wpn-Howitzer-Damage03,R-Wpn-Howitzer-Damage02,845 -R-Wpn-Howitzer-Damage04,R-Wpn-Howitzer03-Rot,846 -R-Wpn-Howitzer-Damage04,R-Wpn-Cannon-Damage07,846 -R-Wpn-Howitzer-Damage05,R-Wpn-Howitzer-Damage04,847 -R-Wpn-Howitzer-Damage06,R-Wpn-Howitzer-Damage05,848 -R-Wpn-Howitzer-Incenediary,R-Wpn-Flame2,1045 -R-Wpn-Howitzer-Incenediary,R-Wpn-Howitzer-Damage03,1045 -R-Wpn-Howitzer-Incenediary,R-Wpn-HvyHowitzer,1045 -R-Wpn-Howitzer-ROF01,R-Wpn-HvyHowitzer,1022 -R-Wpn-Howitzer-ROF02,R-Wpn-Howitzer-ROF01,1023 -R-Wpn-Howitzer-ROF03,R-Wpn-Howitzer-ROF02,1024 -R-Wpn-Howitzer-ROF04,R-Wpn-Howitzer-ROF03,1025 -R-Wpn-Howitzer03-Rot,R-Wpn-Howitzer-Damage03,525 -R-Wpn-Howitzer03-Rot,R-Wpn-HvyHowitzer,525 -R-Wpn-HowitzerMk1,R-Wpn-Mortar-Damage04,296 -R-Wpn-HowitzerMk1,R-Sys-Sensor-Upgrade01,296 -R-Wpn-HvArtMissile,R-Wpn-MdArtMissile,1032 -R-Wpn-HvArtMissile,R-Wpn-Missile-Damage03,1032 -R-Wpn-HvyHowitzer,R-Wpn-Howitzer-Damage02,472 -R-Wpn-HvyHowitzer,R-Wpn-HowitzerMk1,472 -R-Wpn-HvyLaser,R-Wpn-Laser02,1103 -R-Wpn-Laser01,R-Struc-Research-Upgrade09,531 -R-Wpn-Laser01,R-Sys-Sensor-Upgrade02,531 -R-Wpn-Laser02,R-Wpn-Laser01,532 -R-Wpn-LasSat,R-Struc-Research-Upgrade09,1108 -R-Wpn-LasSat,R-Sys-Sensor-UpLink,1108 -R-Wpn-MdArtMissile,R-Wpn-Missile-Damage02,1031 -R-Wpn-MdArtMissile,R-Wpn-Rocket06-IDF,1031 -R-Wpn-MdArtMissile,R-Wpn-Missile2A-T,1031 -R-Wpn-MG-Damage01,R-Wpn-MG1Mk1,362 -R-Wpn-MG-Damage02,R-Wpn-MG-Damage01,364 -R-Wpn-MG-Damage03,R-Wpn-MG-Damage02,366 -R-Wpn-MG-ROF01,R-Struc-Factory-Upgrade01,363 -R-Wpn-MG-ROF01,R-Wpn-MG-Damage03,363 -R-Wpn-MG-ROF02,R-Wpn-MG-ROF01,365 -R-Wpn-MG-ROF03,R-Wpn-MG-ROF02,367 -R-Wpn-MG1Mk1,CAM1WEAPONS,180 -R-Wpn-MG2Mk1,R-Wpn-MG-Damage02,184 -R-Wpn-MG3Mk1,R-Wpn-MG-Damage02,189 -R-Wpn-MG3Mk1,R-Wpn-MG2Mk1,189 -R-Wpn-MG4,R-Wpn-MG3Mk1,527 -R-Wpn-MG4,R-Wpn-MG-ROF03,527 -R-Wpn-MG5,R-Struc-Research-Upgrade07,1160 -R-Wpn-MG5,R-Wpn-MG4,1160 -R-Wpn-Missile-Accuracy01,R-Wpn-Missile-Damage01,864 -R-Wpn-Missile-Accuracy02,R-Wpn-Missile-Accuracy01,865 -R-Wpn-Missile-Damage01,R-Wpn-Missile-LtSAM,867 -R-Wpn-Missile-Damage02,R-Wpn-Missile-Damage01,868 -R-Wpn-Missile-Damage03,R-Wpn-Missile-Damage02,869 -R-Wpn-Missile-HvSAM,R-Wpn-Missile-Damage03,1030 -R-Wpn-Missile-HvSAM,R-Wpn-Missile-LtSAM,1030 -R-Wpn-Missile-LtSAM,R-Sys-VTOLStrike-Tower01,1029 -R-Wpn-Missile-LtSAM,R-Wpn-Missile2A-T,1029 -R-Wpn-Missile-ROF01,CAM1RESEARCH,870 -R-Wpn-Missile-ROF02,CAM1RESEARCH,871 -R-Wpn-Missile-ROF03,CAM1RESEARCH,872 -R-Wpn-Missile2A-T,R-Wpn-Rocket07-Tank-Killer,538 -R-Wpn-Missile2A-T,R-Struc-Research-Upgrade07,538 -R-Wpn-Mortar-Acc01,R-Struc-Research-Upgrade02,1012 -R-Wpn-Mortar-Acc01,R-Wpn-Mortar-Damage01,1012 -R-Wpn-Mortar-Acc02,R-Wpn-Mortar-Acc01,1013 -R-Wpn-Mortar-Acc02,R-Struc-Research-Upgrade04,1013 -R-Wpn-Mortar-Acc03,R-Struc-Research-Upgrade08,1014 -R-Wpn-Mortar-Acc03,R-Wpn-Mortar-Acc02,1014 -R-Wpn-Mortar-Damage01,R-Wpn-Mortar01Lt,400 -R-Wpn-Mortar-Damage02,R-Wpn-Mortar-Damage01,401 -R-Wpn-Mortar-Damage03,R-Wpn-Mortar-Damage02,402 -R-Wpn-Mortar-Damage04,R-Wpn-Mortar02Hvy,882 -R-Wpn-Mortar-Damage04,R-Wpn-Mortar-Damage03,882 -R-Wpn-Mortar-Damage05,R-Wpn-Mortar-Damage04,886 -R-Wpn-Mortar-Damage06,R-Wpn-Mortar-Damage05,887 -R-Wpn-Mortar-Incenediary,R-Struc-Research-Upgrade07,1079 -R-Wpn-Mortar-Incenediary,R-Wpn-Mortar02Hvy,1079 -R-Wpn-Mortar-Incenediary,R-Wpn-Flame2,1079 -R-Wpn-Mortar-ROF01,R-Wpn-Mortar-Damage03,403 -R-Wpn-Mortar-ROF02,R-Wpn-Mortar-ROF01,404 -R-Wpn-Mortar-ROF02,R-Wpn-Mortar02Hvy,404 -R-Wpn-Mortar-ROF03,R-Wpn-Mortar-ROF02,405 -R-Wpn-Mortar-ROF04,R-Wpn-Cannon-ROF04,956 -R-Wpn-Mortar01Lt,R-Wpn-Cannon-Damage01,212 -R-Wpn-Mortar01Lt,R-Struc-Factory-Module,212 -R-Wpn-Mortar02Hvy,R-Vehicle-Metals01,221 -R-Wpn-Mortar02Hvy,R-Wpn-Mortar-Damage02,221 -R-Wpn-Mortar02Hvy,R-Wpn-Mortar01Lt,221 -R-Wpn-Mortar3,R-Wpn-Mortar02Hvy,528 -R-Wpn-Mortar3,R-Wpn-Mortar-ROF03,528 -R-Wpn-MortarEMP,R-Wpn-MortarEMP,1150 -R-Wpn-PlasmaCannon,R-Wpn-HvyLaser,1109 -R-Wpn-Plasmite-Flamer,R-Wpn-Flame2,1076 -R-Wpn-Plasmite-Flamer,R-Struc-Research-Upgrade07,1076 -R-Wpn-Rail-Accuracy01,R-Wpn-Rail-Damage01,891 -R-Wpn-Rail-Damage01,R-Wpn-RailGun01,894 -R-Wpn-Rail-Damage02,R-Wpn-Rail-Damage01,895 -R-Wpn-Rail-Damage03,R-Wpn-Rail-Damage02,896 -R-Wpn-Rail-Damage03,R-Wpn-RailGun02,896 -R-Wpn-Rail-ROF01,R-Wpn-Rail-Accuracy01,897 -R-Wpn-Rail-ROF02,R-Wpn-Rail-ROF01,898 -R-Wpn-Rail-ROF03,R-Wpn-Rail-ROF02,899 -R-Wpn-RailGun01,R-Wpn-Cannon4AMk1,539 -R-Wpn-RailGun01,R-Struc-Research-Upgrade08,539 -R-Wpn-RailGun01,R-Wpn-Cannon-Damage07,539 -R-Wpn-RailGun02,R-Wpn-Rail-Damage02,540 -R-Wpn-RailGun02,R-Wpn-RailGun01,540 -R-Wpn-RailGun03,R-Wpn-Rail-Damage03,541 -R-Wpn-RailGun03,R-Wpn-RailGun02,541 -R-Wpn-Rocket-Accuracy01,R-Struc-Research-Upgrade01,900 -R-Wpn-Rocket-Accuracy01,R-Wpn-Rocket-Damage02,900 -R-Wpn-Rocket-Accuracy02,R-Wpn-Rocket-Accuracy01,901 -R-Wpn-Rocket-Accuracy02,R-Struc-Research-Upgrade02,901 -R-Wpn-Rocket-Damage01,R-Wpn-Rocket05-MiniPod,476 -R-Wpn-Rocket-Damage02,R-Wpn-Rocket-Damage01,477 -R-Wpn-Rocket-Damage03,R-Wpn-Rocket-Damage02,903 -R-Wpn-Rocket-Damage04,R-Wpn-Rocket-Damage03,904 -R-Wpn-Rocket-Damage05,R-Wpn-Rocket-Damage04,905 -R-Wpn-Rocket-Damage06,R-Wpn-Rocket-Damage05,906 -R-Wpn-Rocket-ROF01,CAM1RESEARCH,474 -R-Wpn-Rocket-ROF02,CAM1RESEARCH,475 -R-Wpn-Rocket-ROF03,CAM1RESEARCH,913 -R-Wpn-Rocket01-LtAT,R-Wpn-Rocket-Damage02,126 -R-Wpn-Rocket02-MRL,R-Wpn-Rocket-Damage01,208 -R-Wpn-Rocket03-HvAT,R-Wpn-Rocket01-LtAT,461 -R-Wpn-Rocket03-HvAT,R-Wpn-RocketSlow-Damage03,461 -R-Wpn-Rocket05-MiniPod,R-Vehicle-Engine01,124 -R-Wpn-Rocket06-IDF,R-Wpn-Rocket02-MRL,295 -R-Wpn-Rocket06-IDF,R-Sys-CBSensor-Tower01,295 -R-Wpn-Rocket07-Tank-Killer,R-Wpn-RocketSlow-Accuracy02,630 -R-Wpn-Rocket07-Tank-Killer,R-Wpn-RocketSlow-Damage04,630 -R-Wpn-RocketSlow-Accuracy01,R-Wpn-RocketSlow-Damage01,925 -R-Wpn-RocketSlow-Accuracy01,R-Struc-Research-Upgrade02,925 -R-Wpn-RocketSlow-Accuracy02,R-Wpn-RocketSlow-Accuracy01,926 -R-Wpn-RocketSlow-Accuracy03,R-Struc-Research-Upgrade04,927 -R-Wpn-RocketSlow-Accuracy03,R-Wpn-RocketSlow-Accuracy02,927 -R-Wpn-RocketSlow-Damage01,R-Wpn-Rocket01-LtAT,931 -R-Wpn-RocketSlow-Damage02,R-Wpn-RocketSlow-Damage01,932 -R-Wpn-RocketSlow-Damage03,R-Wpn-RocketSlow-Damage02,933 -R-Wpn-RocketSlow-Damage04,R-Wpn-RocketSlow-Damage03,934 -R-Wpn-RocketSlow-Damage05,R-Wpn-RocketSlow-Damage04,935 -R-Wpn-RocketSlow-Damage06,R-Wpn-RocketSlow-Damage05,936 -R-Wpn-RocketSlow-ROF01,R-Wpn-Rocket-Damage04,942 -R-Wpn-RocketSlow-ROF02,R-Wpn-RocketSlow-ROF01,943 +CAM1DEFENSES,CAM1RESEARCH,456 +CAM1STRUCTURES,CAM1RESEARCH,457 +CAM1SYSTEMS,CAM1RESEARCH,455 +CAM1WEAPONS,CAM1RESEARCH,454 +R-Comp-CommandTurret01,R-Struc-CommandRelay,407 +R-Comp-CommandTurret02,R-Vehicle-Metals03,1164 +R-Comp-CommandTurret02,R-Comp-CommandTurret01,1164 +R-Comp-CommandTurret03,R-Comp-CommandTurret02,1166 +R-Comp-CommandTurret03,R-Vehicle-Metals06,1166 +R-Comp-CommandTurret04,R-Comp-CommandTurret03,1167 +R-Comp-CommandTurret04,R-Vehicle-Metals09,1167 +R-Comp-SynapticLink,R-Comp-SynapticLink,376 +R-Cyborg-Armor-Heat01,R-Cyborg-Metals04,988 +R-Cyborg-Armor-Heat02,R-Cyborg-Armor-Heat01,989 +R-Cyborg-Armor-Heat03,R-Cyborg-Armor-Heat02,990 +R-Cyborg-Armor-Heat04,R-Cyborg-Armor-Heat03,991 +R-Cyborg-Armor-Heat04,R-Cyborg-Metals07,991 +R-Cyborg-Armor-Heat05,R-Cyborg-Armor-Heat04,992 +R-Cyborg-Armor-Heat06,R-Cyborg-Armor-Heat05,993 +R-Cyborg-Armor-Heat07,R-Cyborg-Armor-Heat06,1082 +R-Cyborg-Armor-Heat08,R-Cyborg-Armor-Heat07,1083 +R-Cyborg-Armor-Heat09,R-Cyborg-Armor-Heat08,1084 +R-Cyborg-Hvywpn-A-T,R-Cyborg-Wpn-ATMiss-Grd,1112 +R-Cyborg-Hvywpn-A-T,R-Wpn-Missile2A-T,1112 +R-Cyborg-Hvywpn-Acannon,R-Wpn-Cannon5,1092 +R-Cyborg-Hvywpn-Acannon,R-Cyborg-Hvywpn-HPV,1092 +R-Cyborg-Hvywpn-HPV,R-Cyborg-Hvywpn-Mcannon,960 +R-Cyborg-Hvywpn-HPV,R-Wpn-Cannon4AMk1,960 +R-Cyborg-Hvywpn-Mcannon,R-Cyborg-Wpn-Cannon,1090 +R-Cyborg-Hvywpn-Mcannon,R-Cyborg-Metals04,1090 +R-Cyborg-Hvywpn-Mcannon,R-Wpn-Cannon2Mk1,1090 +R-Cyborg-Hvywpn-PulseLsr,R-Wpn-Laser02,1110 +R-Cyborg-Hvywpn-RailGunner,R-Wpn-RailGun02,1111 +R-Cyborg-Hvywpn-TK,R-Cyborg-Metals04,1094 +R-Cyborg-Hvywpn-TK,R-Wpn-Rocket07-Tank-Killer,1094 +R-Cyborg-Metals01,R-Struc-Factory-Module,449 +R-Cyborg-Metals01,R-Struc-Research-Module,449 +R-Cyborg-Metals01,R-Cyborg-Wpn-MG,449 +R-Cyborg-Metals02,R-Cyborg-Metals01,450 +R-Cyborg-Metals03,R-Cyborg-Metals02,451 +R-Cyborg-Metals03,R-Cyborg-Wpn-MG,451 +R-Cyborg-Metals04,R-Cyborg-Metals03,581 +R-Cyborg-Metals04,R-Struc-Research-Upgrade04,581 +R-Cyborg-Metals05,R-Cyborg-Metals04,582 +R-Cyborg-Metals06,R-Cyborg-Metals05,583 +R-Cyborg-Metals07,R-Cyborg-Metals06,584 +R-Cyborg-Metals08,R-Cyborg-Metals07,585 +R-Cyborg-Metals09,R-Cyborg-Metals08,586 +R-Cyborg-Sys-ComEng,R-Sys-Engineering01,1043 +R-Cyborg-Sys-ComEng,R-Cyborg-Wpn-MG,1043 +R-Cyborg-Sys-Mechanic,R-Sys-MobileRepairTurret01,1044 +R-Cyborg-Sys-Mechanic,R-Cyborg-Wpn-MG,1044 +R-Cyborg-Transport,R-Struc-Factory-Cyborg,1081 +R-Cyborg-Transport,R-Struc-VTOLFactory,1081 +R-Cyborg-Wpn-ATMiss-Grd,R-Wpn-Missile2A-T,643 +R-Cyborg-Wpn-Cannon,R-Cyborg-Wpn-MG,425 +R-Cyborg-Wpn-Cannon,R-Wpn-Cannon1Mk1,425 +R-Cyborg-Wpn-Flamer,R-Cyborg-Wpn-MG,424 +R-Cyborg-Wpn-Flamer,R-Wpn-Flamer01Mk1,424 +R-Cyborg-Wpn-Grenade,R-Wpn-Mortar01Lt,1042 +R-Cyborg-Wpn-Grenade,R-Cyborg-Wpn-MG,1042 +R-Cyborg-Wpn-Laser1-Grd,R-Wpn-Laser01,644 +R-Cyborg-Wpn-MG,R-Struc-Factory-Cyborg,361 +R-Cyborg-Wpn-Rail1-Grd,R-Wpn-RailGun01,642 +R-Cyborg-Wpn-Rocket,R-Cyborg-Wpn-MG,427 +R-Cyborg-Wpn-Rocket,R-Wpn-Rocket01-LtAT,427 +R-Cyborg-Wpn-RotMG-Grd,R-Wpn-MG4,641 +R-Cyborg-Wpn-Thermite,R-Wpn-Flame2,1041 +R-Cyborg-Wpn-Thermite,R-Cyborg-Wpn-Flamer,1041 +R-Defense-AA-Laser,R-Wpn-AALaser,1152 +R-Defense-AASite-QuadBof,R-Wpn-AAGun02,555 +R-Defense-AASite-QuadMg1,R-Wpn-AAGun03,556 +R-Defense-AASite-QuadRotMg,R-Wpn-AAGun04,557 +R-Defense-AASite-QuadRotMg,R-Defense-AASite-QuadMg1,557 +R-Defense-Cannon6,R-Defense-WallUpgrade04,1102 +R-Defense-Cannon6,R-Wpn-Cannon6TwinAslt,1102 +R-Defense-EMPCannon,R-Wpn-EMPCannon,1116 +R-Defense-Emplacement-HPVcannon,R-Wpn-Cannon4AMk1,663 +R-Defense-EMPMortar,R-Defense-EMPCannon,1153 +R-Defense-GuardTower-ATMiss,R-Wpn-Missile2A-T,566 +R-Defense-GuardTower-Rail1,R-Wpn-RailGun01,568 +R-Defense-HardcreteWall,R-Sys-Engineering01,142 +R-Defense-HeavyLas,R-Wpn-HvyLaser,1105 +R-Defense-Howitzer,R-Wpn-HowitzerMk1,569 +R-Defense-Howitzer-Incenediary,R-Defense-Howitzer,1075 +R-Defense-Howitzer-Incenediary,R-Wpn-Howitzer-Incenediary,1075 +R-Defense-HvyA-Trocket,R-Wpn-Rocket07-Tank-Killer,662 +R-Defense-HvyArtMissile,R-Wpn-HvArtMissile,668 +R-Defense-HvyFlamer,R-Wpn-Flame2,653 +R-Defense-HvyHowitzer,R-Defense-Howitzer,656 +R-Defense-HvyHowitzer,R-Wpn-HvyHowitzer,656 +R-Defense-HvyMor,R-Defense-MortarPit,660 +R-Defense-HvyMor,R-Wpn-Mortar02Hvy,660 +R-Defense-IDFRocket,R-Wpn-Rocket06-IDF,661 +R-Defense-IDFRocket,R-Defense-MRL,661 +R-Defense-MassDriver,R-Wpn-RailGun03,1129 +R-Defense-MassDriver,R-Wpn-Rail-ROF03,1129 +R-Defense-MassDriver,R-Defense-WallUpgrade10,1129 +R-Defense-MdArtMissile,R-Wpn-MdArtMissile,667 +R-Defense-MortarPit,R-Defense-HardcreteWall,571 +R-Defense-MortarPit,R-Wpn-Mortar01Lt,571 +R-Defense-MortarPit-Incenediary,R-Wpn-Mortar-Incenediary,1080 +R-Defense-MortarPit-Incenediary,R-Defense-HvyMor,1080 +R-Defense-MRL,R-Wpn-Rocket02-MRL,657 +R-Defense-MRL,R-Defense-HardcreteWall,657 +R-Defense-Pillbox01,R-Defense-HardcreteWall,419 +R-Defense-Pillbox01,R-Wpn-MG-Damage01,419 +R-Defense-Pillbox04,R-Defense-HardcreteWall,422 +R-Defense-Pillbox04,R-Wpn-Cannon1Mk1,422 +R-Defense-Pillbox05,R-Defense-HardcreteWall,423 +R-Defense-Pillbox05,R-Wpn-Flamer01Mk1,423 +R-Defense-Pillbox06,R-Defense-HardcreteWall,468 +R-Defense-Pillbox06,R-Wpn-Rocket01-LtAT,468 +R-Defense-PlasmaCannon,R-Wpn-PlasmaCannon,1114 +R-Defense-PlasmiteFlamer,R-Wpn-Plasmite-Flamer,1077 +R-Defense-PrisLas,R-Wpn-Laser01,561 +R-Defense-PulseLas,R-Wpn-Laser02,664 +R-Defense-Rail2,R-Wpn-RailGun02,665 +R-Defense-Rail3,R-Wpn-RailGun03,666 +R-Defense-RotHow,R-Wpn-Howitzer03-Rot,563 +R-Defense-RotMG,R-Wpn-MG4,658 +R-Defense-RotMor,R-Wpn-Mortar3,564 +R-Defense-SamSite1,R-Wpn-Missile-LtSAM,654 +R-Defense-SamSite2,R-Wpn-Missile-HvSAM,655 +R-Defense-Super-Cannon,R-Wpn-Cannon-Damage05,1130 +R-Defense-Super-Cannon,R-Defense-WallUpgrade05,1130 +R-Defense-Super-Missile,R-Defense-WallUpgrade10,1132 +R-Defense-Super-Missile,R-Wpn-Missile2A-T,1132 +R-Defense-Super-Missile,R-Wpn-Missile-ROF03,1132 +R-Defense-Super-Rocket,R-Wpn-RocketSlow-Accuracy03,1131 +R-Defense-Super-Rocket,R-Defense-WallUpgrade05,1131 +R-Defense-Super-Rocket,R-Wpn-RocketSlow-Damage06,1131 +R-Defense-TankTrap01,R-Sys-Engineering01,409 +R-Defense-Tower01,R-Wpn-MG1Mk1,411 +R-Defense-Tower06,R-Defense-HardcreteWall,416 +R-Defense-Tower06,R-Wpn-Rocket05-MiniPod,416 +R-Defense-Wall-RotMg,R-Wpn-MG4,574 +R-Defense-Wall-RotMg,R-Defense-RotMG,574 +R-Defense-Wall-VulcanCan,R-Wpn-Cannon5,575 +R-Defense-WallTower-A-Tmiss,R-Wpn-Missile2A-T,671 +R-Defense-WallTower-DoubleAAgun,R-Wpn-AAGun02,1158 +R-Defense-WallTower-HPVcannon,R-Wpn-Cannon4AMk1,670 +R-Defense-WallTower-HvyA-Trocket,R-Wpn-Rocket07-Tank-Killer,669 +R-Defense-WallTower-PulseLas,R-Wpn-Laser01,577 +R-Defense-WallTower-QuadRotAA,R-Defense-HardcreteWall,1155 +R-Defense-WallTower-QuadRotAA,R-Defense-AASite-QuadRotMg,1155 +R-Defense-WallTower-Rail2,R-Wpn-RailGun02,578 +R-Defense-WallTower-Rail3,R-Wpn-RailGun03,953 +R-Defense-WallTower-SamHvy,R-Wpn-Missile-HvSAM,1154 +R-Defense-WallTower-SamHvy,R-Defense-WallUpgrade07,1154 +R-Defense-WallTower-SamSite,R-Defense-WallUpgrade07,1159 +R-Defense-WallTower-SamSite,R-Defense-SamSite1,1159 +R-Defense-WallTower-TwinAGun,R-Wpn-MG5,1161 +R-Defense-WallTower01,R-Defense-Pillbox01,248 +R-Defense-WallTower01,R-Defense-HardcreteWall,248 +R-Defense-WallTower01,R-Wpn-MG3Mk1,248 +R-Defense-WallTower02,R-Defense-HardcreteWall,247 +R-Defense-WallTower02,R-Wpn-Cannon1Mk1,247 +R-Defense-WallTower03,R-Wpn-Cannon2Mk1,251 +R-Defense-WallTower03,R-Defense-WallTower02,251 +R-Defense-WallTower04,R-Defense-WallTower03,249 +R-Defense-WallTower04,R-Wpn-Cannon3Mk1,249 +R-Defense-WallTower06,R-Wpn-Rocket01-LtAT,467 +R-Defense-WallTower06,R-Defense-HardcreteWall,467 +R-Defense-WallUpgrade01,R-Sys-Engineering01,374 +R-Defense-WallUpgrade01,R-Defense-HardcreteWall,374 +R-Defense-WallUpgrade02,R-Defense-WallUpgrade01,432 +R-Defense-WallUpgrade03,R-Defense-WallUpgrade02,434 +R-Defense-WallUpgrade04,R-Sys-Engineering02,673 +R-Defense-WallUpgrade04,R-Struc-Research-Upgrade04,673 +R-Defense-WallUpgrade04,R-Defense-WallUpgrade03,673 +R-Defense-WallUpgrade05,R-Defense-WallUpgrade04,674 +R-Defense-WallUpgrade06,R-Defense-WallUpgrade05,675 +R-Defense-WallUpgrade07,R-Defense-WallUpgrade06,676 +R-Defense-WallUpgrade07,R-Sys-Engineering03,676 +R-Defense-WallUpgrade08,R-Defense-WallUpgrade07,677 +R-Defense-WallUpgrade09,R-Defense-WallUpgrade08,678 +R-Defense-WallUpgrade10,R-Defense-WallUpgrade09,1133 +R-Defense-WallUpgrade11,R-Defense-WallUpgrade10,1134 +R-Defense-WallUpgrade12,R-Defense-WallUpgrade11,1135 +R-Struc-CommandRelay,R-Sys-Sensor-Tower01,375 +R-Struc-Factory-Cyborg,R-Comp-SynapticLink,360 +R-Struc-Factory-Cyborg,R-Wpn-MG-Damage01,360 +R-Struc-Factory-Cyborg-Upgrade01,R-Struc-Factory-Module,687 +R-Struc-Factory-Cyborg-Upgrade01,R-Struc-Factory-Cyborg,687 +R-Struc-Factory-Cyborg-Upgrade02,R-Struc-Factory-Cyborg-Upgrade01,688 +R-Struc-Factory-Cyborg-Upgrade03,R-Struc-Factory-Cyborg-Upgrade02,689 +R-Struc-Factory-Cyborg-Upgrade04,R-Struc-Factory-Cyborg-Upgrade03,690 +R-Struc-Factory-Cyborg-Upgrade05,R-Struc-Factory-Cyborg-Upgrade04,691 +R-Struc-Factory-Cyborg-Upgrade06,R-Struc-Factory-Cyborg-Upgrade05,692 +R-Struc-Factory-Cyborg-Upgrade07,R-Sys-Engineering03,1147 +R-Struc-Factory-Cyborg-Upgrade08,R-Struc-Factory-Cyborg-Upgrade07,1148 +R-Struc-Factory-Cyborg-Upgrade09,R-Struc-Factory-Cyborg-Upgrade08,1149 +R-Struc-Factory-Module,R-Struc-Factory-Cyborg,166 +R-Struc-Factory-Module,R-Sys-Engineering01,166 +R-Struc-Factory-Module,R-Struc-PowerModuleMk1,166 +R-Struc-Factory-Upgrade01,R-Struc-Factory-Module,444 +R-Struc-Factory-Upgrade02,R-Struc-Factory-Upgrade01,445 +R-Struc-Factory-Upgrade03,R-Struc-Factory-Upgrade02,446 +R-Struc-Factory-Upgrade04,R-Struc-Factory-Upgrade03,680 +R-Struc-Factory-Upgrade05,R-Struc-Factory-Upgrade04,681 +R-Struc-Factory-Upgrade06,R-Struc-Factory-Upgrade05,682 +R-Struc-Factory-Upgrade07,R-Sys-Engineering03,1144 +R-Struc-Factory-Upgrade08,R-Struc-Factory-Upgrade07,1145 +R-Struc-Factory-Upgrade09,R-Struc-Factory-Upgrade08,1146 +R-Struc-Materials01,R-Defense-WallUpgrade01,435 +R-Struc-Materials02,R-Struc-Materials01,436 +R-Struc-Materials03,R-Struc-Materials02,437 +R-Struc-Materials04,R-Defense-WallUpgrade04,711 +R-Struc-Materials04,R-Struc-Materials03,711 +R-Struc-Materials05,R-Struc-Materials04,712 +R-Struc-Materials06,R-Struc-Materials05,713 +R-Struc-Materials07,R-Defense-WallUpgrade07,714 +R-Struc-Materials07,R-Struc-Materials06,714 +R-Struc-Materials08,R-Struc-Materials07,715 +R-Struc-Materials09,R-Struc-Materials08,716 +R-Struc-Power-Upgrade01,R-Struc-Research-Upgrade04,718 +R-Struc-Power-Upgrade01,R-Struc-PowerModuleMk1,718 +R-Struc-Power-Upgrade01b,R-Struc-Power-Upgrade01,1038 +R-Struc-Power-Upgrade01c,R-Struc-Power-Upgrade01b,1039 +R-Struc-Power-Upgrade02,R-Struc-Research-Upgrade07,719 +R-Struc-Power-Upgrade02,R-Struc-Power-Upgrade01c,719 +R-Struc-Power-Upgrade03,R-Struc-Power-Upgrade02,1036 +R-Struc-Power-Upgrade03a,R-Struc-Power-Upgrade03,1040 +R-Struc-PowerModuleMk1,R-Vehicle-Engine01,225 +R-Struc-RepairFacility,R-Sys-MobileRepairTurret01,281 +R-Struc-RepairFacility,R-Struc-Factory-Module,281 +R-Struc-Research-Module,R-Struc-CommandRelay,118 +R-Struc-Research-Module,R-Comp-SynapticLink,118 +R-Struc-Research-Upgrade01,R-Struc-Research-Module,441 +R-Struc-Research-Upgrade02,R-Struc-Research-Upgrade01,442 +R-Struc-Research-Upgrade03,R-Struc-Research-Upgrade02,443 +R-Struc-Research-Upgrade04,R-Struc-Research-Upgrade03,720 +R-Struc-Research-Upgrade05,R-Struc-Research-Upgrade04,721 +R-Struc-Research-Upgrade06,R-Struc-Research-Upgrade05,722 +R-Struc-Research-Upgrade07,R-Struc-Research-Upgrade06,723 +R-Struc-Research-Upgrade08,R-Struc-Research-Upgrade07,724 +R-Struc-Research-Upgrade09,R-Struc-Research-Upgrade08,725 +R-Struc-RprFac-Upgrade01,R-Struc-Factory-Upgrade01,499 +R-Struc-RprFac-Upgrade01,R-Struc-RepairFacility,499 +R-Struc-RprFac-Upgrade02,R-Struc-RprFac-Upgrade01,500 +R-Struc-RprFac-Upgrade02,R-Struc-Factory-Upgrade02,500 +R-Struc-RprFac-Upgrade03,R-Struc-Factory-Upgrade03,501 +R-Struc-RprFac-Upgrade03,R-Struc-RprFac-Upgrade02,501 +R-Struc-RprFac-Upgrade04,R-Struc-RprFac-Upgrade03,727 +R-Struc-RprFac-Upgrade05,R-Struc-RprFac-Upgrade04,728 +R-Struc-RprFac-Upgrade06,R-Struc-RprFac-Upgrade05,729 +R-Struc-VTOLFactory,R-Vehicle-Prop-VTOL,520 +R-Struc-VTOLFactory-Upgrade01,R-Struc-VTOLPad,697 +R-Struc-VTOLFactory-Upgrade02,R-Struc-VTOLFactory-Upgrade01,698 +R-Struc-VTOLFactory-Upgrade03,R-Struc-VTOLFactory-Upgrade02,699 +R-Struc-VTOLFactory-Upgrade04,R-Struc-VTOLFactory-Upgrade03,700 +R-Struc-VTOLFactory-Upgrade05,R-Struc-VTOLFactory-Upgrade04,701 +R-Struc-VTOLFactory-Upgrade06,R-Struc-VTOLFactory-Upgrade05,702 +R-Struc-VTOLPad,R-Vehicle-Prop-VTOL,519 +R-Struc-VTOLPad,R-Struc-VTOLFactory,519 +R-Struc-VTOLPad-Upgrade01,R-Struc-VTOLPad,704 +R-Struc-VTOLPad-Upgrade02,R-Struc-VTOLPad-Upgrade01,705 +R-Struc-VTOLPad-Upgrade03,R-Struc-VTOLPad-Upgrade02,706 +R-Struc-VTOLPad-Upgrade04,R-Struc-VTOLFactory-Upgrade03,707 +R-Struc-VTOLPad-Upgrade05,R-Struc-VTOLPad-Upgrade04,708 +R-Struc-VTOLPad-Upgrade06,R-Struc-VTOLPad-Upgrade05,709 +R-Sys-Autorepair-General,R-Struc-Research-Upgrade08,1099 +R-Sys-CBSensor-Tower01,R-Sys-Sensor-Upgrade01,769 +R-Sys-CBSensor-Tower01,R-Wpn-Mortar-Damage03,769 +R-Sys-CBSensor-Turret01,R-Sys-CBSensor-Tower01,766 +R-Sys-Engineering01,CAM1SYSTEMS,290 +R-Sys-Engineering02,R-Sys-Engineering01,749 +R-Sys-Engineering02,R-Struc-Research-Upgrade04,749 +R-Sys-Engineering03,R-Struc-Research-Upgrade08,750 +R-Sys-Engineering03,R-Sys-Engineering02,750 +R-Sys-MobileRepairTurret01,R-Sys-Engineering01,430 +R-Sys-MobileRepairTurretHvy,R-Sys-Engineering03,1088 +R-Sys-Resistance-Circuits,R-Sys-Engineering03,1100 +R-Sys-Resistance-Circuits,R-Struc-Research-Upgrade08,1100 +R-Sys-Resistance-Circuits,R-Sys-Sensor-WSTower,1100 +R-Sys-Sensor-Tower01,R-Defense-Tower01,243 +R-Sys-Sensor-Tower01,R-Sys-Sensor-Turret01,243 +R-Sys-Sensor-Tower02,R-Defense-WallUpgrade02,628 +R-Sys-Sensor-Tower02,R-Sys-Sensor-Tower01,628 +R-Sys-Sensor-Turret01,CAM1SYSTEMS,262 +R-Sys-Sensor-Upgrade01,R-Struc-Research-Upgrade04,463 +R-Sys-Sensor-Upgrade01,R-Sys-Sensor-Tower01,463 +R-Sys-Sensor-Upgrade02,R-Sys-Sensor-Upgrade01,1035 +R-Sys-Sensor-UpLink,R-Struc-Research-Upgrade08,1107 +R-Sys-Sensor-UpLink,R-Sys-Sensor-WSTower,1107 +R-Sys-Sensor-UpLink,R-Sys-Engineering03,1107 +R-Sys-Sensor-WS,R-Struc-Research-Upgrade07,1156 +R-Sys-Sensor-WS,R-Sys-VTOLCBS-Tower01,1156 +R-Sys-Sensor-WS,R-Sys-Sensor-Tower02,1156 +R-Sys-Sensor-WS,R-Sys-VTOLStrike-Tower01,1156 +R-Sys-Sensor-WS,R-Sys-CBSensor-Tower01,1156 +R-Sys-Sensor-WSTower,R-Sys-VTOLStrike-Tower01,1106 +R-Sys-Sensor-WSTower,R-Sys-CBSensor-Tower01,1106 +R-Sys-Sensor-WSTower,R-Sys-VTOLCBS-Tower01,1106 +R-Sys-Sensor-WSTower,R-Sys-Sensor-Tower02,1106 +R-Sys-Sensor-WSTower,R-Struc-Research-Upgrade07,1106 +R-Sys-Sensor-WSTower,R-Sys-Sensor-WS,1106 +R-Sys-Spade1Mk1,CAM1SYSTEMS,489 +R-Sys-SpyTower,R-Sys-SpyTurret,1113 +R-Sys-SpyTurret,R-Sys-Engineering03,470 +R-Sys-SpyTurret,R-Struc-Research-Upgrade08,470 +R-Sys-SpyTurret,R-Sys-Sensor-WSTower,470 +R-Sys-VTOLCBS-Tower01,R-Sys-VTOLStrike-Tower01,779 +R-Sys-VTOLCBS-Tower01,R-Sys-CBSensor-Tower01,779 +R-Sys-VTOLCBS-Turret01,R-Sys-VTOLCBS-Tower01,776 +R-Sys-VTOLCBS-Turret01,R-Sys-CBSensor-Turret01,776 +R-Sys-VTOLStrike-Tower01,R-Struc-VTOLPad,788 +R-Sys-VTOLStrike-Tower01,R-Sys-Sensor-Upgrade01,788 +R-Sys-VTOLStrike-Turret01,R-Sys-VTOLStrike-Tower01,785 +R-Sys-VTOLStrike-Turret01,R-Sys-Sensor-Turret01,785 +R-Vehicle-Armor-Heat01,R-Vehicle-Metals04,970 +R-Vehicle-Armor-Heat02,R-Vehicle-Armor-Heat01,971 +R-Vehicle-Armor-Heat03,R-Vehicle-Armor-Heat02,972 +R-Vehicle-Armor-Heat04,R-Vehicle-Armor-Heat03,973 +R-Vehicle-Armor-Heat04,R-Vehicle-Metals07,973 +R-Vehicle-Armor-Heat05,R-Vehicle-Armor-Heat04,974 +R-Vehicle-Armor-Heat06,R-Vehicle-Armor-Heat05,975 +R-Vehicle-Armor-Heat07,R-Vehicle-Armor-Heat06,1085 +R-Vehicle-Armor-Heat08,R-Vehicle-Armor-Heat07,1086 +R-Vehicle-Armor-Heat09,R-Vehicle-Armor-Heat08,1087 +R-Vehicle-Body01,R-Vehicle-Body01,229 +R-Vehicle-Body02,R-Vehicle-Body01,230 +R-Vehicle-Body02,R-Vehicle-Metals04,230 +R-Vehicle-Body03,R-Vehicle-Metals07,233 +R-Vehicle-Body03,R-Vehicle-Body04,233 +R-Vehicle-Body04,R-Vehicle-Metals01,234 +R-Vehicle-Body04,R-Vehicle-Body01,234 +R-Vehicle-Body05,R-Struc-Factory-Module,235 +R-Vehicle-Body05,R-Vehicle-Body01,235 +R-Vehicle-Body06,R-Vehicle-Body02,236 +R-Vehicle-Body06,R-Struc-Factory-Module,236 +R-Vehicle-Body06,R-Vehicle-Body05,236 +R-Vehicle-Body07,R-Struc-Factory-Module,237 +R-Vehicle-Body07,R-Vehicle-Body06,237 +R-Vehicle-Body07,R-Vehicle-Metals08,237 +R-Vehicle-Body07,R-Vehicle-Body03,237 +R-Vehicle-Body08,R-Vehicle-Body05,238 +R-Vehicle-Body08,R-Vehicle-Metals02,238 +R-Vehicle-Body09,R-Vehicle-Metals03,239 +R-Vehicle-Body09,R-Vehicle-Body11,239 +R-Vehicle-Body09,R-Vehicle-Body06,239 +R-Vehicle-Body10,R-Vehicle-Body09,240 +R-Vehicle-Body10,R-Vehicle-Metals09,240 +R-Vehicle-Body10,R-Vehicle-Body07,240 +R-Vehicle-Body11,R-Vehicle-Body05,241 +R-Vehicle-Body11,R-Vehicle-Metals02,241 +R-Vehicle-Body12,R-Vehicle-Body11,242 +R-Vehicle-Body12,R-Vehicle-Metals05,242 +R-Vehicle-Body13,R-Vehicle-Metals09,1139 +R-Vehicle-Body13,R-Vehicle-Engine09,1139 +R-Vehicle-Body13,R-Vehicle-Armor-Heat06,1139 +R-Vehicle-Body13,R-Vehicle-Body10,1139 +R-Vehicle-Body14,R-Vehicle-Metals09,1140 +R-Vehicle-Body14,R-Vehicle-Engine09,1140 +R-Vehicle-Body14,R-Vehicle-Armor-Heat06,1140 +R-Vehicle-Body14,R-Vehicle-Body13,1140 +R-Vehicle-Engine01,R-Sys-Engineering01,381 +R-Vehicle-Engine02,R-Vehicle-Engine01,382 +R-Vehicle-Engine03,R-Vehicle-Engine02,384 +R-Vehicle-Engine04,R-Vehicle-Prop-VTOL,794 +R-Vehicle-Engine04,R-Struc-Power-Upgrade01,794 +R-Vehicle-Engine05,R-Vehicle-Engine04,795 +R-Vehicle-Engine06,R-Vehicle-Engine05,796 +R-Vehicle-Engine07,R-Vehicle-Body03,797 +R-Vehicle-Engine08,R-Vehicle-Body07,798 +R-Vehicle-Engine08,R-Vehicle-Engine07,798 +R-Vehicle-Engine09,R-Vehicle-Engine08,799 +R-Vehicle-Engine09,R-Vehicle-Body10,799 +R-Vehicle-Metals01,R-Struc-Factory-Module,438 +R-Vehicle-Metals01,R-Struc-Research-Module,438 +R-Vehicle-Metals02,R-Vehicle-Metals01,439 +R-Vehicle-Metals03,R-Vehicle-Metals02,440 +R-Vehicle-Metals04,R-Struc-Research-Upgrade04,590 +R-Vehicle-Metals04,R-Vehicle-Metals03,590 +R-Vehicle-Metals05,R-Vehicle-Metals04,591 +R-Vehicle-Metals06,R-Vehicle-Metals05,592 +R-Vehicle-Metals07,R-Struc-Research-Upgrade07,593 +R-Vehicle-Metals07,R-Vehicle-Metals06,593 +R-Vehicle-Metals08,R-Vehicle-Metals07,594 +R-Vehicle-Metals09,R-Vehicle-Metals08,595 +R-Vehicle-Prop-Halftracks,R-Sys-Engineering01,465 +R-Vehicle-Prop-Hover,R-Vehicle-Engine02,106 +R-Vehicle-Prop-Hover,R-Struc-Factory-Module,106 +R-Vehicle-Prop-Tracks,R-Sys-Engineering01,105 +R-Vehicle-Prop-Tracks,R-Vehicle-Prop-Halftracks,105 +R-Vehicle-Prop-VTOL,R-Struc-Factory-Upgrade01,518 +R-Vehicle-Prop-VTOL,R-Vehicle-Prop-Hover,518 +R-Vehicle-Prop-VTOL,R-Vehicle-Engine03,518 +R-Vehicle-Prop-Wheels,CAM1RESEARCH,487 +R-Wpn-AAGun-Accuracy01,R-Wpn-RocketSlow-Accuracy03,810 +R-Wpn-AAGun-Accuracy02,R-Wpn-Howitzer-Accuracy01,811 +R-Wpn-AAGun-Accuracy02,R-Wpn-AAGun-Accuracy01,811 +R-Wpn-AAGun-Accuracy03,R-Wpn-Rail-Accuracy01,812 +R-Wpn-AAGun-Accuracy03,R-Wpn-AAGun-Accuracy02,812 +R-Wpn-AAGun-Damage01,R-Wpn-AAGun03,816 +R-Wpn-AAGun-Damage02,R-Wpn-AAGun-Damage01,817 +R-Wpn-AAGun-Damage03,R-Wpn-AAGun-Damage02,818 +R-Wpn-AAGun-Damage04,R-Wpn-Cannon-Damage08,819 +R-Wpn-AAGun-Damage05,R-Wpn-AAGun-Damage04,820 +R-Wpn-AAGun-Damage06,R-Wpn-AAGun-Damage05,821 +R-Wpn-AAGun-ROF01,R-Wpn-AAGun-Damage01,823 +R-Wpn-AAGun-ROF01,R-Wpn-MG-ROF01,823 +R-Wpn-AAGun-ROF02,R-Wpn-AAGun-ROF01,824 +R-Wpn-AAGun-ROF03,R-Wpn-AAGun04,825 +R-Wpn-AAGun-ROF03,R-Wpn-AAGun-ROF02,825 +R-Wpn-AAGun-ROF04,R-Wpn-Cannon-ROF04,826 +R-Wpn-AAGun-ROF05,R-Wpn-AAGun-ROF04,827 +R-Wpn-AAGun-ROF06,R-Wpn-AAGun-ROF05,828 +R-Wpn-AAGun02,R-Wpn-AAGun03,523 +R-Wpn-AAGun02,R-Wpn-AAGun-Damage02,523 +R-Wpn-AAGun03,R-Wpn-MG2Mk1,529 +R-Wpn-AAGun04,R-Wpn-MG4,530 +R-Wpn-AAGun04,R-Wpn-AAGun02,530 +R-Wpn-AALaser,R-Wpn-Energy-ROF03,1151 +R-Wpn-Bomb-Accuracy01,R-Wpn-Mortar-Acc02,1009 +R-Wpn-Bomb-Accuracy01,R-Wpn-Bomb01,1009 +R-Wpn-Bomb-Accuracy01,R-Vehicle-Prop-VTOL,1009 +R-Wpn-Bomb-Accuracy02,R-Wpn-Bomb-Accuracy01,1010 +R-Wpn-Bomb-Accuracy03,R-Wpn-Mortar-Acc02,1011 +R-Wpn-Bomb01,R-Vehicle-Prop-VTOL,830 +R-Wpn-Bomb02,R-Wpn-Bomb01,831 +R-Wpn-Bomb02,R-Wpn-Bomb-Accuracy01,831 +R-Wpn-Bomb03,R-Wpn-Bomb01,832 +R-Wpn-Bomb03,R-Wpn-Flamer-Damage04,832 +R-Wpn-Bomb04,R-Wpn-Flamer-Damage05,833 +R-Wpn-Bomb04,R-Wpn-Bomb03,833 +R-Wpn-Bomb05,R-Wpn-Plasmite-Flamer,1162 +R-Wpn-Bomb05,R-Wpn-Bomb04,1162 +R-Wpn-Bomb06,R-Wpn-EMPCannon,1163 +R-Wpn-Bomb06,R-Wpn-Bomb04,1163 +R-Wpn-Cannon-Accuracy01,R-Wpn-Cannon-Damage02,469 +R-Wpn-Cannon-Accuracy01,R-Struc-Research-Upgrade01,469 +R-Wpn-Cannon-Accuracy02,R-Struc-Research-Upgrade04,626 +R-Wpn-Cannon-Accuracy02,R-Wpn-Cannon-Accuracy01,626 +R-Wpn-Cannon-Damage01,R-Wpn-Cannon1Mk1,392 +R-Wpn-Cannon-Damage02,R-Wpn-Cannon-Damage01,393 +R-Wpn-Cannon-Damage03,R-Wpn-Cannon-Damage02,394 +R-Wpn-Cannon-Damage04,R-Wpn-Cannon-Damage03,600 +R-Wpn-Cannon-Damage05,R-Wpn-Cannon-Damage04,601 +R-Wpn-Cannon-Damage06,R-Wpn-Cannon-Damage05,602 +R-Wpn-Cannon-Damage07,R-Wpn-Cannon-Damage06,603 +R-Wpn-Cannon-Damage08,R-Wpn-Cannon-Damage07,604 +R-Wpn-Cannon-Damage09,R-Wpn-Cannon-Damage08,605 +R-Wpn-Cannon-ROF01,R-Wpn-Cannon-Damage04,397 +R-Wpn-Cannon-ROF02,R-Struc-Factory-Upgrade04,617 +R-Wpn-Cannon-ROF02,R-Wpn-Cannon-ROF01,617 +R-Wpn-Cannon-ROF03,R-Wpn-Cannon-ROF02,618 +R-Wpn-Cannon-ROF04,R-Wpn-Cannon-Damage07,619 +R-Wpn-Cannon-ROF04,R-Wpn-Cannon-ROF03,619 +R-Wpn-Cannon-ROF05,R-Wpn-Cannon-ROF04,620 +R-Wpn-Cannon-ROF06,R-Wpn-Cannon-ROF05,621 +R-Wpn-Cannon1Mk1,R-Wpn-MG-Damage01,149 +R-Wpn-Cannon2Mk1,R-Struc-Factory-Module,193 +R-Wpn-Cannon2Mk1,R-Wpn-Cannon-Damage01,193 +R-Wpn-Cannon3Mk1,R-Wpn-Cannon-Damage03,291 +R-Wpn-Cannon3Mk1,R-Struc-Factory-Module,291 +R-Wpn-Cannon3Mk1,R-Vehicle-Body11,291 +R-Wpn-Cannon3Mk1,R-Wpn-Cannon2Mk1,291 +R-Wpn-Cannon4AMk1,R-Wpn-Cannon-Damage05,282 +R-Wpn-Cannon4AMk1,R-Wpn-Cannon2Mk1,282 +R-Wpn-Cannon5,R-Wpn-Cannon2Mk1,522 +R-Wpn-Cannon5,R-Wpn-Cannon-ROF03,522 +R-Wpn-Cannon6TwinAslt,R-Wpn-Cannon5,1101 +R-Wpn-Cannon6TwinAslt,R-Struc-Research-Upgrade07,1101 +R-Wpn-EMPCannon,R-Sys-SpyTower,1157 +R-Wpn-EMPCannon,R-Sys-Sensor-UpLink,1157 +R-Wpn-Energy-Accuracy01,R-Wpn-Laser01,849 +R-Wpn-Energy-Damage01,R-Wpn-Energy-Accuracy01,852 +R-Wpn-Energy-Damage02,R-Wpn-Energy-Damage01,853 +R-Wpn-Energy-Damage03,R-Wpn-Energy-Damage02,854 +R-Wpn-Energy-ROF01,R-Wpn-Energy-Damage01,855 +R-Wpn-Energy-ROF02,R-Wpn-Energy-ROF01,856 +R-Wpn-Energy-ROF03,R-Wpn-Energy-ROF02,857 +R-Wpn-Flame2,R-Vehicle-Body05,524 +R-Wpn-Flame2,R-Wpn-Flamer-Damage04,524 +R-Wpn-Flame2,R-Wpn-Flamer01Mk1,524 +R-Wpn-Flamer-Damage01,R-Wpn-Flamer01Mk1,385 +R-Wpn-Flamer-Damage02,R-Wpn-Flamer-Damage01,386 +R-Wpn-Flamer-Damage03,R-Wpn-Flamer-Damage02,387 +R-Wpn-Flamer-Damage04,R-Wpn-Flamer-Damage03,834 +R-Wpn-Flamer-Damage05,R-Wpn-Flamer-Damage04,835 +R-Wpn-Flamer-Damage06,R-Wpn-Flamer-Damage05,836 +R-Wpn-Flamer-Damage07,R-Wpn-Flamer-Damage06,1141 +R-Wpn-Flamer-Damage07,R-Wpn-Plasmite-Flamer,1141 +R-Wpn-Flamer-Damage08,R-Wpn-Flamer-Damage07,1142 +R-Wpn-Flamer-Damage09,R-Wpn-Flamer-Damage08,1143 +R-Wpn-Flamer-ROF01,R-Wpn-Flamer-Damage02,388 +R-Wpn-Flamer-ROF02,R-Wpn-Flame2,389 +R-Wpn-Flamer-ROF03,R-Wpn-Flamer-ROF02,390 +R-Wpn-Flamer01Mk1,R-Wpn-MG1Mk1,216 +R-Wpn-Flamer01Mk1,R-Vehicle-Engine01,216 +R-Wpn-Howitzer-Accuracy01,R-Wpn-HowitzerMk1,837 +R-Wpn-Howitzer-Accuracy02,R-Struc-Research-Upgrade04,838 +R-Wpn-Howitzer-Accuracy02,R-Wpn-Howitzer-Accuracy01,838 +R-Wpn-Howitzer-Accuracy03,R-Wpn-Howitzer-Accuracy02,839 +R-Wpn-Howitzer-Damage01,R-Wpn-HowitzerMk1,843 +R-Wpn-Howitzer-Damage02,R-Wpn-Howitzer-Damage01,844 +R-Wpn-Howitzer-Damage03,R-Wpn-Howitzer-Damage02,845 +R-Wpn-Howitzer-Damage04,R-Wpn-Howitzer03-Rot,846 +R-Wpn-Howitzer-Damage04,R-Wpn-Cannon-Damage07,846 +R-Wpn-Howitzer-Damage05,R-Wpn-Howitzer-Damage04,847 +R-Wpn-Howitzer-Damage06,R-Wpn-Howitzer-Damage05,848 +R-Wpn-Howitzer-Incenediary,R-Wpn-Flame2,1045 +R-Wpn-Howitzer-Incenediary,R-Wpn-Howitzer-Damage03,1045 +R-Wpn-Howitzer-Incenediary,R-Wpn-HvyHowitzer,1045 +R-Wpn-Howitzer-ROF01,R-Wpn-HvyHowitzer,1022 +R-Wpn-Howitzer-ROF02,R-Wpn-Howitzer-ROF01,1023 +R-Wpn-Howitzer-ROF03,R-Wpn-Howitzer-ROF02,1024 +R-Wpn-Howitzer-ROF04,R-Wpn-Howitzer-ROF03,1025 +R-Wpn-Howitzer03-Rot,R-Wpn-Howitzer-Damage03,525 +R-Wpn-Howitzer03-Rot,R-Wpn-HvyHowitzer,525 +R-Wpn-HowitzerMk1,R-Wpn-Mortar-Damage04,296 +R-Wpn-HowitzerMk1,R-Sys-Sensor-Upgrade01,296 +R-Wpn-HvArtMissile,R-Wpn-MdArtMissile,1032 +R-Wpn-HvArtMissile,R-Wpn-Missile-Damage03,1032 +R-Wpn-HvyHowitzer,R-Wpn-Howitzer-Damage02,472 +R-Wpn-HvyHowitzer,R-Wpn-HowitzerMk1,472 +R-Wpn-HvyLaser,R-Wpn-Laser02,1103 +R-Wpn-Laser01,R-Struc-Research-Upgrade09,531 +R-Wpn-Laser01,R-Sys-Sensor-Upgrade02,531 +R-Wpn-Laser02,R-Wpn-Laser01,532 +R-Wpn-LasSat,R-Struc-Research-Upgrade09,1108 +R-Wpn-LasSat,R-Sys-Sensor-UpLink,1108 +R-Wpn-MdArtMissile,R-Wpn-Missile-Damage02,1031 +R-Wpn-MdArtMissile,R-Wpn-Rocket06-IDF,1031 +R-Wpn-MdArtMissile,R-Wpn-Missile2A-T,1031 +R-Wpn-MG-Damage01,R-Wpn-MG1Mk1,362 +R-Wpn-MG-Damage02,R-Wpn-MG-Damage01,364 +R-Wpn-MG-Damage03,R-Wpn-MG-Damage02,366 +R-Wpn-MG-ROF01,R-Struc-Factory-Upgrade01,363 +R-Wpn-MG-ROF01,R-Wpn-MG-Damage03,363 +R-Wpn-MG-ROF02,R-Wpn-MG-ROF01,365 +R-Wpn-MG-ROF03,R-Wpn-MG-ROF02,367 +R-Wpn-MG1Mk1,CAM1WEAPONS,180 +R-Wpn-MG2Mk1,R-Wpn-MG-Damage02,184 +R-Wpn-MG3Mk1,R-Wpn-MG-Damage02,189 +R-Wpn-MG3Mk1,R-Wpn-MG2Mk1,189 +R-Wpn-MG4,R-Wpn-MG3Mk1,527 +R-Wpn-MG4,R-Wpn-MG-ROF03,527 +R-Wpn-MG5,R-Struc-Research-Upgrade07,1160 +R-Wpn-MG5,R-Wpn-MG4,1160 +R-Wpn-Missile-Accuracy01,R-Wpn-Missile-Damage01,864 +R-Wpn-Missile-Accuracy02,R-Wpn-Missile-Accuracy01,865 +R-Wpn-Missile-Damage01,R-Wpn-Missile-LtSAM,867 +R-Wpn-Missile-Damage02,R-Wpn-Missile-Damage01,868 +R-Wpn-Missile-Damage03,R-Wpn-Missile-Damage02,869 +R-Wpn-Missile-HvSAM,R-Wpn-Missile-Damage03,1030 +R-Wpn-Missile-HvSAM,R-Wpn-Missile-LtSAM,1030 +R-Wpn-Missile-LtSAM,R-Sys-VTOLStrike-Tower01,1029 +R-Wpn-Missile-LtSAM,R-Wpn-Missile2A-T,1029 +R-Wpn-Missile-ROF01,CAM1RESEARCH,870 +R-Wpn-Missile-ROF02,CAM1RESEARCH,871 +R-Wpn-Missile-ROF03,CAM1RESEARCH,872 +R-Wpn-Missile2A-T,R-Wpn-Rocket07-Tank-Killer,538 +R-Wpn-Missile2A-T,R-Struc-Research-Upgrade07,538 +R-Wpn-Mortar-Acc01,R-Struc-Research-Upgrade02,1012 +R-Wpn-Mortar-Acc01,R-Wpn-Mortar-Damage01,1012 +R-Wpn-Mortar-Acc02,R-Wpn-Mortar-Acc01,1013 +R-Wpn-Mortar-Acc02,R-Struc-Research-Upgrade04,1013 +R-Wpn-Mortar-Acc03,R-Struc-Research-Upgrade08,1014 +R-Wpn-Mortar-Acc03,R-Wpn-Mortar-Acc02,1014 +R-Wpn-Mortar-Damage01,R-Wpn-Mortar01Lt,400 +R-Wpn-Mortar-Damage02,R-Wpn-Mortar-Damage01,401 +R-Wpn-Mortar-Damage03,R-Wpn-Mortar-Damage02,402 +R-Wpn-Mortar-Damage04,R-Wpn-Mortar02Hvy,882 +R-Wpn-Mortar-Damage04,R-Wpn-Mortar-Damage03,882 +R-Wpn-Mortar-Damage05,R-Wpn-Mortar-Damage04,886 +R-Wpn-Mortar-Damage06,R-Wpn-Mortar-Damage05,887 +R-Wpn-Mortar-Incenediary,R-Struc-Research-Upgrade07,1079 +R-Wpn-Mortar-Incenediary,R-Wpn-Mortar02Hvy,1079 +R-Wpn-Mortar-Incenediary,R-Wpn-Flame2,1079 +R-Wpn-Mortar-ROF01,R-Wpn-Mortar-Damage03,403 +R-Wpn-Mortar-ROF02,R-Wpn-Mortar-ROF01,404 +R-Wpn-Mortar-ROF02,R-Wpn-Mortar02Hvy,404 +R-Wpn-Mortar-ROF03,R-Wpn-Mortar-ROF02,405 +R-Wpn-Mortar-ROF04,R-Wpn-Cannon-ROF04,956 +R-Wpn-Mortar01Lt,R-Wpn-Cannon-Damage01,212 +R-Wpn-Mortar01Lt,R-Struc-Factory-Module,212 +R-Wpn-Mortar02Hvy,R-Vehicle-Metals01,221 +R-Wpn-Mortar02Hvy,R-Wpn-Mortar-Damage02,221 +R-Wpn-Mortar02Hvy,R-Wpn-Mortar01Lt,221 +R-Wpn-Mortar3,R-Wpn-Mortar02Hvy,528 +R-Wpn-Mortar3,R-Wpn-Mortar-ROF03,528 +R-Wpn-MortarEMP,R-Wpn-MortarEMP,1150 +R-Wpn-PlasmaCannon,R-Wpn-HvyLaser,1109 +R-Wpn-Plasmite-Flamer,R-Wpn-Flame2,1076 +R-Wpn-Plasmite-Flamer,R-Struc-Research-Upgrade07,1076 +R-Wpn-Rail-Accuracy01,R-Wpn-Rail-Damage01,891 +R-Wpn-Rail-Damage01,R-Wpn-RailGun01,894 +R-Wpn-Rail-Damage02,R-Wpn-Rail-Damage01,895 +R-Wpn-Rail-Damage03,R-Wpn-Rail-Damage02,896 +R-Wpn-Rail-Damage03,R-Wpn-RailGun02,896 +R-Wpn-Rail-ROF01,R-Wpn-Rail-Accuracy01,897 +R-Wpn-Rail-ROF02,R-Wpn-Rail-ROF01,898 +R-Wpn-Rail-ROF03,R-Wpn-Rail-ROF02,899 +R-Wpn-RailGun01,R-Wpn-Cannon4AMk1,539 +R-Wpn-RailGun01,R-Struc-Research-Upgrade08,539 +R-Wpn-RailGun01,R-Wpn-Cannon-Damage07,539 +R-Wpn-RailGun02,R-Wpn-Rail-Damage02,540 +R-Wpn-RailGun02,R-Wpn-RailGun01,540 +R-Wpn-RailGun03,R-Wpn-Rail-Damage03,541 +R-Wpn-RailGun03,R-Wpn-RailGun02,541 +R-Wpn-Rocket-Accuracy01,R-Struc-Research-Upgrade01,900 +R-Wpn-Rocket-Accuracy01,R-Wpn-Rocket-Damage02,900 +R-Wpn-Rocket-Accuracy02,R-Wpn-Rocket-Accuracy01,901 +R-Wpn-Rocket-Accuracy02,R-Struc-Research-Upgrade02,901 +R-Wpn-Rocket-Damage01,R-Wpn-Rocket05-MiniPod,476 +R-Wpn-Rocket-Damage02,R-Wpn-Rocket-Damage01,477 +R-Wpn-Rocket-Damage03,R-Wpn-Rocket-Damage02,903 +R-Wpn-Rocket-Damage04,R-Wpn-Rocket-Damage03,904 +R-Wpn-Rocket-Damage05,R-Wpn-Rocket-Damage04,905 +R-Wpn-Rocket-Damage06,R-Wpn-Rocket-Damage05,906 +R-Wpn-Rocket-ROF01,R-Wpn-Rocket-Damage02,109 +R-Wpn-Rocket-ROF01,R-Struc-Factory-Upgrade02,109 +R-Wpn-Rocket-ROF02,R-Wpn-Rocket-ROF01,109 +R-Wpn-Rocket-ROF02,R-Wpn-Rocket-Damage03,109 +R-Wpn-Rocket-ROF03,R-Wpn-Rocket-ROF02,913 +R-Wpn-Rocket01-LtAT,R-Wpn-Rocket-Damage02,126 +R-Wpn-Rocket02-MRL,R-Wpn-Rocket-Damage01,208 +R-Wpn-Rocket03-HvAT,R-Wpn-Rocket01-LtAT,461 +R-Wpn-Rocket03-HvAT,R-Wpn-RocketSlow-Damage03,461 +R-Wpn-Rocket05-MiniPod,R-Vehicle-Engine01,124 +R-Wpn-Rocket06-IDF,R-Wpn-Rocket02-MRL,295 +R-Wpn-Rocket06-IDF,R-Sys-CBSensor-Tower01,295 +R-Wpn-Rocket07-Tank-Killer,R-Wpn-RocketSlow-Accuracy02,630 +R-Wpn-Rocket07-Tank-Killer,R-Wpn-RocketSlow-Damage04,630 +R-Wpn-RocketSlow-Accuracy01,R-Wpn-RocketSlow-Damage01,925 +R-Wpn-RocketSlow-Accuracy01,R-Struc-Research-Upgrade02,925 +R-Wpn-RocketSlow-Accuracy02,R-Wpn-RocketSlow-Accuracy01,926 +R-Wpn-RocketSlow-Accuracy03,R-Struc-Research-Upgrade04,927 +R-Wpn-RocketSlow-Accuracy03,R-Wpn-RocketSlow-Accuracy02,927 +R-Wpn-RocketSlow-Damage01,R-Wpn-Rocket01-LtAT,931 +R-Wpn-RocketSlow-Damage02,R-Wpn-RocketSlow-Damage01,932 +R-Wpn-RocketSlow-Damage03,R-Wpn-RocketSlow-Damage02,933 +R-Wpn-RocketSlow-Damage04,R-Wpn-RocketSlow-Damage03,934 +R-Wpn-RocketSlow-Damage05,R-Wpn-RocketSlow-Damage04,935 +R-Wpn-RocketSlow-Damage06,R-Wpn-RocketSlow-Damage05,936 +R-Wpn-RocketSlow-ROF01,CAM1RESEARCH,942 +R-Wpn-RocketSlow-ROF02,CAM1RESEARCH,943 diff --git a/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/research.txt b/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/research.txt index 357d4ef9e..8931b4307 100644 --- a/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/research.txt +++ b/data/mods/multiplay/old-1.10-balance/stats/research/multiplayer/research.txt @@ -1,443 +1,443 @@ -R-Cyborg-Wpn-Thermite,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_TFL,0,Flame2,WEAPON,900,0,2,0,1,0,0,0,1 -R-Cyborg-Wpn-Grenade,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_GRN,0,Mortar1Mk1,WEAPON,900,0,2,0,0,0,0,0,1 -R-Cyborg-Sys-ComEng,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYS_CEN,0,Spade1Mk1,CONSTRUCT,600,0,2,0,0,0,0,0,1 -R-Cyborg-Sys-Mechanic,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYS_MCH,0,LightRepair1,REPAIR,600,0,2,0,0,0,0,0,1 -R-Wpn-Howitzer-Incenediary,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_INH,0,Howitzer-Incenediary,WEAPON,12000,1,3,0,0,0,0,0,1 -R-Defense-Howitzer-Incenediary,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_INH,Emplacement-Howitzer-Incenediary,0,0,4800,0,2,0,0,0,1,0,0 -R-Wpn-Plasmite-Flamer,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_PLFL,0,PlasmiteFlamer,WEAPON,7200,1,2,0,0,0,0,1,1 -R-Defense-PlasmiteFlamer,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PFL,Plasmite-flamer-bunker,0,BODY,4800,0,1,0,0,2,1,0,0 -R-Wpn-Mortar-Incenediary,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_IMORT,0,Mortar-Incenediary,WEAPON,3600,1,3,0,0,0,0,0,1 -R-Defense-MortarPit-Incenediary,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_IMP,Emplacement-MortarPit-Incenediary,0,BODY,2400,0,2,0,0,0,1,0,0 -R-Cyborg-Transport,Level All,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYTRANS,0,V-Tol,PROPULSION,3600,1,2,0,2,0,0,0,1 -R-Cyborg-Armor-Heat07,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,BODY,14000,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,BODY,16000,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,BODY,18000,0,1,1,0,0,0,0,0 -R-Vehicle-Armor-Heat07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icamrhot.pie,0,RES_V_AH7,0,0,BODY,17000,0,1,1,0,0,0,0,0 -R-Vehicle-Armor-Heat08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,BODY,19000,0,1,1,0,0,0,0,0 -R-Vehicle-Armor-Heat09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,BODY,21000,0,1,1,0,0,0,0,0 -R-Sys-MobileRepairTurretHvy,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_REPTUHVY,0,HeavyRepair,REPAIR,600,0,1,0,0,0,0,0,1 -R-Vehicle-Prop-Tracks,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_TRACK1,0,tracked01,PROPULSION,2400,1,2,0,0,0,0,0,1 -R-Vehicle-Prop-Hover,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_P_H1,0,hover01,PROPULSION,3600,1,2,0,0,0,0,0,1 -R-Struc-Research-Module,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_RM1,A0ResearchModule1,0,0,1200,1,2,0,0,0,1,0,0 -R-Wpn-Rocket05-MiniPod,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_MP1,0,Rocket-Pod,WEAPON,1200,1,1,0,0,0,0,0,2 -R-Wpn-Rocket01-LtAT,Level All,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_LTAT1,0,Rocket-LtA-T,WEAPON,3600,0,1,0,0,0,0,0,2 -R-Defense-HardcreteWall,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_HCW1,A0HardcreteMk1Wall,0,0,600,1,1,0,0,0,2,0,0 -R-Wpn-Cannon1Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN1MK1,0,Cannon1Mk1,WEAPON,2400,1,1,0,0,0,0,0,2 -R-Struc-Factory-Module,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_FM1,A0FacMod1,0,0,2400,1,3,0,0,0,1,0,0 -R-Wpn-MG1Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG1MK1,0,MG1Mk1,WEAPON,60,1,1,0,0,0,0,0,2 -R-Wpn-MG2Mk1,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG2MK1,0,MG2Mk1,WEAPON,1200,1,1,0,0,0,0,0,2 -R-Wpn-MG3Mk1,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG3MK1,0,MG3Mk1,WEAPON,2400,1,2,0,0,0,0,0,2 -R-Wpn-Cannon2Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN2MK1,0,Cannon2A-TMk1,WEAPON,4800,0,2,0,0,0,0,0,1 -R-Wpn-Rocket02-MRL,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_MRL1,0,Rocket-MRL,WEAPON,2400,1,1,0,0,0,0,0,1 -R-Wpn-Mortar01Lt,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MORTA1,0,Mortar1Mk1,WEAPON,2400,1,2,0,0,0,0,0,1 -R-Wpn-Flamer01Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_FLAME1,0,Flame1Mk1,WEAPON,600,1,2,0,0,0,0,0,1 -R-Wpn-Mortar02Hvy,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M2,0,Mortar2Mk1,WEAPON,7200,0,3,0,0,0,0,0,1 -R-Struc-PowerModuleMk1,Level One,0,0,IMAGE_RES_POWERTECH,0,0,RES_POWMD1,A0PowMod1,0,0,1200,1,1,1,0,0,1,0,0 -R-Vehicle-Body01,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B01,0,Body1REC,BODY,600,0,1,0,0,0,0,0,1 -R-Vehicle-Body02,Level Two,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B02,0,Body2SUP,BODY,6000,1,2,0,0,0,0,0,1 -R-Vehicle-Body03,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B03,0,Body3MBT,BODY,14400,1,2,0,0,0,0,0,1 -R-Vehicle-Body04,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B04,0,Body4ABT,BODY,1200,1,2,0,0,0,0,0,1 -R-Vehicle-Body05,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B05,0,Body5REC,BODY,1200,0,2,0,0,0,0,0,1 -R-Vehicle-Body06,Level Two,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B06,0,Body6SUPP,BODY,7200,1,3,0,0,0,0,0,1 -R-Vehicle-Body07,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B07,0,Body7ABT,BODY,28800,0,4,0,0,0,0,0,1 -R-Vehicle-Body08,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B08,0,Body8MBT,BODY,2400,1,2,0,0,0,0,0,1 -R-Vehicle-Body09,Level All,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B09,0,Body9REC,BODY,8400,1,3,0,0,0,0,0,1 -R-Vehicle-Body10,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B10,0,Body10MBT,BODY,43200,0,3,0,0,0,0,0,1 -R-Vehicle-Body11,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B11,0,Body11ABT,BODY,2400,0,2,0,0,0,0,0,1 -R-Vehicle-Body12,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B12,0,Body12SUP,BODY,3600,1,2,0,0,0,0,0,1 -R-Sys-Sensor-Tower01,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_STW1,Sys-SensoTower01,0,0,900,0,2,0,0,0,1,0,0 -R-Defense-WallTower02,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT2_LC,WallTower02,0,0,1500,0,2,0,0,0,1,0,0 -R-Defense-WallTower01,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_WT1,WallTower01,0,0,1200,0,3,0,0,0,1,0,0 -R-Defense-WallTower04,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT4_HC,WallTower04,0,0,2400,0,2,0,0,0,1,0,0 -R-Defense-WallTower03,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT3_MC,WallTower03,0,0,1800,0,2,0,0,1,1,0,0 -R-Sys-Sensor-Turret01,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SENSO1,0,SensorTurret1Mk1,SENSOR,900,0,1,0,0,0,0,0,1 -R-Struc-RepairFacility,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_REPAI1,A0RepairCentre3,0,0,2400,0,2,0,0,0,1,0,0 -R-Wpn-Cannon4AMk1,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_4A,0,Cannon4AUTOMk1,WEAPON,8000,1,2,0,0,0,0,1,2 -R-Sys-Engineering01,Level One-Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,trlcon.pie,0,RES_ENGIN1,0,0,0,1200,1,1,1,0,0,0,0,0 -R-Wpn-Cannon3Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN3MK1,0,Cannon375mmMk1,WEAPON,7200,1,4,0,0,0,0,0,1 -R-Wpn-Rocket06-IDF,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_IDF,0,Rocket-IDF,WEAPON,7200,1,2,0,0,0,0,0,1 -R-Wpn-HowitzerMk1,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HMK1,0,Howitzer105Mk1,WEAPON,9000,1,2,0,0,0,0,0,1 -CAM1RESEARCH,Level One,0,1,IMAGE_RES_COMPUTERTECH,MICAPSUL.PIE,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -R-Struc-Factory-Cyborg,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_FCY1,A0CyborgFactory,0,0,1800,0,2,0,0,0,1,0,0 -R-Cyborg-Wpn-MG,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_MG1,0,MG1Mk1,WEAPON,600,0,1,0,1,0,0,0,1 -R-Wpn-MG-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_D1,0,MG1Mk1,WEAPON,600,1,1,1,0,0,0,0,0 -R-Wpn-MG-ROF01,Level One-Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_ROF1,0,MG1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Wpn-MG-Damage02,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_D2,0,MG1Mk1,WEAPON,1200,0,1,1,0,0,0,0,0 -R-Wpn-MG-ROF02,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_ROF2,0,MG1Mk1,WEAPON,4800,0,1,1,0,0,0,0,0 -R-Wpn-MG-Damage03,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,MG1Mk1,WEAPON,2400,0,1,1,0,0,0,0,0 -R-Wpn-MG-ROF03,Level Two-Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_ROF3,0,MG1Mk1,WEAPON,6800,1,1,1,0,0,0,0,0 -R-Defense-WallUpgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,RES_DF_WU1,0,0,0,1200,0,2,1,0,0,0,0,0 -R-Struc-CommandRelay,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_CR1,A0ComDroidControl,0,0,1200,1,1,0,0,0,1,0,0 -R-Comp-SynapticLink,Level One,0,0,IMAGE_RES_COMPUTERTECH,icsynapt.PIE,0,RES_C_SL1,0,0,0,1200,1,1,0,0,0,0,0,0 -R-Vehicle-Engine01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,iceng.pie,0,RES_V_EN1,0,0,0,1200,1,1,1,0,0,0,0,0 -R-Vehicle-Engine02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,2400,1,1,1,0,0,0,0,0 -R-Vehicle-Engine03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,4800,1,1,1,0,0,0,0,0 -R-Wpn-Flamer-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_D1,0,Flame1Mk1,WEAPON,600,1,1,1,0,0,0,0,0 -R-Wpn-Flamer-Damage02,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,1200,0,1,1,0,0,0,0,0 -R-Wpn-Flamer-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,2400,0,1,1,0,0,0,0,0 -R-Wpn-Flamer-ROF01,Level One-Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_ROF1,0,Flame1Mk1,WEAPON,900,0,1,1,0,0,0,0,0 -R-Wpn-Flamer-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,6000,1,1,1,0,0,0,0,0 -R-Wpn-Flamer-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_D1,0,Cannon1Mk1,WEAPON,1200,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,2400,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,3600,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_ROF1,0,Cannon1Mk1,WEAPON,4000,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_D1,0,Mortar1Mk1,WEAPON,1800,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,3600,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,7200,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-ROF01,Level One-Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_ROF1,0,Mortar1Mk1,WEAPON,1800,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,6000,0,2,1,0,0,0,0,0 -R-Wpn-Mortar-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar2Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Comp-CommandTurret01,Level One,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT1,0,CommandBrain01,BRAIN,1200,0,1,0,1,0,0,0,1 -R-Defense-TankTrap01,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_TTRAP1,A0TankTrap,0,0,600,0,1,0,0,0,1,0,0 -R-Defense-Tower01,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_TOWER1,GuardTower1,0,0,600,1,1,0,0,0,1,0,0 -R-Defense-Tower06,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PODTOW,GuardTower6,0,0,2400,0,2,0,0,0,1,0,0 -R-Defense-Pillbox01,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_P1,PillBox1,0,0,1200,0,2,0,0,0,1,0,0 -R-Defense-Pillbox04,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_LC,PillBox4,0,0,1500,0,2,0,0,0,1,0,0 -R-Defense-Pillbox05,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_FL,PillBox5,0,0,1500,0,2,0,0,0,1,0,0 -R-Cyborg-Wpn-Flamer,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_FL1,0,Flame1Mk1,WEAPON,900,0,2,0,1,0,0,0,1 -R-Cyborg-Wpn-Cannon,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_CN1,0,Cannon1Mk1,WEAPON,1500,0,2,0,1,0,0,0,1 -R-Cyborg-Wpn-Rocket,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_RK1,0,Rocket-LtA-T,WEAPON,900,0,2,0,1,0,0,0,1 -R-Sys-MobileRepairTurret01,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_REPTU1,0,LightRepair1,REPAIR,600,0,1,0,0,0,0,0,1 -R-Defense-WallUpgrade02,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,2400,0,1,1,0,0,0,0,0 -R-Defense-WallUpgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 -R-Struc-Materials01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,RES_ST_MAT1,0,0,0,1200,0,1,1,0,0,0,0,0 -R-Struc-Materials02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,2400,0,1,1,0,0,0,0,0 -R-Struc-Materials03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 -R-Vehicle-Metals01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icmolql.pie,0,RES_V_MET1,0,0,0,1800,1,2,1,1,0,0,0,0 -R-Vehicle-Metals02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,3600,0,1,1,1,0,0,0,0 -R-Vehicle-Metals03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,5400,1,1,1,1,0,0,0,0 -R-Struc-Research-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,RES_ST_RU1,0,0,0,1200,1,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,2400,0,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,RES_ST_FU1,0,0,0,2400,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,7200,1,1,1,0,0,0,0,0 -R-Cyborg-Metals01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET1,0,0,0,1200,0,3,1,1,0,0,0,0 -R-Cyborg-Metals02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,2400,0,1,1,1,0,0,0,0 -R-Cyborg-Metals03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,3600,0,2,1,1,0,0,0,0 -CAM1WEAPONS,Level One,0,1,IMAGE_RES_WEAPONTECH,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 -CAM1SYSTEMS,Level One,0,1,IMAGE_RES_SYSTEMTECH,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 -CAM1DEFENSES,Level One,0,1,IMAGE_RES_DEFENCE,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 -CAM1STRUCTURES,Level One,0,1,IMAGE_RES_STRUCTURETECH,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 -R-Wpn-Rocket03-HvAT,Level All,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_HVAT1,0,Rocket-BB,WEAPON,4800,0,2,0,0,0,0,0,2 -R-Sys-Sensor-Upgrade01,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,GNLSNSR1.PIE,0,RES_SY_SU1,0,0,0,1800,1,2,1,0,0,0,0,0 -R-Vehicle-Prop-Halftracks,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_HALFT1,0,HalfTrack,PROPULSION,1200,1,1,0,0,0,0,0,1 -R-Defense-WallTower06,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_DEFENCE,0,0,RES_WT6_ATR,WallTower06,0,0,1500,0,2,0,0,0,1,0,0 -R-Defense-Pillbox06,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_ATR,PillBox6,0,0,1500,0,2,0,0,0,1,0,0 -R-Wpn-Cannon-Accuracy01,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CNAC1,0,Cannon1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Sys-SpyTurret,Level All,0,0,IMAGE_RES_SYSTEMTECH,icmolql.pie,0,RES_SY_SPT,0,SpyTurret01,WEAPON,14400,1,3,0,0,0,0,0,1 -R-Wpn-HvyHowitzer,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HH1,0,Howitzer150Mk1,WEAPON,10000,1,2,0,0,0,0,0,1 -R-Wpn-Rocket-ROF01,Level One,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_ROF1,0,Rocket-Pod,WEAPON,2400,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-ROF02,Level One-Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,3600,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_D1,0,Rocket-Pod,WEAPON,1200,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,2400,0,1,1,0,0,0,0,0 -R-Vehicle-Prop-Wheels,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_P_W1,0,wheeled01,PROPULSION,1200,0,1,0,1,0,0,0,1 -R-Sys-Spade1Mk1,Level One,0,1,IMAGE_RES_SYSTEMTECH,0,0,0,0,Spade1Mk1,CONSTRUCT,10,1,1,0,0,0,0,0,1 -R-Struc-RprFac-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,0,0,RES_ST_RFU1,A0RepairCentre3,0,0,2400,0,2,1,0,0,0,0,0 -R-Struc-RprFac-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,3600,0,2,1,0,0,0,0,0 -R-Struc-RprFac-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,4800,0,2,1,0,0,0,0,0 -R-Vehicle-Prop-VTOL,Level All,0,0,IMAGE_RES_DROIDTECH,DPVTOL.PIE,0,RES_V_P_V1,0,0,BODY,6000,1,3,0,0,0,0,0,1 -R-Struc-VTOLPad,Level Two,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VP,A0VtolPad,0,0,3600,0,2,0,0,0,1,0,0 -R-Struc-VTOLFactory,Level Two,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VF,A0VTolFactory1,0,0,6000,0,1,0,0,0,1,0,0 -R-Wpn-Cannon5,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN5,0,Cannon5VulcanMk1,WEAPON,9000,1,2,0,0,0,0,0,1 -R-Wpn-AAGun02,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA2,0,AAGun2Mk1,WEAPON,4800,1,2,0,0,0,0,0,1 -R-Wpn-Flame2,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_FLAME2,0,Flame2,WEAPON,7200,1,3,0,0,0,0,1,1 -R-Wpn-Howitzer03-Rot,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RHOW,0,Howitzer03-Rot,WEAPON,12000,1,2,0,0,0,0,1,1 -R-Wpn-MG4,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG4,0,MG4ROTARYMk1,WEAPON,7200,1,2,0,0,0,0,6,2 -R-Wpn-Mortar3,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M3,0,Mortar3ROTARYMk1,WEAPON,10000,1,2,0,0,0,0,1,1 -R-Wpn-AAGun03,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA3,0,QuadMg1AAGun,WEAPON,3600,1,1,0,0,0,0,0,1 -R-Wpn-AAGun04,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA4,0,QuadRotAAGun,WEAPON,6000,0,2,0,0,0,0,2,1 -R-Wpn-Laser01,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LAS1,0,Laser3BEAMMk1,WEAPON,14400,1,2,0,0,0,0,0,2 -R-Wpn-Laser02,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LAS2,0,Laser2PULSEMk1,WEAPON,28800,1,1,0,0,0,0,0,2 -R-Wpn-Missile2A-T,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,14400,0,2,0,0,0,0,2,2 -R-Wpn-RailGun01,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL1,0,RailGun1Mk1,WEAPON,14400,1,3,0,0,0,0,0,2 -R-Wpn-RailGun02,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL2,0,RailGun2Mk1,WEAPON,28800,1,2,0,0,0,0,2,2 -R-Wpn-RailGun03,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL3,0,RailGun3Mk1,WEAPON,43200,1,2,0,0,0,0,0,1 -R-Defense-AASite-QuadBof,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_AA1,AASite-QuadBof,0,0,4800,0,1,0,0,0,1,0,0 -R-Defense-AASite-QuadMg1,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_AA2,AASite-QuadMg1,0,0,3600,1,1,0,0,0,1,0,0 -R-Defense-AASite-QuadRotMg,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_AA3,AASite-QuadRotMg,0,0,6000,0,2,0,0,1,1,0,0 -R-Defense-PrisLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PrisLas,Emplacement-PrisLas,0,0,14400,0,1,0,0,0,1,0,0 -R-Defense-RotHow,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RotHOW,Emplacement-RotHow,0,0,5000,0,1,0,0,1,1,0,0 -R-Defense-RotMor,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RotMor,Emplacement-RotMor,0,0,4800,0,1,0,0,1,1,0,0 -R-Defense-GuardTower-ATMiss,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_ATMTOW,GuardTower-ATMiss,0,0,14400,0,1,0,0,1,1,0,0 -R-Defense-GuardTower-Rail1,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RL1TOW,GuardTower-Rail1,0,0,14400,0,1,0,0,1,1,0,0 -R-Defense-Howitzer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HOW,Emplacement-Howitzer105,0,BODY,4800,0,1,0,0,0,1,0,0 -R-Defense-MortarPit,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Mpit,Emplacement-MortarPit01,0,0,1200,0,2,0,0,0,1,0,0 -R-Defense-Wall-RotMg,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT7_RMG,Wall-RotMg,0,0,4800,0,2,0,0,1,1,0,0 -R-Defense-Wall-VulcanCan,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT8_RC,Wall-VulcanCan,0,0,4800,0,1,0,0,1,1,0,0 -R-Defense-WallTower-HvyFlamer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT11_HFL,WallTower-Projector,0,0,3600,0,0,0,0,0,0,0,0 -R-Defense-WallTower-PulseLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT14_PLS,WallTower-PulseLas,0,0,14400,0,1,0,0,0,1,0,0 -R-Defense-WallTower-Rail2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT15_RL2,WallTower-Rail2,0,0,14400,0,1,0,0,0,1,0,0 -R-Cyborg-Metals04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET4,0,0,0,5600,0,2,1,0,0,0,0,0 -R-Cyborg-Metals05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,7600,0,1,1,0,0,0,0,0 -R-Cyborg-Metals06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,9600,0,1,1,0,0,0,0,0 -R-Cyborg-Metals07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET7,0,0,0,11600,0,1,1,0,0,0,0,0 -R-Cyborg-Metals08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,13600,0,1,1,0,0,0,0,0 -R-Cyborg-Metals09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,15600,0,1,1,0,0,0,0,0 -R-Vehicle-Metals04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icmolql.pie,0,RES_V_MET4,0,0,0,7600,0,2,1,0,0,0,0,0 -R-Vehicle-Metals05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,9600,0,1,1,0,0,0,0,0 -R-Vehicle-Metals06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,11600,0,1,1,0,0,0,0,0 -R-Vehicle-Metals07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icmolql.pie,0,RES_V_MET7,0,0,0,13600,0,2,1,0,0,0,0,0 -R-Vehicle-Metals08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,15600,0,1,1,0,0,0,0,0 -R-Vehicle-Metals09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,17600,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_D4,0,Cannon1Mk1,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,7200,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,8400,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage07,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_D7,0,Cannon1Mk1,WEAPON,9600,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage08,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,10800,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Damage09,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,6000,0,2,1,0,0,0,0,0 -R-Wpn-Cannon-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_ROF4,0,Cannon1Mk1,WEAPON,10000,1,2,1,0,0,0,0,0 -R-Wpn-Cannon-ROF05,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-ROF06,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,14000,0,1,1,0,0,0,0,0 -R-Wpn-Cannon-Accuracy02,Level All,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CNAC2,0,Cannon1Mk1,WEAPON,4800,1,2,1,0,0,0,0,0 -R-Sys-Sensor-Tower02,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_STW2,Sys-SensoTower02,0,0,1200,1,2,0,0,1,1,0,0 -R-Wpn-Rocket07-Tank-Killer,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_HvAT,0,Rocket-HvyA-T,WEAPON,10000,1,2,0,0,0,0,0,2 -R-Cyborg-Legs01,Level One-Two,0,1,IMAGE_RES_CYBORGTECH,0,0,0,0,CyborgLegs,PROPULSION,7200,0,0,0,0,0,0,0,1 -R-Cyborg-Wpn-RotMG-Grd,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_MG4,0,MG4ROTARYMk1,WEAPON,7200,0,1,0,0,0,0,1,1 -R-Cyborg-Wpn-Rail1-Grd,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_RL1,0,RailGun1Mk1,WEAPON,14400,0,1,0,0,0,0,0,1 -R-Cyborg-Wpn-ATMiss-Grd,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_ATM,0,Missile-A-T,WEAPON,14400,0,1,0,0,0,0,0,1 -R-Cyborg-Wpn-Laser1-Grd,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_LS1,0,Laser2PULSEMk1,WEAPON,14400,0,1,0,0,0,0,0,1 -R-Defense-HvyFlamer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HVFL,Tower-Projector,0,0,4800,0,1,0,0,1,1,0,0 -R-Defense-SamSite1,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_SAM1,P0-AASite-SAM1,0,0,14400,0,1,0,0,0,1,0,0 -R-Defense-SamSite2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_SAM2,P0-AASite-SAM2,0,0,28800,0,1,0,0,1,1,0,0 -R-Defense-HvyHowitzer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvHOW,Emplacement-Howitzer105,0,0,6000,0,2,0,0,0,1,0,0 -R-Defense-MRL,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MRL,Emplacement-MRL-pit,0,0,1200,0,2,0,0,0,1,0,0 -R-Defense-RotMG,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,Pillbox-RotMG,0,0,4800,0,1,0,0,1,1,0,0 -R-Defense-RotCannon,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RotCan,Wall-VulcanCan,0,0,6000,0,0,0,0,0,1,0,0 -R-Defense-HvyMor,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvyMor,Emplacement-MortarPit01,0,0,3600,0,2,0,0,1,1,0,0 -R-Defense-IDFRocket,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_IDFR,Emplacement-Rocket06-IDF,0,0,4800,0,2,0,0,0,1,0,0 -R-Defense-HvyA-Trocket,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HVATR,Emplacement-HvyATrocket,0,0,4800,0,1,0,0,0,1,0,0 -R-Defense-Emplacement-HPVcannon,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HPV,Emplacement-HPVcannon,0,0,3600,0,1,0,0,1,1,0,0 -R-Defense-PulseLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PulseLas,Emplacement-PulseLaser,0,0,14400,0,1,0,0,0,1,0,0 -R-Defense-Rail2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Rail2,Emplacement-Rail2,0,0,14400,0,1,0,0,0,1,0,0 -R-Defense-Rail3,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Rail3,Emplacement-Rail3,0,0,28800,0,1,0,0,0,1,0,0 -R-Defense-MdArtMissile,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MdAM,Emplacement-MdART-pit,0,0,14400,0,1,0,0,3,1,0,0 -R-Defense-HvyArtMissile,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvAM,Emplacement-HvART-pit,0,0,28800,0,1,0,0,2,1,0,0 -R-Defense-WallTower-HvyA-Trocket,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT12_HAT,WallTower-HvATrocket,0,0,7200,0,1,0,0,0,1,0,0 -R-Defense-WallTower-HPVcannon,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT13_HPV,WallTower-HPVcannon,0,0,14400,0,1,0,0,1,1,0,0 -R-Defense-WallTower-A-Tmiss,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT9_ATM,WallTower-Atmiss,0,0,14400,0,1,0,0,1,1,0,0 -R-Defense-WallUpgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,RES_DF_WU4,0,0,0,6000,0,3,1,0,0,0,0,0 -R-Defense-WallUpgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 -R-Defense-WallUpgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 -R-Defense-WallUpgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,RES_DF_WU7,0,0,0,12000,0,2,1,0,0,0,0,0 -R-Defense-WallUpgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,14000,0,1,1,0,0,0,0,0 -R-Defense-WallUpgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,16000,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,RES_ST_FU4,0,0,0,9200,1,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,11200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,13200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,RES_ST_FCY01,0,0,0,2400,0,2,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,7200,1,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,RES_ST_FCY4,0,0,0,9200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,11200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,13200,0,1,1,0,0,0,0,0 -R-Struc-VTOLFactory-Upgrade01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,RES_ST_VPU1,0,0,0,2400,0,1,1,0,0,0,0,0 -R-Struc-VTOLFactory-Upgrade02,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 -R-Struc-VTOLFactory-Upgrade03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 -R-Struc-VTOLFactory-Upgrade04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,RES_ST_VPU4,0,0,0,6000,1,1,1,0,0,0,0,0 -R-Struc-VTOLFactory-Upgrade05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 -R-Struc-VTOLFactory-Upgrade06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 -R-Struc-VTOLPad-Upgrade01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VPU1,A0VtolPad,0,0,4800,1,1,1,0,0,0,0,0 -R-Struc-VTOLPad-Upgrade02,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,6000,0,1,1,0,0,0,0,0 -R-Struc-VTOLPad-Upgrade03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,8000,0,1,1,0,0,0,0,0 -R-Struc-VTOLPad-Upgrade04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VPU4,A0VtolPad,0,0,10000,0,1,1,0,0,0,0,0 -R-Struc-VTOLPad-Upgrade05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,12000,0,1,1,0,0,0,0,0 -R-Struc-VTOLPad-Upgrade06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,14000,0,1,1,0,0,0,0,0 -R-Struc-Materials04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,RES_ST_MAT4,0,0,0,6000,0,2,1,0,0,0,0,0 -R-Struc-Materials05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 -R-Struc-Materials06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 -R-Struc-Materials07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,RES_ST_MAT7,0,0,0,12000,0,2,1,0,0,0,0,0 -R-Struc-Materials08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,14000,0,1,1,0,0,0,0,0 -R-Struc-Materials09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,16000,0,1,1,0,0,0,0,0 -R-Struc-Power-Upgrade01,Level Two-Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_POWERTECH,blpower4.pie,0,RES_POWU1,0,0,0,6000,1,2,1,0,0,0,0,0 -R-Struc-Power-Upgrade02,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_POWERTECH,blpower4.pie,0,RES_POWU2,0,0,0,9000,1,2,1,0,0,0,0,0 -R-Struc-Research-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,RES_ST_RU4,0,0,0,4800,1,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,6000,0,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,RES_ST_RU7,0,0,0,10000,1,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,12000,0,1,1,0,0,0,0,0 -R-Struc-Research-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,14000,0,1,1,0,0,0,0,0 -R-Struc-RprFac-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,0,0,RES_ST_RFU4,A0RepairCentre3,0,0,6000,0,1,1,0,0,0,0,0 -R-Struc-RprFac-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,8000,0,1,1,0,0,0,0,0 -R-Struc-RprFac-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,10000,0,1,1,0,0,0,0,0 -R-Sys-Engineering02,Level Two-Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,trlcon.pie,0,RES_ENGIN2,0,0,0,4800,1,2,1,0,0,0,0,0 -R-Sys-Engineering03,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,trlcon.pie,0,RES_ENGIN3,0,0,0,9600,1,2,1,0,0,0,0,0 -R-Sys-CBSensor-Turret01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_CBSTU1,0,Sys-CBTurret01,SENSOR,4800,0,1,0,0,0,0,0,1 -R-Sys-CBSensor-Tower01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_CBSTW1,Sys-CB-Tower01,0,BODY,3600,0,2,0,0,0,1,0,0 -R-Sys-VTOLCBS-Turret01,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VCBSTU1,0,Sys-VTOLCBTurret01,SENSOR,8400,0,2,0,0,0,0,0,1 -R-Sys-VTOLCBS-Tower01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VCBSTW1,Sys-VTOL-CB-Tower01,0,0,7200,1,2,0,0,0,1,0,0 -R-Sys-VTOLStrike-Turret01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VSTU1,0,Sys-VstrikeTurret01,SENSOR,7200,0,2,0,0,0,0,0,1 -R-Sys-VTOLStrike-Tower01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VSTW1,Sys-VTOL-RadarTower01,0,0,7200,0,2,0,0,0,1,0,0 -R-Vehicle-Engine04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,iceng.pie,0,RES_V_EN4,0,0,0,7000,0,2,1,0,0,0,0,0 -R-Vehicle-Engine05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,9000,0,1,1,0,0,0,0,0 -R-Vehicle-Engine06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,11000,0,1,1,0,0,0,0,0 -R-Vehicle-Engine07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,iceng.pie,0,RES_V_EN7,0,0,0,13000,0,1,1,0,0,0,0,0 -R-Vehicle-Engine08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,15000,0,2,1,0,0,0,0,0 -R-Vehicle-Engine09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,17000,0,2,1,0,0,0,0,0 -R-Wpn-AAGun-Accuracy01,Level Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAAC1,0,QuadMg1AAGun,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-Accuracy02,Level Two-Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAAC2,0,QuadMg1AAGun,WEAPON,7200,0,2,1,0,0,0,0,0 -R-Wpn-AAGun-Accuracy03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAAC3,0,QuadMg1AAGun,WEAPON,8400,0,2,1,0,0,0,0,0 -R-Wpn-AAGun-Damage01,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAD1,0,QuadMg1AAGun,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-Damage02,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,7200,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-Damage03,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,8400,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-Damage04,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAD4,0,QuadMg1AAGun,WEAPON,9600,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-Damage05,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,10800,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-Damage06,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAROF1,0,QuadMg1AAGun,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Wpn-AAGun-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,4800,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,6000,0,2,1,0,0,0,0,0 -R-Wpn-AAGun-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAROF4,0,QuadMg1AAGun,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-ROF05,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,10000,0,1,1,0,0,0,0,0 -R-Wpn-AAGun-ROF06,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-Bomb01,Level Two,0,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BMB1,0,0,BODY,5500,0,1,0,0,0,0,0,1 -R-Wpn-Bomb02,Level Two,0,0,IMAGE_RES_WEAPONTECH,trmvtlhe.PIE,0,RES_W_BMB2,0,0,BODY,7200,0,2,0,0,0,0,0,1 -R-Wpn-Bomb03,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,trlvtlin.PIE,0,RES_W_BMB3,0,0,BODY,7200,0,2,0,0,0,0,0,1 -R-Wpn-Bomb04,Level Three,0,0,IMAGE_RES_WEAPONTECH,trmvtlin.PIE,0,RES_W_BMB4,0,0,BODY,9200,0,2,0,0,0,0,0,1 -R-Wpn-Flamer-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_D4,0,Flame2,WEAPON,7200,0,1,1,0,0,0,0,0 -R-Wpn-Flamer-Damage05,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame2,WEAPON,9200,0,1,1,0,0,0,0,0 -R-Wpn-Flamer-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame2,WEAPON,11200,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Accuracy01,Level Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWAC1,0,Howitzer105Mk1,WEAPON,7200,1,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Accuracy02,Level Two-Three,IMAGE_RES_GRPACC,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,9200,0,2,1,0,0,0,0,0 -R-Wpn-Howitzer-Accuracy03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWAC3,0,Howitzer105Mk1,WEAPON,11200,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Damage01,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWD1,0,Howitzer105Mk1,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Damage02,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Damage03,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Damage04,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWD4,0,Howitzer105Mk1,WEAPON,10000,0,2,1,0,0,0,0,0 -R-Wpn-Howitzer-Damage05,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-Damage06,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,14000,0,1,1,0,0,0,0,0 -R-Wpn-Energy-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASAC1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Energy-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASD1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Energy-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Energy-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,43200,0,1,1,0,0,0,0,0 -R-Wpn-Energy-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASROF1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Energy-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Energy-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,43200,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC1,0,Missile-LtSAM,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Accuracy02,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC2,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_D1,0,Missile-LtSAM,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Missile-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,43200,0,1,1,0,0,0,0,0 -R-Wpn-Missile-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_ROF1,0,Missile-A-T,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Missile-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Missile-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,43200,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_D4,0,Mortar1Mk1,WEAPON,9200,0,2,1,0,0,0,0,0 -R-Wpn-Mortar-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,11200,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar2Mk1,WEAPON,13200,0,1,1,0,0,0,0,0 -R-Wpn-Rail-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL_AC1,0,RailGun1Mk1,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Rail-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL_D1,0,RailGun1Mk1,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Rail-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Rail-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,43200,0,2,1,0,0,0,0,0 -R-Wpn-Rail-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL_ROF1,0,RailGun1Mk1,WEAPON,14400,0,1,1,0,0,0,0,0 -R-Wpn-Rail-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,28800,0,1,1,0,0,0,0,0 -R-Wpn-Rail-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,43200,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-Accuracy01,Level One,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_AC1,0,Rocket-Pod,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Wpn-Rocket-Accuracy02,Level All,IMAGE_RES_GRPACC,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,7200,0,2,1,0,0,0,0,0 -R-Wpn-Rocket-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,3600,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_D4,0,Rocket-Pod,WEAPON,4800,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-Rocket-ROF03,Level All,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,7200,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Accuracy01,Level One,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_AC1,0,Rocket-LtA-T,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Wpn-RocketSlow-Accuracy02,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_AC2,0,Rocket-LtA-T,WEAPON,4800,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Accuracy03,Level All,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_AC3,0,Rocket-LtA-T,WEAPON,7200,1,2,1,0,0,0,0,0 -R-Wpn-RocketSlow-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_D1,0,Rocket-LtA-T,WEAPON,2400,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,3600,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,4800,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_D4,0,Rocket-LtA-T,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,10000,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_ROF1,0,Rocket-LtA-T,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-RocketSlow-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Defense-WallTower-Rail3,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT15_RL3,WallTower-Rail3,0,0,14400,0,1,0,0,0,1,0,0 -R-Wpn-Mortar-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_ROF4,0,Mortar2Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 -R-Cyborg-Hvywpn-HPV,Level Two-Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_HPV,0,Cannon4AUTOMk1,WEAPON,12000,0,2,0,1,0,0,0,1 -R-Vehicle-Armor-Heat01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icamrhot.pie,0,RES_V_AH1,0,0,0,4800,0,1,1,0,0,0,0,0 -R-Vehicle-Armor-Heat02,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,7000,0,1,1,0,0,0,0,0 -R-Vehicle-Armor-Heat03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,9000,0,1,1,0,0,0,0,0 -R-Defense-MassDriver,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MD,X-Super-MassDriver,0,0,50000,0,3,0,0,0,1,0,0 -R-Defense-Super-Cannon,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_CAN,X-Super-Cannon,0,0,8400,0,2,0,0,0,1,0,0 -R-Vehicle-Armor-Heat04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icamrhot.pie,0,RES_V_AH4,0,0,0,11000,0,2,1,0,0,0,0,0 -R-Vehicle-Armor-Heat05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,13000,0,1,1,0,0,0,0,0 -R-Vehicle-Armor-Heat06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,15000,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,RES_CY_AH1,0,0,0,3600,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat02,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,6000,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,RES_CY_AH4,0,0,0,8000,0,2,1,0,0,0,0,0 -R-Cyborg-Armor-Heat05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 -R-Cyborg-Armor-Heat06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,12000,0,1,1,0,0,0,0,0 -R-Wpn-Bomb-Accuracy01,Level Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BAC1,0,0,BODY,7200,0,3,1,0,0,0,0,0 -R-Wpn-Bomb-Accuracy02,Level Two-Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BAC2,0,0,BODY,9200,0,1,1,0,0,0,0,0 -R-Wpn-Bomb-Accuracy03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BAC3,0,0,BODY,11200,0,1,1,0,0,0,0,0 -R-Wpn-Mortar-Acc01,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_AC1,0,Mortar1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 -R-Wpn-Mortar-Acc02,Level Two-Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_AC2,0,Mortar2Mk1,WEAPON,7200,0,2,1,0,0,0,0,0 -R-Wpn-Mortar-Acc03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_AC3,0,Mortar2Mk1,WEAPON,9200,1,2,1,0,0,0,0,0 -R-Wpn-Howitzer-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWRF1,0,Howitzer105Mk1,WEAPON,6000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 -R-Wpn-Howitzer-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWRF4,0,Howitzer105Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 -R-Wpn-Missile-LtSAM,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_LtSAM1,0,Missile-LtSAM,WEAPON,14400,1,2,0,0,0,0,0,1 -R-Wpn-Missile-HvSAM,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HvSAM1,0,Missile-HvySAM,WEAPON,28800,0,2,0,0,0,0,1,1 -R-Wpn-MdArtMissile,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_MART,0,Missile-MdArt,WEAPON,14400,1,3,0,0,0,0,0,1 -R-Wpn-HvArtMissile,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HART,0,Missile-HvyArt,WEAPON,28800,1,2,0,0,0,0,0,1 -R-Defense-Pillbox-RotMG,Level Two-Three,0,0,0,0,0,0,Pillbox-RotMG,0,0,4800,0,0,0,0,1,1,0,0 -R-Sys-Sensor-Upgrade02,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,GNLSNSR1.PIE,0,RES_SY_SU1,0,0,BODY,1800,1,1,1,0,0,0,0,0 -R-Struc-Power-Upgrade03,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,12000,1,1,1,0,0,0,0,0 -R-Struc-Power-Upgrade01b,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,6000,1,1,1,0,0,0,0,0 -R-Struc-Power-Upgrade01c,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,6000,1,1,1,0,0,0,0,0 -R-Struc-Power-Upgrade03a,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,12000,1,1,1,0,0,0,0,0 -R-Cyborg-Hvywpn-Mcannon,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_MC,0,Cannon2A-TMk1,WEAPON,12000,0,3,0,1,0,0,0,1 -R-Cyborg-Hvywpn-Acannon,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_AC,0,Cannon5VulcanMk1,WEAPON,10000,0,2,0,1,0,0,0,1 -R-Cyborg-Hvywpn-TK,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_TK,0,Rocket-VTOL-HvyA-T,WEAPON,15000,0,2,0,1,0,0,0,1 -R-Sys-Autorepair-General,Level All,IMAGE_RES_GRPREP,0,IMAGE_RES_COMPUTERTECH,ICCCCONS.PIE,0,RES_SY_AR,0,0,BODY,14400,1,1,0,0,0,0,0,1 -R-Sys-Resistance-Circuits,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,ICCCCONS.PIE,0,RES_SY_RC,0,0,0,14400,1,3,1,0,0,0,0,0 -R-Wpn-Cannon6TwinAslt,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN6_T_A,0,Cannon6TwinAslt,WEAPON,12000,1,2,0,0,0,0,0,1 -R-Defense-Cannon6,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,PillBox-Cannon6,0,BODY,6400,0,2,0,0,0,1,0,0 -R-Wpn-HvyLaser,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HLAS,0,HeavyLaser,WEAPON,36000,1,1,0,0,0,0,2,2 -R-Defense-HeavyLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HEAVYLAS,Emplacement-HeavyLaser,0,BODY,20400,0,1,0,0,0,1,0,0 -R-Sys-Sensor-WSTower,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_WS,Sys-SensoTowerWS,0,BODY,16400,1,6,0,0,0,1,0,0 -R-Sys-Sensor-UpLink,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_UP,A0Sat-linkCentre,0,BODY,28800,1,3,0,0,0,1,0,0 -R-Wpn-LasSat,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LASSAT,A0LasSatCommand,0,BODY,56600,1,2,0,0,0,1,0,0 -R-Wpn-PlasmaCannon,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_PLASCAN,0,Laser4-PlasmaCannon,WEAPON,20000,1,1,0,0,0,0,0,1 -R-Cyborg-Hvywpn-PulseLsr,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_PLAS,0,Laser2PULSEMk1,WEAPON,16000,0,1,0,1,0,0,0,1 -R-Cyborg-Hvywpn-RailGunner,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_RG,0,RailGun2Mk1,WEAPON,17000,0,1,0,1,0,0,0,1 -R-Cyborg-Hvywpn-A-T,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_AT,0,Missile-A-T,WEAPON,15000,0,2,0,1,0,0,0,1 -R-Sys-SpyTower,Level All,0,0,IMAGE_RES_SYSTEMTECH,icmolql.pie,0,0,Sys-SpyTower,0,BODY,7200,1,1,0,0,0,1,0,0 -R-Defense-PlasmaCannon,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PLASCAN,Emplacement-PulseLaser,0,BODY,20400,0,1,0,0,0,1,0,0 -R-Defense-EMPCannon,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_EMP,WallTower-EMP,0,BODY,28800,0,1,0,0,0,1,0,0 -R-Wpn-RocketSlow-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,10000,0,0,0,0,0,0,0,0 -R-Defense-Super-Rocket,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RKT,X-Super-Rocket,0,0,12000,0,3,0,0,0,1,0,0 -R-Defense-Super-Missile,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MSL,X-Super-Missile,0,0,50000,0,3,0,0,0,1,0,0 -R-Defense-WallUpgrade10,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,18000,0,1,1,0,0,0,0,0 -R-Defense-WallUpgrade11,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,22000,0,1,1,0,0,0,0,0 -R-Defense-WallUpgrade12,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,24000,0,1,1,0,0,0,0,0 -R-Vehicle-Body13,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B13,0,Body13SUP,BODY,50000,1,4,0,0,0,0,0,1 -R-Vehicle-Body14,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B14,0,Body14SUP,BODY,55000,1,4,0,0,0,0,0,1 -R-Wpn-Flamer-Damage07,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_D7,0,PlasmiteFlamer,WEAPON,13200,0,2,1,0,0,0,0,0 -R-Wpn-Flamer-Damage08,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,PlasmiteFlamer,WEAPON,15200,0,1,1,0,0,0,0,0 -R-Wpn-Flamer-Damage09,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,PlasmiteFlamer,WEAPON,17200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,RES_ST_FU7,0,0,BODY,15200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,BODY,17200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,BODY,19200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,RES_ST_FCY7,0,0,BODY,15200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,BODY,17200,0,1,1,0,0,0,0,0 -R-Struc-Factory-Cyborg-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,BODY,19200,0,1,1,0,0,0,0,0 -R-Wpn-MortarEMP,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M2,0,MortarEMP,WEAPON,20000,0,1,0,0,0,0,0,0 -R-Wpn-AALaser,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HvSAM1,0,AAGunLaser,WEAPON,28800,0,1,0,0,0,0,1,1 -R-Defense-AA-Laser,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_AALAS,P0-AASite-Laser,0,PROPULSION,28800,0,1,0,0,0,1,0,0 -R-Defense-EMPMortar,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_EMPM,Emplacement-MortarEMP,0,PROPULSION,28800,0,1,0,0,0,1,0,0 -R-Defense-WallTower-SamHvy,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_MS_SAM2WT,WallTower-SamHvy,0,PROPULSION,30000,0,2,0,0,1,1,0,0 -R-Defense-WallTower-QuadRotAA,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_QUADAA,WallTower-QuadRotAAGun,0,PROPULSION,30000,0,2,0,0,0,1,0,0 -R-Sys-Sensor-WS,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_WST,0,Sensor-WideSpec,SENSOR,14400,1,5,0,0,0,0,0,1 -R-Wpn-EMPCannon,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_WEAPONTECH,0,0,RES_EMP_CANT,0,EMP-Cannon,WEAPON,28800,0,2,0,0,0,0,0,1 -R-Defense-WallTower-DoubleAAgun,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_DOUBLEAA,WallTower-DoubleAAGun,0,PROPULSION,30000,0,1,0,0,0,1,0,0 -R-Defense-WallTower-SamSite,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_MS_SAM1WT,WallTower-SamSite,0,PROPULSION,30000,0,2,0,0,0,1,0,0 -R-Wpn-MG5,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_WT_TWINAGUN,0,MG5TWINROTARY,WEAPON,15000,1,2,0,0,0,0,1,1 -R-Defense-WallTower-TwinAGun,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_TWINAGHP,WallTower-TwinAssaultGun,0,PROPULSION,30000,0,1,0,0,1,1,0,0 -R-Wpn-Bomb05,Level Three,0,0,IMAGE_RES_WEAPONTECH,trmvtlin.PIE,0,RES_W_BMB5,0,Bomb5-VTOL-Plasmite,WEAPON,20000,0,2,0,0,0,0,0,1 -R-Wpn-Bomb06,Level Three,0,0,IMAGE_RES_WEAPONTECH,trmvtlin.PIE,0,RES_W_BMB6,0,Bomb6-VTOL-EMP,WEAPON,25000,0,2,0,0,0,0,0,1 -R-Comp-CommandTurret02,Level One,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT2,0,CommandBrain01,BRAIN,5000,0,2,0,0,0,0,1,1 -R-Comp-CommandTurret03,Level Two,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT3,0,CommandBrain01,BRAIN,8000,0,2,0,0,0,0,1,1 -R-Comp-CommandTurret04,Level Three,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT4,0,CommandBrain01,BRAIN,11000,0,2,0,0,0,0,1,1 +R-Cyborg-Wpn-Thermite,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_TFL,0,Flame2,WEAPON,900,0,2,0,1,0,0,0,1 +R-Cyborg-Wpn-Grenade,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_GRN,0,Mortar1Mk1,WEAPON,900,0,2,0,0,0,0,0,1 +R-Cyborg-Sys-ComEng,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYS_CEN,0,Spade1Mk1,CONSTRUCT,600,0,2,0,0,0,0,0,1 +R-Cyborg-Sys-Mechanic,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYS_MCH,0,LightRepair1,REPAIR,600,0,2,0,0,0,0,0,1 +R-Wpn-Howitzer-Incenediary,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_INH,0,Howitzer-Incenediary,WEAPON,12000,1,3,0,0,0,0,0,1 +R-Defense-Howitzer-Incenediary,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_INH,Emplacement-Howitzer-Incenediary,0,0,4800,0,2,0,0,0,1,0,0 +R-Wpn-Plasmite-Flamer,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_PLFL,0,PlasmiteFlamer,WEAPON,7200,1,2,0,0,0,0,1,1 +R-Defense-PlasmiteFlamer,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PFL,Plasmite-flamer-bunker,0,BODY,4800,0,1,0,0,2,1,0,0 +R-Wpn-Mortar-Incenediary,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_IMORT,0,Mortar-Incenediary,WEAPON,3600,1,3,0,0,0,0,0,1 +R-Defense-MortarPit-Incenediary,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_IMP,Emplacement-MortarPit-Incenediary,0,BODY,2400,0,2,0,0,0,1,0,0 +R-Cyborg-Transport,Level All,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYTRANS,0,V-Tol,PROPULSION,3600,1,2,0,2,0,0,0,1 +R-Cyborg-Armor-Heat07,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,BODY,14000,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,BODY,16000,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,BODY,18000,0,1,1,0,0,0,0,0 +R-Vehicle-Armor-Heat07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icamrhot.pie,0,RES_V_AH7,0,0,BODY,17000,0,1,1,0,0,0,0,0 +R-Vehicle-Armor-Heat08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,BODY,19000,0,1,1,0,0,0,0,0 +R-Vehicle-Armor-Heat09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,BODY,21000,0,1,1,0,0,0,0,0 +R-Sys-MobileRepairTurretHvy,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_REPTUHVY,0,HeavyRepair,REPAIR,600,0,1,0,0,0,0,0,1 +R-Vehicle-Prop-Tracks,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_TRACK1,0,tracked01,PROPULSION,2400,1,2,0,0,0,0,0,1 +R-Vehicle-Prop-Hover,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_P_H1,0,hover01,PROPULSION,3600,1,2,0,0,0,0,0,1 +R-Struc-Research-Module,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_RM1,A0ResearchModule1,0,0,1200,1,2,0,0,0,1,0,0 +R-Wpn-Rocket05-MiniPod,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_MP1,0,Rocket-Pod,WEAPON,1200,1,1,0,0,0,0,0,2 +R-Wpn-Rocket01-LtAT,Level All,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_LTAT1,0,Rocket-LtA-T,WEAPON,3600,0,1,0,0,0,0,0,2 +R-Defense-HardcreteWall,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_HCW1,A0HardcreteMk1Wall,0,0,600,1,1,0,0,0,2,0,0 +R-Wpn-Cannon1Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN1MK1,0,Cannon1Mk1,WEAPON,2400,1,1,0,0,0,0,0,2 +R-Struc-Factory-Module,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_FM1,A0FacMod1,0,0,2400,1,3,0,0,0,1,0,0 +R-Wpn-MG1Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG1MK1,0,MG1Mk1,WEAPON,60,1,1,0,0,0,0,0,2 +R-Wpn-MG2Mk1,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG2MK1,0,MG2Mk1,WEAPON,1200,1,1,0,0,0,0,0,2 +R-Wpn-MG3Mk1,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG3MK1,0,MG3Mk1,WEAPON,2400,1,2,0,0,0,0,0,2 +R-Wpn-Cannon2Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN2MK1,0,Cannon2A-TMk1,WEAPON,4800,0,2,0,0,0,0,0,1 +R-Wpn-Rocket02-MRL,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_MRL1,0,Rocket-MRL,WEAPON,2400,1,1,0,0,0,0,0,1 +R-Wpn-Mortar01Lt,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MORTA1,0,Mortar1Mk1,WEAPON,2400,1,2,0,0,0,0,0,1 +R-Wpn-Flamer01Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_FLAME1,0,Flame1Mk1,WEAPON,600,1,2,0,0,0,0,0,1 +R-Wpn-Mortar02Hvy,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M2,0,Mortar2Mk1,WEAPON,7200,0,3,0,0,0,0,0,1 +R-Struc-PowerModuleMk1,Level One,0,0,IMAGE_RES_POWERTECH,0,0,RES_POWMD1,A0PowMod1,0,0,1200,1,1,1,0,0,1,0,0 +R-Vehicle-Body01,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B01,0,Body1REC,BODY,600,0,1,0,0,0,0,0,1 +R-Vehicle-Body02,Level Two,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B02,0,Body2SUP,BODY,6000,1,2,0,0,0,0,0,1 +R-Vehicle-Body03,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B03,0,Body3MBT,BODY,14400,1,2,0,0,0,0,0,1 +R-Vehicle-Body04,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B04,0,Body4ABT,BODY,1200,1,2,0,0,0,0,0,1 +R-Vehicle-Body05,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B05,0,Body5REC,BODY,1200,0,2,0,0,0,0,0,1 +R-Vehicle-Body06,Level Two,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B06,0,Body6SUPP,BODY,7200,1,3,0,0,0,0,0,1 +R-Vehicle-Body07,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B07,0,Body7ABT,BODY,28800,0,4,0,0,0,0,0,1 +R-Vehicle-Body08,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B08,0,Body8MBT,BODY,2400,1,2,0,0,0,0,0,1 +R-Vehicle-Body09,Level All,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B09,0,Body9REC,BODY,8400,1,3,0,0,0,0,0,1 +R-Vehicle-Body10,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B10,0,Body10MBT,BODY,43200,0,3,0,0,0,0,0,1 +R-Vehicle-Body11,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B11,0,Body11ABT,BODY,2400,0,2,0,0,0,0,0,1 +R-Vehicle-Body12,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B12,0,Body12SUP,BODY,3600,1,2,0,0,0,0,0,1 +R-Sys-Sensor-Tower01,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_STW1,Sys-SensoTower01,0,0,900,0,2,0,0,0,1,0,0 +R-Defense-WallTower02,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT2_LC,WallTower02,0,0,1500,0,2,0,0,0,1,0,0 +R-Defense-WallTower01,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_WT1,WallTower01,0,0,1200,0,3,0,0,0,1,0,0 +R-Defense-WallTower04,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT4_HC,WallTower04,0,0,2400,0,2,0,0,0,1,0,0 +R-Defense-WallTower03,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT3_MC,WallTower03,0,0,1800,0,2,0,0,1,1,0,0 +R-Sys-Sensor-Turret01,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SENSO1,0,SensorTurret1Mk1,SENSOR,900,0,1,0,0,0,0,0,1 +R-Struc-RepairFacility,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_REPAI1,A0RepairCentre3,0,0,2400,0,2,0,0,0,1,0,0 +R-Wpn-Cannon4AMk1,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_4A,0,Cannon4AUTOMk1,WEAPON,8000,1,2,0,0,0,0,1,2 +R-Sys-Engineering01,Level One-Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,trlcon.pie,0,RES_ENGIN1,0,0,0,1200,1,1,1,0,0,0,0,0 +R-Wpn-Cannon3Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN3MK1,0,Cannon375mmMk1,WEAPON,7200,1,4,0,0,0,0,0,1 +R-Wpn-Rocket06-IDF,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_IDF,0,Rocket-IDF,WEAPON,7200,1,2,0,0,0,0,0,1 +R-Wpn-HowitzerMk1,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HMK1,0,Howitzer105Mk1,WEAPON,9000,1,2,0,0,0,0,0,1 +CAM1RESEARCH,Level One,0,1,IMAGE_RES_COMPUTERTECH,MICAPSUL.PIE,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +R-Struc-Factory-Cyborg,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_FCY1,A0CyborgFactory,0,0,1800,0,2,0,0,0,1,0,0 +R-Cyborg-Wpn-MG,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_MG1,0,MG1Mk1,WEAPON,600,0,1,0,1,0,0,0,1 +R-Wpn-MG-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_D1,0,MG1Mk1,WEAPON,600,1,1,1,0,0,0,0,0 +R-Wpn-MG-ROF01,Level One-Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_ROF1,0,MG1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Wpn-MG-Damage02,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_D2,0,MG1Mk1,WEAPON,1200,0,1,1,0,0,0,0,0 +R-Wpn-MG-ROF02,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_ROF2,0,MG1Mk1,WEAPON,4800,0,1,1,0,0,0,0,0 +R-Wpn-MG-Damage03,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,MG1Mk1,WEAPON,2400,0,1,1,0,0,0,0,0 +R-Wpn-MG-ROF03,Level Two-Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG_ROF3,0,MG1Mk1,WEAPON,6800,1,1,1,0,0,0,0,0 +R-Defense-WallUpgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,RES_DF_WU1,0,0,0,1200,0,2,1,0,0,0,0,0 +R-Struc-CommandRelay,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_CR1,A0ComDroidControl,0,0,1200,1,1,0,0,0,1,0,0 +R-Comp-SynapticLink,Level One,0,0,IMAGE_RES_COMPUTERTECH,icsynapt.PIE,0,RES_C_SL1,0,0,0,1200,1,1,0,0,0,0,0,0 +R-Vehicle-Engine01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,iceng.pie,0,RES_V_EN1,0,0,0,1200,1,1,1,0,0,0,0,0 +R-Vehicle-Engine02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,2400,1,1,1,0,0,0,0,0 +R-Vehicle-Engine03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,4800,1,1,1,0,0,0,0,0 +R-Wpn-Flamer-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_D1,0,Flame1Mk1,WEAPON,600,1,1,1,0,0,0,0,0 +R-Wpn-Flamer-Damage02,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,1200,0,1,1,0,0,0,0,0 +R-Wpn-Flamer-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,2400,0,1,1,0,0,0,0,0 +R-Wpn-Flamer-ROF01,Level One-Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_ROF1,0,Flame1Mk1,WEAPON,900,0,1,1,0,0,0,0,0 +R-Wpn-Flamer-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,6000,1,1,1,0,0,0,0,0 +R-Wpn-Flamer-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame1Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_D1,0,Cannon1Mk1,WEAPON,1200,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,2400,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,3600,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_ROF1,0,Cannon1Mk1,WEAPON,4000,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_D1,0,Mortar1Mk1,WEAPON,1800,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,3600,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,7200,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-ROF01,Level One-Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_ROF1,0,Mortar1Mk1,WEAPON,1800,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,6000,0,2,1,0,0,0,0,0 +R-Wpn-Mortar-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar2Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Comp-CommandTurret01,Level One,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT1,0,CommandBrain01,BRAIN,1200,0,1,0,1,0,0,0,1 +R-Defense-TankTrap01,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_TTRAP1,A0TankTrap,0,0,600,0,1,0,0,0,1,0,0 +R-Defense-Tower01,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_TOWER1,GuardTower1,0,0,600,1,1,0,0,0,1,0,0 +R-Defense-Tower06,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PODTOW,GuardTower6,0,0,2400,0,2,0,0,0,1,0,0 +R-Defense-Pillbox01,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_P1,PillBox1,0,0,1200,0,2,0,0,0,1,0,0 +R-Defense-Pillbox04,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_LC,PillBox4,0,0,1500,0,2,0,0,0,1,0,0 +R-Defense-Pillbox05,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_FL,PillBox5,0,0,1500,0,2,0,0,0,1,0,0 +R-Cyborg-Wpn-Flamer,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_FL1,0,Flame1Mk1,WEAPON,900,0,2,0,1,0,0,0,1 +R-Cyborg-Wpn-Cannon,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_CN1,0,Cannon1Mk1,WEAPON,1500,0,2,0,1,0,0,0,1 +R-Cyborg-Wpn-Rocket,Level One,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_RK1,0,Rocket-LtA-T,WEAPON,900,0,2,0,1,0,0,0,1 +R-Sys-MobileRepairTurret01,Level All,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_REPTU1,0,LightRepair1,REPAIR,600,0,1,0,0,0,0,0,1 +R-Defense-WallUpgrade02,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,2400,0,1,1,0,0,0,0,0 +R-Defense-WallUpgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 +R-Struc-Materials01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,RES_ST_MAT1,0,0,0,1200,0,1,1,0,0,0,0,0 +R-Struc-Materials02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,2400,0,1,1,0,0,0,0,0 +R-Struc-Materials03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 +R-Vehicle-Metals01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icmolql.pie,0,RES_V_MET1,0,0,0,1800,1,2,1,1,0,0,0,0 +R-Vehicle-Metals02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,3600,0,1,1,1,0,0,0,0 +R-Vehicle-Metals03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,5400,1,1,1,1,0,0,0,0 +R-Struc-Research-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,RES_ST_RU1,0,0,0,1200,1,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,2400,0,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,RES_ST_FU1,0,0,0,2400,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,7200,1,1,1,0,0,0,0,0 +R-Cyborg-Metals01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET1,0,0,0,1200,0,3,1,1,0,0,0,0 +R-Cyborg-Metals02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,2400,0,1,1,1,0,0,0,0 +R-Cyborg-Metals03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,3600,0,2,1,1,0,0,0,0 +CAM1WEAPONS,Level One,0,1,IMAGE_RES_WEAPONTECH,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +CAM1SYSTEMS,Level One,0,1,IMAGE_RES_SYSTEMTECH,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +CAM1DEFENSES,Level One,0,1,IMAGE_RES_DEFENCE,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +CAM1STRUCTURES,Level One,0,1,IMAGE_RES_STRUCTURETECH,MICAPSUL.PIE,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +R-Wpn-Rocket03-HvAT,Level All,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_HVAT1,0,Rocket-BB,WEAPON,4800,0,2,0,0,0,0,0,2 +R-Sys-Sensor-Upgrade01,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,GNLSNSR1.PIE,0,RES_SY_SU1,0,0,0,1800,1,2,1,0,0,0,0,0 +R-Vehicle-Prop-Halftracks,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_HALFT1,0,HalfTrack,PROPULSION,1200,1,1,0,0,0,0,0,1 +R-Defense-WallTower06,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_DEFENCE,0,0,RES_WT6_ATR,WallTower06,0,0,1500,0,2,0,0,0,1,0,0 +R-Defense-Pillbox06,Level One,0,0,IMAGE_RES_DEFENCE,0,0,RES_PB_ATR,PillBox6,0,0,1500,0,2,0,0,0,1,0,0 +R-Wpn-Cannon-Accuracy01,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CNAC1,0,Cannon1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Sys-SpyTurret,Level All,0,0,IMAGE_RES_SYSTEMTECH,icmolql.pie,0,RES_SY_SPT,0,SpyTurret01,WEAPON,14400,1,3,0,0,0,0,0,1 +R-Wpn-HvyHowitzer,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HH1,0,Howitzer150Mk1,WEAPON,10000,1,2,0,0,0,0,0,1 +R-Wpn-Rocket-ROF01,Level One,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_ROF1,0,Rocket-Pod,WEAPON,2400,0,2,1,0,0,0,0,0 +R-Wpn-Rocket-ROF02,Level One-Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Wpn-Rocket-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_D1,0,Rocket-Pod,WEAPON,1200,0,1,1,0,0,0,0,0 +R-Wpn-Rocket-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,2400,0,1,1,0,0,0,0,0 +R-Vehicle-Prop-Wheels,Level One,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_P_W1,0,wheeled01,PROPULSION,1200,0,1,0,1,0,0,0,1 +R-Sys-Spade1Mk1,Level One,0,1,IMAGE_RES_SYSTEMTECH,0,0,0,0,Spade1Mk1,CONSTRUCT,10,1,1,0,0,0,0,0,1 +R-Struc-RprFac-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,0,0,RES_ST_RFU1,A0RepairCentre3,0,0,2400,0,2,1,0,0,0,0,0 +R-Struc-RprFac-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,3600,0,2,1,0,0,0,0,0 +R-Struc-RprFac-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,4800,0,2,1,0,0,0,0,0 +R-Vehicle-Prop-VTOL,Level All,0,0,IMAGE_RES_DROIDTECH,DPVTOL.PIE,0,RES_V_P_V1,0,0,BODY,6000,1,3,0,0,0,0,0,1 +R-Struc-VTOLPad,Level Two,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VP,A0VtolPad,0,0,3600,0,2,0,0,0,1,0,0 +R-Struc-VTOLFactory,Level Two,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VF,A0VTolFactory1,0,0,6000,0,1,0,0,0,1,0,0 +R-Wpn-Cannon5,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN5,0,Cannon5VulcanMk1,WEAPON,9000,1,2,0,0,0,0,0,1 +R-Wpn-AAGun02,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA2,0,AAGun2Mk1,WEAPON,4800,1,2,0,0,0,0,0,1 +R-Wpn-Flame2,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_FLAME2,0,Flame2,WEAPON,7200,1,3,0,0,0,0,1,1 +R-Wpn-Howitzer03-Rot,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RHOW,0,Howitzer03-Rot,WEAPON,12000,1,2,0,0,0,0,1,1 +R-Wpn-MG4,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG4,0,MG4ROTARYMk1,WEAPON,7200,1,2,0,0,0,0,6,2 +R-Wpn-Mortar3,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M3,0,Mortar3ROTARYMk1,WEAPON,10000,1,2,0,0,0,0,1,1 +R-Wpn-AAGun03,Level One-Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA3,0,QuadMg1AAGun,WEAPON,3600,1,1,0,0,0,0,0,1 +R-Wpn-AAGun04,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA4,0,QuadRotAAGun,WEAPON,6000,0,2,0,0,0,0,2,1 +R-Wpn-Laser01,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LAS1,0,Laser3BEAMMk1,WEAPON,14400,1,2,0,0,0,0,0,2 +R-Wpn-Laser02,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LAS2,0,Laser2PULSEMk1,WEAPON,28800,1,1,0,0,0,0,0,2 +R-Wpn-Missile2A-T,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,14400,0,2,0,0,0,0,2,2 +R-Wpn-RailGun01,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL1,0,RailGun1Mk1,WEAPON,14400,1,3,0,0,0,0,0,2 +R-Wpn-RailGun02,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL2,0,RailGun2Mk1,WEAPON,28800,1,2,0,0,0,0,2,2 +R-Wpn-RailGun03,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL3,0,RailGun3Mk1,WEAPON,43200,1,2,0,0,0,0,0,1 +R-Defense-AASite-QuadBof,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_AA1,AASite-QuadBof,0,0,4800,0,1,0,0,0,1,0,0 +R-Defense-AASite-QuadMg1,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_AA2,AASite-QuadMg1,0,0,3600,1,1,0,0,0,1,0,0 +R-Defense-AASite-QuadRotMg,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_AA3,AASite-QuadRotMg,0,0,6000,0,2,0,0,1,1,0,0 +R-Defense-PrisLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PrisLas,Emplacement-PrisLas,0,0,14400,0,1,0,0,0,1,0,0 +R-Defense-RotHow,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RotHOW,Emplacement-RotHow,0,0,5000,0,1,0,0,1,1,0,0 +R-Defense-RotMor,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RotMor,Emplacement-RotMor,0,0,4800,0,1,0,0,1,1,0,0 +R-Defense-GuardTower-ATMiss,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_ATMTOW,GuardTower-ATMiss,0,0,14400,0,1,0,0,1,1,0,0 +R-Defense-GuardTower-Rail1,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RL1TOW,GuardTower-Rail1,0,0,14400,0,1,0,0,1,1,0,0 +R-Defense-Howitzer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HOW,Emplacement-Howitzer105,0,BODY,4800,0,1,0,0,0,1,0,0 +R-Defense-MortarPit,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Mpit,Emplacement-MortarPit01,0,0,1200,0,2,0,0,0,1,0,0 +R-Defense-Wall-RotMg,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT7_RMG,Wall-RotMg,0,0,4800,0,2,0,0,1,1,0,0 +R-Defense-Wall-VulcanCan,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT8_RC,Wall-VulcanCan,0,0,4800,0,1,0,0,1,1,0,0 +R-Defense-WallTower-HvyFlamer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT11_HFL,WallTower-Projector,0,0,3600,0,0,0,0,0,0,0,0 +R-Defense-WallTower-PulseLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT14_PLS,WallTower-PulseLas,0,0,14400,0,1,0,0,0,1,0,0 +R-Defense-WallTower-Rail2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT15_RL2,WallTower-Rail2,0,0,14400,0,1,0,0,0,1,0,0 +R-Cyborg-Metals04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET4,0,0,0,5600,0,2,1,0,0,0,0,0 +R-Cyborg-Metals05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,7600,0,1,1,0,0,0,0,0 +R-Cyborg-Metals06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,9600,0,1,1,0,0,0,0,0 +R-Cyborg-Metals07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icmolql.pie,0,RES_CYMET7,0,0,0,11600,0,1,1,0,0,0,0,0 +R-Cyborg-Metals08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,13600,0,1,1,0,0,0,0,0 +R-Cyborg-Metals09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icmolql.pie,0,0,0,0,0,15600,0,1,1,0,0,0,0,0 +R-Vehicle-Metals04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icmolql.pie,0,RES_V_MET4,0,0,0,7600,0,2,1,0,0,0,0,0 +R-Vehicle-Metals05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,9600,0,1,1,0,0,0,0,0 +R-Vehicle-Metals06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,11600,0,1,1,0,0,0,0,0 +R-Vehicle-Metals07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icmolql.pie,0,RES_V_MET7,0,0,0,13600,0,2,1,0,0,0,0,0 +R-Vehicle-Metals08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,15600,0,1,1,0,0,0,0,0 +R-Vehicle-Metals09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icmolql.pie,0,0,0,0,0,17600,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_D4,0,Cannon1Mk1,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,7200,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,8400,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage07,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_D7,0,Cannon1Mk1,WEAPON,9600,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage08,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,10800,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Damage09,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,6000,0,2,1,0,0,0,0,0 +R-Wpn-Cannon-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN_ROF4,0,Cannon1Mk1,WEAPON,10000,1,2,1,0,0,0,0,0 +R-Wpn-Cannon-ROF05,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-ROF06,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Cannon1Mk1,WEAPON,14000,0,1,1,0,0,0,0,0 +R-Wpn-Cannon-Accuracy02,Level All,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CNAC2,0,Cannon1Mk1,WEAPON,4800,1,2,1,0,0,0,0,0 +R-Sys-Sensor-Tower02,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_STW2,Sys-SensoTower02,0,0,1200,1,2,0,0,1,1,0,0 +R-Wpn-Rocket07-Tank-Killer,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_HvAT,0,Rocket-HvyA-T,WEAPON,10000,1,2,0,0,0,0,0,2 +R-Cyborg-Legs01,Level One-Two,0,1,IMAGE_RES_CYBORGTECH,0,0,0,0,CyborgLegs,PROPULSION,7200,0,0,0,0,0,0,0,1 +R-Cyborg-Wpn-RotMG-Grd,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_MG4,0,MG4ROTARYMk1,WEAPON,7200,0,1,0,0,0,0,1,1 +R-Cyborg-Wpn-Rail1-Grd,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_RL1,0,RailGun1Mk1,WEAPON,14400,0,1,0,0,0,0,0,1 +R-Cyborg-Wpn-ATMiss-Grd,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_ATM,0,Missile-A-T,WEAPON,14400,0,1,0,0,0,0,0,1 +R-Cyborg-Wpn-Laser1-Grd,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_LS1,0,Laser2PULSEMk1,WEAPON,14400,0,1,0,0,0,0,0,1 +R-Defense-HvyFlamer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HVFL,Tower-Projector,0,0,4800,0,1,0,0,1,1,0,0 +R-Defense-SamSite1,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_SAM1,P0-AASite-SAM1,0,0,14400,0,1,0,0,0,1,0,0 +R-Defense-SamSite2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_SAM2,P0-AASite-SAM2,0,0,28800,0,1,0,0,1,1,0,0 +R-Defense-HvyHowitzer,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvHOW,Emplacement-Howitzer105,0,0,6000,0,2,0,0,0,1,0,0 +R-Defense-MRL,Level One-Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MRL,Emplacement-MRL-pit,0,0,1200,0,2,0,0,0,1,0,0 +R-Defense-RotMG,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,Pillbox-RotMG,0,0,4800,0,1,0,0,1,1,0,0 +R-Defense-RotCannon,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RotCan,Wall-VulcanCan,0,0,6000,0,0,0,0,0,1,0,0 +R-Defense-HvyMor,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvyMor,Emplacement-MortarPit01,0,0,3600,0,2,0,0,1,1,0,0 +R-Defense-IDFRocket,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_IDFR,Emplacement-Rocket06-IDF,0,0,4800,0,2,0,0,0,1,0,0 +R-Defense-HvyA-Trocket,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HVATR,Emplacement-HvyATrocket,0,0,4800,0,1,0,0,0,1,0,0 +R-Defense-Emplacement-HPVcannon,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HPV,Emplacement-HPVcannon,0,0,3600,0,1,0,0,1,1,0,0 +R-Defense-PulseLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PulseLas,Emplacement-PulseLaser,0,0,14400,0,1,0,0,0,1,0,0 +R-Defense-Rail2,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Rail2,Emplacement-Rail2,0,0,14400,0,1,0,0,0,1,0,0 +R-Defense-Rail3,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_Rail3,Emplacement-Rail3,0,0,28800,0,1,0,0,0,1,0,0 +R-Defense-MdArtMissile,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MdAM,Emplacement-MdART-pit,0,0,14400,0,1,0,0,3,1,0,0 +R-Defense-HvyArtMissile,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HvAM,Emplacement-HvART-pit,0,0,28800,0,1,0,0,2,1,0,0 +R-Defense-WallTower-HvyA-Trocket,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT12_HAT,WallTower-HvATrocket,0,0,7200,0,1,0,0,0,1,0,0 +R-Defense-WallTower-HPVcannon,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT13_HPV,WallTower-HPVcannon,0,0,14400,0,1,0,0,1,1,0,0 +R-Defense-WallTower-A-Tmiss,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT9_ATM,WallTower-Atmiss,0,0,14400,0,1,0,0,1,1,0,0 +R-Defense-WallUpgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,RES_DF_WU4,0,0,0,6000,0,3,1,0,0,0,0,0 +R-Defense-WallUpgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 +R-Defense-WallUpgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 +R-Defense-WallUpgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,RES_DF_WU7,0,0,0,12000,0,2,1,0,0,0,0,0 +R-Defense-WallUpgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,14000,0,1,1,0,0,0,0,0 +R-Defense-WallUpgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,16000,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,RES_ST_FU4,0,0,0,9200,1,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,11200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,0,13200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade01,Level One,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,RES_ST_FCY01,0,0,0,2400,0,2,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade02,Level One,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade03,Level One-Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,7200,1,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,RES_ST_FCY4,0,0,0,9200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,11200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,0,13200,0,1,1,0,0,0,0,0 +R-Struc-VTOLFactory-Upgrade01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,RES_ST_VPU1,0,0,0,2400,0,1,1,0,0,0,0,0 +R-Struc-VTOLFactory-Upgrade02,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,3600,0,1,1,0,0,0,0,0 +R-Struc-VTOLFactory-Upgrade03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 +R-Struc-VTOLFactory-Upgrade04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,RES_ST_VPU4,0,0,0,6000,1,1,1,0,0,0,0,0 +R-Struc-VTOLFactory-Upgrade05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 +R-Struc-VTOLFactory-Upgrade06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blvfact0.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 +R-Struc-VTOLPad-Upgrade01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VPU1,A0VtolPad,0,0,4800,1,1,1,0,0,0,0,0 +R-Struc-VTOLPad-Upgrade02,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,6000,0,1,1,0,0,0,0,0 +R-Struc-VTOLPad-Upgrade03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,8000,0,1,1,0,0,0,0,0 +R-Struc-VTOLPad-Upgrade04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VPU4,A0VtolPad,0,0,10000,0,1,1,0,0,0,0,0 +R-Struc-VTOLPad-Upgrade05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,12000,0,1,1,0,0,0,0,0 +R-Struc-VTOLPad-Upgrade06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,0,0,0,A0VtolPad,0,0,14000,0,1,1,0,0,0,0,0 +R-Struc-Materials04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,RES_ST_MAT4,0,0,0,6000,0,2,1,0,0,0,0,0 +R-Struc-Materials05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 +R-Struc-Materials06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 +R-Struc-Materials07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,RES_ST_MAT7,0,0,0,12000,0,2,1,0,0,0,0,0 +R-Struc-Materials08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,14000,0,1,1,0,0,0,0,0 +R-Struc-Materials09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,icmolql.pie,0,0,0,0,0,16000,0,1,1,0,0,0,0,0 +R-Struc-Power-Upgrade01,Level Two-Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_POWERTECH,blpower4.pie,0,RES_POWU1,0,0,0,6000,1,2,1,0,0,0,0,0 +R-Struc-Power-Upgrade02,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_POWERTECH,blpower4.pie,0,RES_POWU2,0,0,0,9000,1,2,1,0,0,0,0,0 +R-Struc-Research-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,RES_ST_RU4,0,0,0,4800,1,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,6000,0,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,8000,0,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,RES_ST_RU7,0,0,0,10000,1,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,12000,0,1,1,0,0,0,0,0 +R-Struc-Research-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_COMPUTERTECH,blresch4.PIE,0,0,0,0,0,14000,0,1,1,0,0,0,0,0 +R-Struc-RprFac-Upgrade04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,0,0,RES_ST_RFU4,A0RepairCentre3,0,0,6000,0,1,1,0,0,0,0,0 +R-Struc-RprFac-Upgrade05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,8000,0,1,1,0,0,0,0,0 +R-Struc-RprFac-Upgrade06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_SYSTEMTECH,0,0,0,A0RepairCentre3,0,0,10000,0,1,1,0,0,0,0,0 +R-Sys-Engineering02,Level Two-Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,trlcon.pie,0,RES_ENGIN2,0,0,0,4800,1,2,1,0,0,0,0,0 +R-Sys-Engineering03,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,trlcon.pie,0,RES_ENGIN3,0,0,0,9600,1,2,1,0,0,0,0,0 +R-Sys-CBSensor-Turret01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_CBSTU1,0,Sys-CBTurret01,SENSOR,4800,0,1,0,0,0,0,0,1 +R-Sys-CBSensor-Tower01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_CBSTW1,Sys-CB-Tower01,0,BODY,3600,0,2,0,0,0,1,0,0 +R-Sys-VTOLCBS-Turret01,Level Two,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VCBSTU1,0,Sys-VTOLCBTurret01,SENSOR,8400,0,2,0,0,0,0,0,1 +R-Sys-VTOLCBS-Tower01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VCBSTW1,Sys-VTOL-CB-Tower01,0,0,7200,1,2,0,0,0,1,0,0 +R-Sys-VTOLStrike-Turret01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VSTU1,0,Sys-VstrikeTurret01,SENSOR,7200,0,2,0,0,0,0,0,1 +R-Sys-VTOLStrike-Tower01,Level Two-Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_VSTW1,Sys-VTOL-RadarTower01,0,0,7200,0,2,0,0,0,1,0,0 +R-Vehicle-Engine04,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,iceng.pie,0,RES_V_EN4,0,0,0,7000,0,2,1,0,0,0,0,0 +R-Vehicle-Engine05,Level Two,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,9000,0,1,1,0,0,0,0,0 +R-Vehicle-Engine06,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,11000,0,1,1,0,0,0,0,0 +R-Vehicle-Engine07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,iceng.pie,0,RES_V_EN7,0,0,0,13000,0,1,1,0,0,0,0,0 +R-Vehicle-Engine08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,15000,0,2,1,0,0,0,0,0 +R-Vehicle-Engine09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,iceng.pie,0,0,0,0,0,17000,0,2,1,0,0,0,0,0 +R-Wpn-AAGun-Accuracy01,Level Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAAC1,0,QuadMg1AAGun,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-Accuracy02,Level Two-Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAAC2,0,QuadMg1AAGun,WEAPON,7200,0,2,1,0,0,0,0,0 +R-Wpn-AAGun-Accuracy03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAAC3,0,QuadMg1AAGun,WEAPON,8400,0,2,1,0,0,0,0,0 +R-Wpn-AAGun-Damage01,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAD1,0,QuadMg1AAGun,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-Damage02,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,7200,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-Damage03,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,8400,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-Damage04,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAD4,0,QuadMg1AAGun,WEAPON,9600,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-Damage05,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,10800,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-Damage06,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,12000,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAROF1,0,QuadMg1AAGun,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Wpn-AAGun-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,4800,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,6000,0,2,1,0,0,0,0,0 +R-Wpn-AAGun-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AAROF4,0,QuadMg1AAGun,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-ROF05,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,10000,0,1,1,0,0,0,0,0 +R-Wpn-AAGun-ROF06,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,QuadMg1AAGun,WEAPON,12000,0,1,1,0,0,0,0,0 +R-Wpn-Bomb01,Level Two,0,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BMB1,0,0,BODY,5500,0,1,0,0,0,0,0,1 +R-Wpn-Bomb02,Level Two,0,0,IMAGE_RES_WEAPONTECH,trmvtlhe.PIE,0,RES_W_BMB2,0,0,BODY,7200,0,2,0,0,0,0,0,1 +R-Wpn-Bomb03,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,trlvtlin.PIE,0,RES_W_BMB3,0,0,BODY,7200,0,2,0,0,0,0,0,1 +R-Wpn-Bomb04,Level Three,0,0,IMAGE_RES_WEAPONTECH,trmvtlin.PIE,0,RES_W_BMB4,0,0,BODY,9200,0,2,0,0,0,0,0,1 +R-Wpn-Flamer-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_D4,0,Flame2,WEAPON,7200,0,1,1,0,0,0,0,0 +R-Wpn-Flamer-Damage05,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame2,WEAPON,9200,0,1,1,0,0,0,0,0 +R-Wpn-Flamer-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Flame2,WEAPON,11200,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Accuracy01,Level Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWAC1,0,Howitzer105Mk1,WEAPON,7200,1,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Accuracy02,Level Two-Three,IMAGE_RES_GRPACC,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,9200,0,2,1,0,0,0,0,0 +R-Wpn-Howitzer-Accuracy03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWAC3,0,Howitzer105Mk1,WEAPON,11200,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Damage01,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWD1,0,Howitzer105Mk1,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Damage02,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Damage03,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Damage04,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWD4,0,Howitzer105Mk1,WEAPON,10000,0,2,1,0,0,0,0,0 +R-Wpn-Howitzer-Damage05,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-Damage06,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,14000,0,1,1,0,0,0,0,0 +R-Wpn-Energy-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASAC1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Energy-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASD1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Energy-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Energy-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,43200,0,1,1,0,0,0,0,0 +R-Wpn-Energy-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_LASROF1,0,Laser2PULSEMk1,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Energy-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Energy-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Laser2PULSEMk1,WEAPON,43200,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC1,0,Missile-LtSAM,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Accuracy02,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_AC2,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_D1,0,Missile-LtSAM,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Missile-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,43200,0,1,1,0,0,0,0,0 +R-Wpn-Missile-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_ROF1,0,Missile-A-T,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Missile-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Missile-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Missile-A-T,WEAPON,43200,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_D4,0,Mortar1Mk1,WEAPON,9200,0,2,1,0,0,0,0,0 +R-Wpn-Mortar-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar1Mk1,WEAPON,11200,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Mortar2Mk1,WEAPON,13200,0,1,1,0,0,0,0,0 +R-Wpn-Rail-Accuracy01,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL_AC1,0,RailGun1Mk1,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Rail-Damage01,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL_D1,0,RailGun1Mk1,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Rail-Damage02,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Rail-Damage03,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,43200,0,2,1,0,0,0,0,0 +R-Wpn-Rail-ROF01,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RAIL_ROF1,0,RailGun1Mk1,WEAPON,14400,0,1,1,0,0,0,0,0 +R-Wpn-Rail-ROF02,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,28800,0,1,1,0,0,0,0,0 +R-Wpn-Rail-ROF03,Level Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,RailGun1Mk1,WEAPON,43200,0,1,1,0,0,0,0,0 +R-Wpn-Rocket-Accuracy01,Level One,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_AC1,0,Rocket-Pod,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Wpn-Rocket-Accuracy02,Level All,IMAGE_RES_GRPACC,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,7200,0,2,1,0,0,0,0,0 +R-Wpn-Rocket-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,3600,0,1,1,0,0,0,0,0 +R-Wpn-Rocket-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_D4,0,Rocket-Pod,WEAPON,4800,0,1,1,0,0,0,0,0 +R-Wpn-Rocket-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-Rocket-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-Rocket-ROF03,Level All,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-Pod,WEAPON,7200,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Accuracy01,Level One,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_AC1,0,Rocket-LtA-T,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Wpn-RocketSlow-Accuracy02,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_AC2,0,Rocket-LtA-T,WEAPON,4800,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Accuracy03,Level All,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_AC3,0,Rocket-LtA-T,WEAPON,7200,1,2,1,0,0,0,0,0 +R-Wpn-RocketSlow-Damage01,Level One,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_D1,0,Rocket-LtA-T,WEAPON,2400,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Damage02,Level One,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,3600,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Damage03,Level One-Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,4800,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Damage04,Level Two,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_D4,0,Rocket-LtA-T,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Damage05,Level Two,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-Damage06,Level Two-Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,10000,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_SRK_ROF1,0,Rocket-LtA-T,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-RocketSlow-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Defense-WallTower-Rail3,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT15_RL3,WallTower-Rail3,0,0,14400,0,1,0,0,0,1,0,0 +R-Wpn-Mortar-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_ROF4,0,Mortar2Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 +R-Cyborg-Hvywpn-HPV,Level Two-Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_HPV,0,Cannon4AUTOMk1,WEAPON,12000,0,2,0,1,0,0,0,1 +R-Vehicle-Armor-Heat01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icamrhot.pie,0,RES_V_AH1,0,0,0,4800,0,1,1,0,0,0,0,0 +R-Vehicle-Armor-Heat02,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,7000,0,1,1,0,0,0,0,0 +R-Vehicle-Armor-Heat03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,9000,0,1,1,0,0,0,0,0 +R-Defense-MassDriver,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MD,X-Super-MassDriver,0,0,50000,0,3,0,0,0,1,0,0 +R-Defense-Super-Cannon,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_CAN,X-Super-Cannon,0,0,8400,0,2,0,0,0,1,0,0 +R-Vehicle-Armor-Heat04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_DROIDTECH,icamrhot.pie,0,RES_V_AH4,0,0,0,11000,0,2,1,0,0,0,0,0 +R-Vehicle-Armor-Heat05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,13000,0,1,1,0,0,0,0,0 +R-Vehicle-Armor-Heat06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_DROIDTECH,icamrhot.pie,0,0,0,0,0,15000,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat01,Level Two,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,RES_CY_AH1,0,0,0,3600,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat02,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,4800,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat03,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,6000,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat04,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,RES_CY_AH4,0,0,0,8000,0,2,1,0,0,0,0,0 +R-Cyborg-Armor-Heat05,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,10000,0,1,1,0,0,0,0,0 +R-Cyborg-Armor-Heat06,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_CYBORGTECH,icamrhot.pie,0,0,0,0,0,12000,0,1,1,0,0,0,0,0 +R-Wpn-Bomb-Accuracy01,Level Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BAC1,0,0,BODY,7200,0,3,1,0,0,0,0,0 +R-Wpn-Bomb-Accuracy02,Level Two-Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BAC2,0,0,BODY,9200,0,1,1,0,0,0,0,0 +R-Wpn-Bomb-Accuracy03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,trlvtlhe.PIE,0,RES_W_BAC3,0,0,BODY,11200,0,1,1,0,0,0,0,0 +R-Wpn-Mortar-Acc01,Level One-Two,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_AC1,0,Mortar1Mk1,WEAPON,3600,0,2,1,0,0,0,0,0 +R-Wpn-Mortar-Acc02,Level Two-Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_AC2,0,Mortar2Mk1,WEAPON,7200,0,2,1,0,0,0,0,0 +R-Wpn-Mortar-Acc03,Level Three,IMAGE_RES_GRPACC,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M_AC3,0,Mortar2Mk1,WEAPON,9200,1,2,1,0,0,0,0,0 +R-Wpn-Howitzer-ROF01,Level Two,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWRF1,0,Howitzer105Mk1,WEAPON,6000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-ROF02,Level Two,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,8000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Howitzer105Mk1,WEAPON,10000,0,1,1,0,0,0,0,0 +R-Wpn-Howitzer-ROF04,Level Three,IMAGE_RES_GRPROF,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HOWRF4,0,Howitzer105Mk1,WEAPON,12000,0,1,1,0,0,0,0,0 +R-Wpn-Missile-LtSAM,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_LtSAM1,0,Missile-LtSAM,WEAPON,14400,1,2,0,0,0,0,0,1 +R-Wpn-Missile-HvSAM,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HvSAM1,0,Missile-HvySAM,WEAPON,28800,0,2,0,0,0,0,1,1 +R-Wpn-MdArtMissile,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_MART,0,Missile-MdArt,WEAPON,14400,1,3,0,0,0,0,0,1 +R-Wpn-HvArtMissile,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HART,0,Missile-HvyArt,WEAPON,28800,1,2,0,0,0,0,0,1 +R-Defense-Pillbox-RotMG,Level Two-Three,0,0,0,0,0,0,Pillbox-RotMG,0,0,4800,0,0,0,0,1,1,0,0 +R-Sys-Sensor-Upgrade02,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_SYSTEMTECH,GNLSNSR1.PIE,0,RES_SY_SU1,0,0,BODY,1800,1,1,1,0,0,0,0,0 +R-Struc-Power-Upgrade03,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,12000,1,1,1,0,0,0,0,0 +R-Struc-Power-Upgrade01b,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,6000,1,1,1,0,0,0,0,0 +R-Struc-Power-Upgrade01c,Level Two-Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,6000,1,1,1,0,0,0,0,0 +R-Struc-Power-Upgrade03a,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_POWERTECH,blpower4.pie,0,0,0,0,BODY,12000,1,1,1,0,0,0,0,0 +R-Cyborg-Hvywpn-Mcannon,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_MC,0,Cannon2A-TMk1,WEAPON,12000,0,3,0,1,0,0,0,1 +R-Cyborg-Hvywpn-Acannon,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_AC,0,Cannon5VulcanMk1,WEAPON,10000,0,2,0,1,0,0,0,1 +R-Cyborg-Hvywpn-TK,Level Two,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_TK,0,Rocket-VTOL-HvyA-T,WEAPON,15000,0,2,0,1,0,0,0,1 +R-Sys-Autorepair-General,Level All,IMAGE_RES_GRPREP,0,IMAGE_RES_COMPUTERTECH,ICCCCONS.PIE,0,RES_SY_AR,0,0,BODY,14400,1,1,0,0,0,0,0,1 +R-Sys-Resistance-Circuits,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_COMPUTERTECH,ICCCCONS.PIE,0,RES_SY_RC,0,0,0,14400,1,3,1,0,0,0,0,0 +R-Wpn-Cannon6TwinAslt,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN6_T_A,0,Cannon6TwinAslt,WEAPON,12000,1,2,0,0,0,0,0,1 +R-Defense-Cannon6,Level Two,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_RotMG,PillBox-Cannon6,0,BODY,6400,0,2,0,0,0,1,0,0 +R-Wpn-HvyLaser,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_HLAS,0,HeavyLaser,WEAPON,36000,1,1,0,0,0,0,2,2 +R-Defense-HeavyLas,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_HEAVYLAS,Emplacement-HeavyLaser,0,BODY,20400,0,1,0,0,0,1,0,0 +R-Sys-Sensor-WSTower,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_WS,Sys-SensoTowerWS,0,BODY,16400,1,6,0,0,0,1,0,0 +R-Sys-Sensor-UpLink,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_UP,A0Sat-linkCentre,0,BODY,28800,1,3,0,0,0,1,0,0 +R-Wpn-LasSat,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_LASSAT,A0LasSatCommand,0,BODY,56600,1,2,0,0,0,1,0,0 +R-Wpn-PlasmaCannon,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_PLASCAN,0,Laser4-PlasmaCannon,WEAPON,20000,1,1,0,0,0,0,0,1 +R-Cyborg-Hvywpn-PulseLsr,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_PLAS,0,Laser2PULSEMk1,WEAPON,16000,0,1,0,1,0,0,0,1 +R-Cyborg-Hvywpn-RailGunner,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_RG,0,RailGun2Mk1,WEAPON,17000,0,1,0,1,0,0,0,1 +R-Cyborg-Hvywpn-A-T,Level Three,0,0,IMAGE_RES_CYBORGTECH,0,0,RES_CYW_H_AT,0,Missile-A-T,WEAPON,15000,0,2,0,1,0,0,0,1 +R-Sys-SpyTower,Level All,0,0,IMAGE_RES_SYSTEMTECH,icmolql.pie,0,0,Sys-SpyTower,0,BODY,7200,1,1,0,0,0,1,0,0 +R-Defense-PlasmaCannon,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_PLASCAN,Emplacement-PulseLaser,0,BODY,20400,0,1,0,0,0,1,0,0 +R-Defense-EMPCannon,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_EMP,WallTower-EMP,0,BODY,28800,0,1,0,0,0,1,0,0 +R-Wpn-RocketSlow-ROF03,Level Two-Three,IMAGE_RES_GRPROF,1,IMAGE_RES_WEAPONTECH,0,0,0,0,Rocket-LtA-T,WEAPON,10000,0,0,0,0,0,0,0,0 +R-Defense-Super-Rocket,Level Two-Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_RKT,X-Super-Rocket,0,0,12000,0,3,0,0,0,1,0,0 +R-Defense-Super-Missile,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_EMP_MSL,X-Super-Missile,0,0,50000,0,3,0,0,0,1,0,0 +R-Defense-WallUpgrade10,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,18000,0,1,1,0,0,0,0,0 +R-Defense-WallUpgrade11,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,22000,0,1,1,0,0,0,0,0 +R-Defense-WallUpgrade12,Level All,IMAGE_RES_GRPUPG,1,IMAGE_RES_DEFENCE,BLWALLH.PIE,0,0,0,0,0,24000,0,1,1,0,0,0,0,0 +R-Vehicle-Body13,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B13,0,Body13SUP,BODY,50000,1,4,0,0,0,0,0,1 +R-Vehicle-Body14,Level Three,0,0,IMAGE_RES_DROIDTECH,0,0,RES_V_B14,0,Body14SUP,BODY,55000,1,4,0,0,0,0,0,1 +R-Wpn-Flamer-Damage07,Level Three,IMAGE_RES_GRPDAM,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_FL_D7,0,PlasmiteFlamer,WEAPON,13200,0,2,1,0,0,0,0,0 +R-Wpn-Flamer-Damage08,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,PlasmiteFlamer,WEAPON,15200,0,1,1,0,0,0,0,0 +R-Wpn-Flamer-Damage09,Level Three,IMAGE_RES_GRPDAM,1,IMAGE_RES_WEAPONTECH,0,0,0,0,PlasmiteFlamer,WEAPON,17200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,RES_ST_FU7,0,0,BODY,15200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,BODY,17200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,BLFACT1.PIE,0,0,0,0,BODY,19200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade07,Level Three,IMAGE_RES_GRPUPG,0,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,RES_ST_FCY7,0,0,BODY,15200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade08,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,BODY,17200,0,1,1,0,0,0,0,0 +R-Struc-Factory-Cyborg-Upgrade09,Level Three,IMAGE_RES_GRPUPG,1,IMAGE_RES_STRUCTURETECH,blcfact1.pie,0,0,0,0,BODY,19200,0,1,1,0,0,0,0,0 +R-Wpn-MortarEMP,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M2,0,MortarEMP,WEAPON,20000,0,1,0,0,0,0,0,0 +R-Wpn-AALaser,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MS_HvSAM1,0,AAGunLaser,WEAPON,28800,0,1,0,0,0,0,1,1 +R-Defense-AA-Laser,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_AALAS,P0-AASite-Laser,0,PROPULSION,28800,0,1,0,0,0,1,0,0 +R-Defense-EMPMortar,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_DEFENCE,0,0,RES_DEF_EMPM,Emplacement-MortarEMP,0,PROPULSION,28800,0,1,0,0,0,1,0,0 +R-Defense-WallTower-SamHvy,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_MS_SAM2WT,WallTower-SamHvy,0,PROPULSION,30000,0,2,0,0,1,1,0,0 +R-Defense-WallTower-QuadRotAA,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_QUADAA,WallTower-QuadRotAAGun,0,PROPULSION,30000,0,2,0,0,0,1,0,0 +R-Sys-Sensor-WS,Level Three,0,0,IMAGE_RES_SYSTEMTECH,0,0,RES_SY_S_WST,0,Sensor-WideSpec,SENSOR,14400,1,5,0,0,0,0,0,1 +R-Wpn-EMPCannon,Level All,IMAGE_RES_GRPUPG,0,IMAGE_RES_WEAPONTECH,0,0,RES_EMP_CANT,0,EMP-Cannon,WEAPON,28800,0,2,0,0,0,0,0,1 +R-Defense-WallTower-DoubleAAgun,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_DOUBLEAA,WallTower-DoubleAAGun,0,PROPULSION,30000,0,1,0,0,0,1,0,0 +R-Defense-WallTower-SamSite,Level Three,0,0,IMAGE_RES_DEFENCE,0,0,RES_MS_SAM1WT,WallTower-SamSite,0,PROPULSION,30000,0,2,0,0,0,1,0,0 +R-Wpn-MG5,Level Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_WT_TWINAGUN,0,MG5TWINROTARY,WEAPON,15000,1,2,0,0,0,0,1,1 +R-Defense-WallTower-TwinAGun,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_WT_TWINAGHP,WallTower-TwinAssaultGun,0,PROPULSION,30000,0,1,0,0,1,1,0,0 +R-Wpn-Bomb05,Level Three,0,0,IMAGE_RES_WEAPONTECH,trmvtlin.PIE,0,RES_W_BMB5,0,Bomb5-VTOL-Plasmite,WEAPON,20000,0,2,0,0,0,0,0,1 +R-Wpn-Bomb06,Level Three,0,0,IMAGE_RES_WEAPONTECH,trmvtlin.PIE,0,RES_W_BMB6,0,Bomb6-VTOL-EMP,WEAPON,25000,0,2,0,0,0,0,0,1 +R-Comp-CommandTurret02,Level One,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT2,0,CommandBrain01,BRAIN,5000,0,2,0,0,0,0,1,1 +R-Comp-CommandTurret03,Level Two,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT3,0,CommandBrain01,BRAIN,8000,0,2,0,0,0,0,1,1 +R-Comp-CommandTurret04,Level Three,0,0,IMAGE_RES_COMPUTERTECH,0,0,RES_C_CT4,0,CommandBrain01,BRAIN,11000,0,2,0,0,0,0,1,1 diff --git a/data/mods/multiplay/old-1.10-balance/stats/weapons.txt b/data/mods/multiplay/old-1.10-balance/stats/weapons.txt index bbc14722f..7d874a60f 100644 --- a/data/mods/multiplay/old-1.10-balance/stats/weapons.txt +++ b/data/mods/multiplay/old-1.10-balance/stats/weapons.txt @@ -1,121 +1,121 @@ -ZNULLWEAPON,Level All,0,250,0,0,0,0,Mibnkgun.pie,MIBNKTUR.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,20,NO,MISC,MACHINE GUN,DIRECT,ANTI PERSONNEL,0,90,-30,YES,YES,100,0,NO,100,0,0,0,0 -TUTMG,Level One,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 -Superweapon2,Level All,10,50,100,1,5,9999,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,2,1,4,1,0,0,9999,1000,100,1000,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,20,0,NO,25,0,0,0,0 -Superweapon,Level All,10,50,100,1,5,9999,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,99,90,4,1,0,0,9999,64,99,1000,0,0,0,10,100,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI TANK,180,90,-60,YES,NO,20,0,NO,25,0,0,0,0 -SpyTurret01,Level All,400,1600,200,0,0,200,GNHECM3.PIE,TRHECM3.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,256,1500,100,100,1,0,0,0,2,0,0,0,0,0,0,0,0,1200,0,NO,KINETIC,ELECTRONIC,DIRECT,ANTI PERSONNEL,180,90,-60,YES,YES,0,0,NO,100,0,0,1,0 -RocketSuper,Level All,1200,1250,150000,1,10,5,GNWPFRKT.PIE,TRWPFRKT.PIE,FXMRocAt.PIE,FXMflare.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,2048,70,80,5,2,2,150,400,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,NO,0,128,YES,100,100,0,0,0 -Rocket-VTOL-Pod,Level All,75,375,200,1,10,5,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,960,50,30,5,2,0,0,50,0,0,0,0,0,0,10,10,1500,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,YES,10,128,YES,25,100,4,1,0 -Rocket-VTOL-LtA-T,Level All,100,500,250,1,10,5,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,120,240,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,0,128,YES,50,100,1,1,0 -Rocket-VTOL-HvyA-T,Level All,250,1250,750,1,10,5,Gnmrcktb.PIE,Trmrcktb.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,160,375,0,0,0,0,0,0,0,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,0,128,YES,75,100,1,1,0 -Rocket-VTOL-BB,Level All,150,750,750,1,10,5,Gnmrktbb.PIE,TRMRKTBB.PIE,FXLRocPd.PIE,FXSPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,70,200,2,0,0,180,0,0,0,0,0,0,10,10,1200,20,YES,KINETIC,ROCKET,DIRECT,BUNKER BUSTER,180,20,-60,YES,NO,0,128,YES,25,0,1,1,0 -Rocket-Pod,Level All,75,375,200,1,10,5,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,960,50,30,10,2,0,0,20,0,0,0,0,0,0,10,10,1500,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,YES,10,128,YES,25,0,0,1,0 -Rocket-MRL,Level All,100,500,250,1,10,5,GNMRCKT.PIE,TRMRCKT.PIE,FXMRoc.PIE,FXMflare.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,384,960,40,50,1,2,8,150,30,16,100,30,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,INDIRECT,ARTILLERY ROUND,180,90,-60,YES,YES,0,128,YES,25,0,0,1,0 -Rocket-LtA-T,Level All,100,500,250,1,10,5,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,120,160,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,50,0,0,1,0 -Rocket-IDF,Level All,300,1500,10000,1,10,5,GNHRCKT.PIE,TRHRCKT.PIE,FXLRocPd.PIE,FXHPLME.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,1024,11000,70,80,1,2,6,600,100,64,99,50,0,0,0,0,0,1000,10,NO,KINETIC,SLOW ROCKET,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,0,640,YES,50,0,0,1,0 -Rocket-HvyA-T,Level All,250,1250,250,1,10,5,Gnmrcktb.pie,Trmrcktb.pie,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,160,250,0,0,0,0,0,0,0,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,75,0,0,1,0 -Rocket-BB,Level All,150,750,250,1,10,5,Gnmrktbb.PIE,TRMRKTBB.PIE,FXLRocPd.PIE,FXSPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,60,70,200,2,0,0,125,0,0,0,0,0,0,10,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,BUNKER BUSTER,180,90,-60,YES,NO,0,128,YES,25,0,0,1,0 -RailGun3Mk1,Level Three,400,1600,5000,1,120,750,GNHGSS.PIE,TRHGSS.PIE,FXHGauss.PIE,FXGammoH.PIE,Fxflech2.PIE,Fxflech2.PIE,FXVLSWav.PIE,0,1024,2048,80,70,80,1,0,0,300,0,50,30,0,0,0,10,10,900,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,150,0,0,1,0 -RailGun2Mk1,Level Three,300,1200,2000,1,80,500,GNMGSS.PIE,TRMGSS.PIE,FXMGauss.PIE,FXGammoM.PIE,Fxflech2.PIE,Fxflech2.PIE,FXMSWave.PIE,0,768,1536,80,70,60,1,0,0,200,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,YES,100,0,0,1,0 -RailGun2-VTOL,Level Three,300,1200,1000,1,80,250,GNMGSS.PIE,TRMGSS.PIE,FXMGauss.PIE,FXGammoM.PIE,Fxflech2.PIE,Fxflech2.PIE,FXMSWave.PIE,0,768,1536,80,70,60,1,0,0,400,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,0,0,YES,100,0,2,1,0 -RailGun1Mk1,Level Three,250,1000,400,1,20,400,GNLGSS.PIE,TRLGSS.PIE,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,80,70,40,1,3,0,150,0,0,0,0,0,0,10,0,1200,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,NO,100,0,0,1,0 -RailGun1-VTOL,Level Three,250,1000,600,1,20,200,GNLGSS.PIE,TRLGSS.PIE,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,70,60,40,1,3,0,320,0,0,0,0,0,0,10,0,1200,20,YES,KINETIC,GAUSS,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,0,0,NO,75,100,2,1,0 -QuadRotAAGun,Level Two-Three,150,1200,10000,1,20,200,gnhair2.PIE,TRHAIR.PIE,FXCan40m.PIE,FXAALSH2.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.PIE,0,768,2048,70,75,3,2,0,0,45,64,25,20,0,0,0,10,100,1500,20,YES,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,20,0,YES,20,1,0,1,0 -QuadMg1AAGun,Level All,100,400,10000,1,20,175,gnlair.PIE,TRMAIR.PIE,FXCan40m.PIE,FXAALSHT.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.PIE,0,768,2048,70,75,6,2,0,0,40,64,25,20,0,0,0,10,100,1400,20,YES,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,30,0,YES,20,1,0,1,0 -PlasmiteFlamer,Level Three,80,400,1000,1,10,75,GNMFLMRP.PIE,TRMFLMRP.PIE,FXCan20m.PIE,FXLProj.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,384,512,75,50,50,1,0,0,100,0,0,0,60,50,96,10,0,800,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,0 -PlasmaHeavy,Level Three,75,375,10000,1,10,5,GNHPLASM.PIE,TRHPLASM.PIE,FXMHowt.PIE,FXMflare.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,10000,40,99,60,2,0,0,500,256,99,250,30,100,32,10,10,400,20,NO,HEAT,FLAME,INDIRECT,ANTI TANK,180,90,-30,YES,YES,50,768,YES,200,0,0,0,0 -NX-CyborgPulseLas,Level All,125,375,120,1,10,100,CY_LAS.PIE,Cybodyjp.pie,FXLasRot.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,0,0 -NX-CyborgMiss,Level All,250,700,120,1,10,100,CY_MISS.PIE,Cybodyjp.pie,FXLRocPd.PIE,FXMflare.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,100,2,0,0,300,0,0,0,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-60,YES,NO,20,64,YES,50,100,0,0,0 -NX-CyborgChaingun,Level All,10,50,120,1,10,50,cy_gun.pie,Cybodyjp.pie,FXLMgun2.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,70,50,6,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 -NX-Cyb-Rail1,Level All,200,800,120,1,20,100,CY_RAIL.PIE,Cybodyjp.pie,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,80,70,30,1,0,0,140,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,50,0,NO,100,0,0,0,0 -NEXUSlink,Level Three,75,375,0,0,0,300,GNHECM3.PIE,TRHECM3.PIE,FXHBLas.PIE,FXMflare.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,512,896,99,100,20,0,0,0,10,0,0,0,0,0,0,0,0,1200,0,NO,KINETIC,ELECTRONIC,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 -MortarEMP,Level Three,200,2000,5000,1,25,5,gnhmorte.PIE,TRHRMORT.PIE,FXMMort.PIE,FXSFlms.PIE,FXSFlms.PIE,FXLExp.PIE,FXSFlms.PIE,0,1152,2304,40,50,90,2,0,0,0,96,99,80,0,0,0,0,10,1000,20,NO,KINETIC,EMP,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 -Mortar3ROTARYMk1,Level Two-Three,300,900,1000,1,50,5,GNHMORT.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,20,2,0,0,40,64,99,40,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 -Mortar2Mk1,Level All,200,1000,5000,1,25,5,GNHMORT2.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXMNExp.PIE,FXLExp.PIE,FXMNExp.PIE,0,1152,2304,40,50,90,2,0,0,80,96,99,80,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 -Mortar1Mk1,Level One-Two,100,500,2000,1,20,5,GNMMORT.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,60,2,0,0,50,64,99,40,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 -Mortar-Incenediary,Level Three,150,750,2000,1,20,5,GNMMORTI.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,60,2,0,0,50,64,99,40,60,20,64,0,10,1000,20,NO,HEAT,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 -MissileSuper,Level Three,1600,1200,150000,1,10,50,gnwpfmsl.PIE,Trwpfmsl.PIE,FXMMort.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,4000,80,90,0,2,4,200,800,96,99,100,0,0,0,0,10,1000,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ARTILLERY ROUND,180,90,-30,YES,NO,10,128,YES,100,0,0,0,0 -Missile-VTOL-AT,Level Two-Three,300,1200,750,1,10,50,Gnmmslat.PIE,Trmmslat.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,0,2,2,75,600,64,99,20,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,20,-30,YES,NO,20,0,YES,50,100,1,1,0 -Missile-MdArt,Level All,400,1200,1000,1,10,50,Gnmmslaa.PIE,Trmmslaa.PIE,FXMMort.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2000,12000,50,80,2,2,4,300,200,96,99,100,0,0,0,0,10,1000,20,YES,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,180,90,-30,YES,NO,10,512,YES,100,0,0,1,0 -Missile-LtSAM,Level Two-Three,200,800,400,1,10,50,Gnmmslsa.PIE,Trmmslsa.PIE,FXATMiss.PIE,FXMflare.PIE,FXMExp.PIE,FXSExp.PIE,FXSSplsh.PIE,0,2000,2562,60,70,5,2,2,150,250,0,0,0,0,0,0,0,10,800,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,128,YES,100,1,0,1,0 -Missile-HvySAM,Level Two-Three,300,1200,6000,1,10,10,Gnhmslsa.PIE,Trhmslsa.PIE,FXICBM.PIE,FXMflare.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2000,2562,60,70,5,2,4,150,250,0,0,0,0,0,0,0,10,700,20,NO,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,512,YES,100,1,0,1,0 -Missile-HvyArt,Level Two-Three,500,1500,10000,1,10,50,gnhmslab.PIE,trhmslab.PIE,FXICBM.PIE,FXHPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2000,25000,50,80,5,1,4,400,250,128,99,150,0,0,0,0,10,800,20,NO,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,0,45,-30,YES,NO,25,512,YES,100,0,0,1,0 -Missile-A-T,Level Three,300,1200,400,1,10,10,Gnmmslat.PIE,Trmmslat.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,0,2,2,75,300,0,0,0,0,0,0,0,0,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,0,0,1,0 -MG5TWINROTARY,Level Three,100,500,600,1,20,300,Gnhmg1.PIE,Trhmg.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,2,0,0,35,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,100,0,1,0 -MG4ROTARYMk1,Level Two-Three,100,500,600,1,20,300,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,1,0,0,22,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,100,0,1,0 -MG4ROTARY-VTOL,Level Two-Three,100,500,300,1,20,10,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,1,0,0,66,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,30,0,NO,100,100,6,1,0 -MG4ROTARY-Pillbox,Level Two-Three,100,500,600,1,20,300,0,0,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,1,0,0,22,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,0,0,0,0 -MG3Mk1,Level All,50,250,600,1,15,175,GNMMG1.PIE,TRMMG.PIE,FXMgnVic.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,75,50,7,1,0,0,18,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,150,100,0,1,0 -MG3-VTOL,Level All,50,250,300,1,15,10,GNMMG1.PIE,TRMMG.PIE,FXMgnVic.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,75,50,7,1,0,0,54,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,150,100,4,1,0 -MG3-Pillbox,Level All,50,250,600,1,15,175,0,0,FXMgnVic.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,75,50,7,1,0,0,18,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,150,0,0,0,0 -MG2Mk1,Level All,25,125,400,1,10,125,GNLMG2.PIE,TRLMG2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,6,1,0,0,14,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 -MG2-VTOL,Level All,25,125,350,1,10,10,GNLMG2.PIE,TRLMG2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,6,1,0,0,42,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,100,100,4,1,0 -MG2-Pillbox,Level All,25,125,400,1,10,125,0,0,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,6,1,0,0,14,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,100,0,NO,100,0,0,0,0 -MG1Mk1,Level All,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 -MG1-VTOL,Level All,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,20,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,100,100,4,1,0 -MG1-Pillbox,Level All,10,50,200,0,5,75,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,100,0,NO,100,0,0,0,0 -MassDriver,Level All,2000,2000,150000,1,120,900,GNWPFGSS.PIE,TRWPFGSS.PIE,FXSHgssM.PIE,FXSHgssA.PIE,FXFlech4.PIE,FXFlech4.PIE,FXVLSWav.PIE,0,128,2048,80,90,200,1,0,0,1000,0,60,50,0,0,0,0,10,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,150,0,0,0,0 -LasSat,Level Three,100,500,600,1,10,500,gnlassat.pie,trlassat.pie,FXHBLas.PIE,FXBeam.PIE,FXMelt.PIE,FXSFlms.PIE,FXSFlms.PIE,0,640,960,70,50,3000,1,0,0,3000,256,99,1000,0,0,0,10,0,1000,20,YES,HEAT,LAS_SAT,DIRECT,ARTILLERY ROUND,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 -Laser4-PlasmaCannon,Level Three,800,1000,30000,1,10,50,GNHPLSMA.PIE,TRHLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,400,700,80,65,120,1,0,0,1000,0,0,0,0,0,0,10,0,1000,20,PARTIAL,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,200,0,0,1,0 -Laser3BEAMMk1,Level Three,150,600,300,1,10,100,GNMRLAS.PIE,TRMLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,1,0 -Laser3BEAM-VTOL,Level Three,150,600,300,1,10,50,GNMRLAS.PIE,TRMLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,200,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,0,-60,YES,NO,10,0,YES,100,100,2,1,0 -Laser2PULSEMk1,Level Three,200,800,500,1,10,250,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,1024,2048,80,70,50,1,0,0,200,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,0,0,1,0 -Laser2PULSE-VTOL,Level Three,200,800,500,1,10,125,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,1024,2048,70,50,50,1,3,15,400,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI TANK,180,0,-60,YES,NO,15,0,YES,100,100,2,1,0 -Howitzer150Mk1,Level Two-Three,350,1250,15000,5,10,5,GNHHOWT.PIE,TRHHOWT.PIE,FXHHowt.PIE,FXCAmmo.PIE,FXVLExp.PIE,FXVLExp.PIE,FXLSplsh.PIE,0,1920,10000,40,50,300,2,0,0,250,128,99,250,0,0,0,0,10,1000,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,200,0,0,1,0 -Howitzer105Mk1,Level Two-Three,250,1000,10000,1,10,5,GNMHOWT.PIE,TRMHOWT.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,5000,40,50,200,2,0,0,150,128,99,150,0,0,0,10,10,1000,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,250,0,0,1,0 -Howitzer03-Rot,Level Two-Three,400,1600,10000,1,10,5,GNHHOWT2.PIE,TRHHOW2.PIE,FXHHowt2.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1920,7000,40,50,40,2,0,0,100,128,99,100,0,0,0,0,10,1000,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,200,0,0,1,0 -Howitzer-Incenediary,Level Two-Three,250,1000,10000,1,10,5,GNMHOWTI.PIE,TRMHOWT.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,5000,40,50,200,2,0,0,150,128,99,150,60,20,96,10,10,1000,20,NO,HEAT,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,250,0,0,1,0 -HeavyLaser-VTOL,Level Three,600,1000,15000,1,10,50,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,400,700,80,65,60,1,0,0,500,0,0,0,0,0,0,10,0,1000,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,2,1,0 -HeavyLaser,Level Three,600,1000,20000,1,10,50,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,400,700,80,65,60,1,0,0,500,0,0,0,0,0,0,10,0,1000,20,PARTIAL,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,0,1,0 -Flame2,Level All,80,400,1000,1,10,75,GNMFLMR.PIE,TRMFLMR.PIE,FXCan20m.PIE,FXLProj.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,384,512,75,50,150,1,0,0,60,0,0,0,60,25,96,10,0,800,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,0 -Flame1Mk1,Level All,40,200,250,1,10,40,GNLFLMR.PIE,TRLFLMR.PIE,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,90,40,120,1,0,0,30,0,0,0,60,15,32,10,0,800,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,0 -EMP-Cannon,Level All,200,800,10000,1,20,500,gnhemp.PIE,trhemp.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,768,1500,70,50,50,1,0,0,70,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,EMP,DIRECT,ANTI TANK,180,90,-60,YES,NO,150,0,YES,1,0,0,1,0 -CyborgRotMG,Level All,90,270,120,1,10,50,cy_gun.pie,Cybody.pie,FXLMgun2.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,70,50,6,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 -CyborgRocket,Level All,125,500,120,1,10,50,cy_rkt.PIE,cybody.PIE,FXLRocPd.PIE,fxmflare.PIE,fxmexp.PIE,fxmexp.PIE,fxssplsh.PIE,0,512,896,50,70,200,2,0,0,100,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,YES,0,64,YES,25,100,0,0,0 -CyborgFlamer01,Level All,50,200,120,1,10,10,cy_flame.pie,Cybody.pie,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,80,40,120,1,0,0,25,0,0,0,50,10,32,10,0,800,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 -CyborgChaingun,Level All,40,160,120,1,10,50,cy_gun.pie,Cybody.pie,FXLMgun2.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,70,50,6,1,0,0,15,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 -CyborgCannon,Level All,60,240,120,1,1,50,cy_CAN.pie,Cybody.pie,FXCan20m.PIE,FXcam20.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,50,40,2,0,0,30,16,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 -Cyb-Wpn-Thermite,Level All,80,320,120,1,10,50,cy_therm.pie,Cybody.pie,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,80,40,60,1,0,0,25,0,0,0,50,50,32,10,0,800,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 -Cyb-Wpn-Rail1,Level All,200,800,120,1,20,100,CY_RAIL.PIE,Cybody.PIE,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,80,70,40,1,3,0,140,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,50,0,NO,100,0,0,0,0 -Cyb-Wpn-Laser,Level All,150,600,120,1,10,100,CY_LAS.PIE,Cybody.PIE,FXLasRot.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,0,0 -Cyb-Wpn-Grenade,Level All,80,320,120,1,10,50,cy_gren.pie,Cybody.pie,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,750,1500,80,40,60,1,0,0,40,64,99,20,0,0,0,0,10,800,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,0,64,YES,50,0,0,0,0 -Cyb-Wpn-Atmiss,Level All,250,1000,120,1,10,100,CY_MISS.PIE,Cybody.PIE,FXATMiss.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,1536,70,80,100,2,0,0,250,0,0,0,0,0,0,0,0,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,100,0,0,0 -Cyb-Hvywpn-TK,Level Two,250,1000,120,1,1,50,sc_tk.pie,scbody.pie,FXLRocPd.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,160,2,0,0,250,0,0,0,0,0,0,10,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,0,0 -Cyb-Hvywpn-RailGunner,Level Three,240,750,120,1,1,50,sc_rail2.pie,scbody.pie,FXMGauss.PIE,FXGammoM.PIE,FXflech2.PIE,FXflech2.PIE,FXMSWave.PIE,0,768,1024,70,50,60,1,0,0,200,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 -Cyb-Hvywpn-PulseLsr,Level Three,240,750,120,1,1,50,sc_pulse.pie,scbody.pie,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,768,1024,70,50,50,1,0,0,200,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,0,0,0,0 -Cyb-Hvywpn-Mcannon,Level Two,200,500,120,1,1,50,sc_can.pie,scbody.pie,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,50,40,2,0,0,45,16,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 -Cyb-Hvywpn-HPV,Level Two-Three,220,600,120,1,1,50,sc_hpvcn.pie,scbody.pie,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,50,40,2,0,0,55,16,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 -Cyb-Hvywpn-Acannon,Level Two,240,750,120,1,1,50,sc_asscn.pie,scbody.pie,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,20,2,0,0,28,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,25,0,0,0,0 -Cyb-Hvywpn-A-T,Level Three,250,1000,120,1,1,50,sc_ATM.pie,scbody.pie,FXATMiss.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,1536,70,80,100,2,0,0,250,0,0,0,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,100,0,0,0 -CommandTurret4,Level All,2000,2000,1000,0,1,1600,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 -CommandTurret3,Level All,1500,1500,1000,0,1,1400,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 -CommandTurret2,Level All,1000,1000,1000,0,1,1200,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 -CommandTurret1,Level All,100,100,1000,0,1,999,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 -CannonSuper,Level All,1000,2000,150000,0,0,500,GNWPFCAN.PIE,TRWPFCAN.PIE,FXSHcanM.PIE,FXSHcanA.PIE,fxgrdexS.PIE,fxgrdexS.PIE,FXSSplsh.PIE,0,128,2048,80,90,160,2,0,0,500,32,25,0,0,0,0,10,0,1000,20,NO,KINETIC,CANNON,DIRECT,ANTI TANK,0,90,-60,YES,YES,150,0,YES,100,0,0,0,0 -Cannon6TwinAslt,Level Two-Three,300,800,8500,1,25,500,Gnhvcan2.pie,trhvcan2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,10,2,0,0,28,32,25,0,0,0,0,10,0,1150,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,35,0,YES,50,0,0,1,0 -Cannon5VulcanMk1,Level Two-Three,200,800,7500,1,25,500,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,20,2,0,0,28,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,1,0 -Cannon5Vulcan-VTOL,Level All,200,800,1500,1,25,10,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,20,2,0,0,84,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,25,0,YES,50,100,4,1,0 -Cannon4AUTOMk1,Level Two-Three,175,700,5000,1,22,400,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1152,70,50,45,2,0,0,55,64,25,10,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,50,0,0,1,0 -Cannon4AUTO-VTOL,Level All,175,700,1000,1,22,10,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1152,70,50,45,2,0,0,165,64,25,10,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,100,0,YES,50,100,4,1,0 -Cannon375mmMk1,Level All,200,800,10000,1,20,500,GNHCAN.PIE,TRHCAN.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1024,70,50,50,2,0,0,70,64,25,20,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,150,0,YES,90,0,0,1,0 -Cannon2A-TMk1,Level All,125,500,5000,1,14,350,GNMCAN.PIE,TRMCAN.PIE,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXMSteam.PIE,0,640,960,70,50,45,2,0,0,45,32,25,10,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,60,0,0,1,0 -Cannon1Mk1,Level All,75,375,1000,1,15,200,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.PIE,FXcam20.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,70,50,40,2,0,0,30,16,20,5,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-90,YES,NO,100,0,YES,30,0,0,1,0 -Cannon1-VTOL,Level All,75,375,1000,1,15,10,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.PIE,FXcam20.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,960,70,50,40,2,0,0,90,16,20,5,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-90,YES,NO,100,0,YES,30,100,4,1,0 -BusCannon,Level One,10,10,10,10,10,10,GNLCAN.pie,Exturret.pie,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,60,50,30,1,0,0,28,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-30,YES,NO,100,0,YES,25,0,0,0,0 -BuggyMG,Level One-Two,3,11,1,1,1,1,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,60,50,5,1,0,0,16,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,100,0,NO,100,0,0,0,0 -bTrikeMG,Level One,2,11,1,1,1,1,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,60,50,5,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,100,0,NO,100,0,0,0,0 -BTowerMG,Level All,12,16,1,1,1,1,0,0,FXLMgun.PIE,FXTracRD.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,70,50,5,1,0,0,16,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,100,0,NO,100,0,0,0,0 -Bomb6-VTOL-EMP,Level Three,225,1000,10000,1,10,50,0,TRMVTLEM.PIE,FXLRocPd.PIE,FXLBMBE2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,100,1,0,0,0,0,0,0,0,0,0,10,10,475,20,YES,KINETIC,EMP,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 -Bomb5-VTOL-Plasmite,Level Three,225,1000,12000,1,10,50,0,TRMVTLPL.PIE,FXLRocPd.PIE,FXLBMBP2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,100,1,0,0,600,200,99,400,200,100,128,10,10,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 -Bomb4-VTOL-HvyINC,Level Two-Three,225,1000,9000,1,10,50,0,trmvtlin.PIE,FXLRocPd.PIE,Fxmbmbi2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,100,1,0,0,400,0,0,0,200,100,128,10,10,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 -Bomb3-VTOL-LtINC,Level Two-Three,175,700,500,1,10,10,0,trlvtlin.PIE,FXLRocPd.PIE,Fxlbmbi1.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,2,2,6,10,100,0,0,0,200,50,128,10,0,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,50,0,1,1,0 -Bomb2-VTOL-HvHE,Level Two-Three,200,800,10000,1,10,50,0,trmvtlhe.PIE,FXLRocPd.PIE,Fxmbmbx2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,1,1,2,2,500,156,99,400,0,0,0,10,10,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,200,0,1,1,0 -Bomb1-VTOL-LtHE,Level Two-Three,150,600,500,1,10,10,0,trlvtlhe.PIE,FXLRocPd.PIE,Fxlbmbx1.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,1,2,3,100,100,192,99,60,0,0,0,10,10,475,20,YES,KINETIC,BOMB,DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 -BJeepMG,Level One,4,16,1,1,1,1,0,0,FXLMgun.PIE,FXTracRD.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,60,50,5,1,0,0,14,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,20,0,NO,100,0,0,0,0 -BabaRocket,Level One,10,10,100,1,10,10,GNLRCKT.PIE,TRLRCKT.PIE,FXLRocPd.PIE,FXMFLARE.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,30,20,1,2,6,100,20,64,80,20,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,0,90,-30,YES,NO,0,128,YES,50,0,0,0,0 -BabaPitRocketAT,Level One,100,500,500,1,10,20,GNLMSL.PIE,TRLRCKT.PIE,FXLRocPd.PIE,FXMFLARE.PIE,FXSExp.PIE,FXSExp.PIE,FXSSplsh.PIE,0,640,960,50,30,3,2,2,120,50,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,128,YES,100,0,0,0,0 -BabaPitRocket,Level One,75,375,250,1,10,10,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMFLARE.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,960,60,30,6,2,0,0,16,0,0,0,0,0,0,10,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-30,YES,NO,10,128,YES,25,0,0,0,0 -BaBaMG,Level One-Two,1,1,1,1,1,1,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,50,40,4,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,0,90,-30,YES,NO,20,0,NO,100,0,0,0,0 -BabaFlame,Level One,40,200,10,1,10,35,GNLFLMR.PIE,TRLFLMR.PIE,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,90,40,120,1,0,0,25,0,0,0,90,10,32,10,0,750,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 -BaBaCannon,Level All,10,10,10,10,10,10,0,0,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,60,40,30,1,0,0,28,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-30,YES,NO,100,0,YES,25,0,0,0,0 -AAGunLaser,Level Three,500,1600,10000,1,20,200,gnhaalas.PIE,Trhmslsa.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,768,2048,70,75,1,2,2,10,200,64,100,40,0,0,0,10,100,1200,20,NO,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,100,0,YES,100,1,0,1,0 -AAGun2Mk1,Level All,150,450,10000,1,20,200,GNHAIR.PIE,TRHAIR.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.PIE,0,768,2048,70,75,1,2,2,10,45,64,100,40,0,0,0,10,100,1200,20,NO,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,100,0,YES,100,1,0,1,0 +ZNULLWEAPON,Level All,0,250,0,0,0,0,Mibnkgun.pie,MIBNKTUR.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,20,NO,MISC,MACHINE GUN,DIRECT,ANTI PERSONNEL,0,90,-30,YES,YES,100,0,NO,100,0,0,0,0 +TUTMG,Level One,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 +Superweapon2,Level All,10,50,100,1,5,9999,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,2,1,4,1,0,0,9999,1000,100,1000,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,20,0,NO,25,0,0,0,0 +Superweapon,Level All,10,50,100,1,5,9999,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,99,90,4,1,0,0,9999,64,99,1000,0,0,0,10,100,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI TANK,180,90,-60,YES,NO,20,0,NO,25,0,0,0,0 +SpyTurret01,Level All,400,1600,200,0,0,200,GNHECM3.PIE,TRHECM3.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,256,1500,100,100,1,0,0,0,2,0,0,0,0,0,0,0,0,1200,0,NO,KINETIC,ELECTRONIC,DIRECT,ANTI PERSONNEL,180,90,-60,YES,YES,0,0,NO,100,0,0,1,0 +RocketSuper,Level All,1200,1250,150000,1,10,5,GNWPFRKT.PIE,TRWPFRKT.PIE,FXMRocAt.PIE,FXMflare.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,2048,70,80,5,2,2,150,400,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,NO,0,128,YES,100,100,0,0,0 +Rocket-VTOL-Pod,Level All,75,375,200,1,10,5,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,960,50,30,5,2,0,0,50,0,0,0,0,0,0,10,10,1500,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,YES,10,128,YES,25,100,4,1,0 +Rocket-VTOL-LtA-T,Level All,100,500,250,1,10,5,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,120,240,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,0,128,YES,50,100,1,1,0 +Rocket-VTOL-HvyA-T,Level All,250,1250,750,1,10,5,Gnmrcktb.PIE,Trmrcktb.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,160,375,0,0,0,0,0,0,0,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,0,128,YES,75,100,1,1,0 +Rocket-VTOL-BB,Level All,150,750,750,1,10,5,Gnmrktbb.PIE,TRMRKTBB.PIE,FXLRocPd.PIE,FXSPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,70,200,2,0,0,180,0,0,0,0,0,0,10,10,1200,20,YES,KINETIC,ROCKET,DIRECT,BUNKER BUSTER,180,20,-60,YES,NO,0,128,YES,25,0,1,1,0 +Rocket-Pod,Level All,75,375,200,1,10,5,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,960,50,30,10,2,0,0,20,0,0,0,0,0,0,10,10,1500,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,YES,10,128,YES,25,0,0,1,0 +Rocket-MRL,Level All,100,500,250,1,10,5,GNMRCKT.PIE,TRMRCKT.PIE,FXMRoc.PIE,FXMflare.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,384,960,25,35,1,2,8,150,30,16,100,30,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,INDIRECT,ARTILLERY ROUND,180,90,-60,YES,YES,0,128,YES,25,0,0,1,0 +Rocket-LtA-T,Level All,100,500,250,1,10,5,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,120,160,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,50,0,0,1,0 +Rocket-IDF,Level All,300,1500,10000,1,10,5,GNHRCKT.PIE,TRHRCKT.PIE,FXLRocPd.PIE,FXHPLME.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,1024,11000,25,35,1,2,6,600,100,64,99,50,0,0,0,0,0,1000,10,NO,KINETIC,SLOW ROCKET,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,0,640,YES,50,0,0,1,0 +Rocket-HvyA-T,Level All,250,1250,250,1,10,5,Gnmrcktb.pie,Trmrcktb.pie,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,160,250,0,0,0,0,0,0,0,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,75,0,0,1,0 +Rocket-BB,Level All,150,750,250,1,10,5,Gnmrktbb.PIE,TRMRKTBB.PIE,FXLRocPd.PIE,FXSPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,60,70,200,2,0,0,125,0,0,0,0,0,0,10,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,BUNKER BUSTER,180,90,-60,YES,NO,0,128,YES,25,0,0,1,0 +RailGun3Mk1,Level Three,400,1600,5000,1,120,750,GNHGSS.PIE,TRHGSS.PIE,FXHGauss.PIE,FXGammoH.PIE,Fxflech2.PIE,Fxflech2.PIE,FXVLSWav.PIE,0,1024,2048,80,70,80,1,0,0,300,0,50,30,0,0,0,10,10,900,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,150,0,0,1,0 +RailGun2Mk1,Level Three,300,1200,2000,1,80,500,GNMGSS.PIE,TRMGSS.PIE,FXMGauss.PIE,FXGammoM.PIE,Fxflech2.PIE,Fxflech2.PIE,FXMSWave.PIE,0,768,1536,80,70,60,1,0,0,200,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,YES,100,0,0,1,0 +RailGun2-VTOL,Level Three,300,1200,1000,1,80,250,GNMGSS.PIE,TRMGSS.PIE,FXMGauss.PIE,FXGammoM.PIE,Fxflech2.PIE,Fxflech2.PIE,FXMSWave.PIE,0,768,1536,80,70,60,1,0,0,400,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,0,0,YES,100,0,2,1,0 +RailGun1Mk1,Level Three,250,1000,400,1,20,400,GNLGSS.PIE,TRLGSS.PIE,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,80,70,40,1,3,0,150,0,0,0,0,0,0,10,0,1200,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,NO,100,0,0,1,0 +RailGun1-VTOL,Level Three,250,1000,600,1,20,200,GNLGSS.PIE,TRLGSS.PIE,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,70,60,40,1,3,0,320,0,0,0,0,0,0,10,0,1200,20,YES,KINETIC,GAUSS,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,0,0,NO,75,100,2,1,0 +QuadRotAAGun,Level Two-Three,150,1200,10000,1,20,200,gnhair2.PIE,TRHAIR.PIE,FXCan40m.PIE,FXAALSH2.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.PIE,0,768,2048,70,75,3,2,0,0,45,64,25,20,0,0,0,10,100,1500,20,YES,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,20,0,YES,20,1,0,1,0 +QuadMg1AAGun,Level All,100,400,10000,1,20,175,gnlair.PIE,TRMAIR.PIE,FXCan40m.PIE,FXAALSHT.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.PIE,0,768,2048,70,75,6,2,0,0,40,64,25,20,0,0,0,10,100,1400,20,YES,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,30,0,YES,20,1,0,1,0 +PlasmiteFlamer,Level Three,80,400,1000,1,10,75,GNMFLMRP.PIE,TRMFLMRP.PIE,FXCan20m.PIE,FXLProj.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,384,512,75,50,50,1,0,0,100,0,0,0,60,50,96,10,0,800,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,0 +PlasmaHeavy,Level Three,75,375,10000,1,10,5,GNHPLASM.PIE,TRHPLASM.PIE,FXMHowt.PIE,FXMflare.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,10000,40,99,60,2,0,0,500,256,99,250,30,100,32,10,10,400,20,NO,HEAT,FLAME,INDIRECT,ANTI TANK,180,90,-30,YES,YES,50,768,YES,200,0,0,0,0 +NX-CyborgPulseLas,Level All,125,375,120,1,10,100,CY_LAS.PIE,Cybodyjp.pie,FXLasRot.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,0,0 +NX-CyborgMiss,Level All,250,700,120,1,10,100,CY_MISS.PIE,Cybodyjp.pie,FXLRocPd.PIE,FXMflare.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,100,2,0,0,300,0,0,0,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-60,YES,NO,20,64,YES,50,100,0,0,0 +NX-CyborgChaingun,Level All,10,50,120,1,10,50,cy_gun.pie,Cybodyjp.pie,FXLMgun2.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,70,50,6,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 +NX-Cyb-Rail1,Level All,200,800,120,1,20,100,CY_RAIL.PIE,Cybodyjp.pie,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,80,70,30,1,0,0,140,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,50,0,NO,100,0,0,0,0 +NEXUSlink,Level Three,75,375,0,0,0,300,GNHECM3.PIE,TRHECM3.PIE,FXHBLas.PIE,FXMflare.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,512,896,99,100,20,0,0,0,10,0,0,0,0,0,0,0,0,1200,0,NO,KINETIC,ELECTRONIC,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 +MortarEMP,Level Three,200,2000,5000,1,25,5,gnhmorte.PIE,TRHRMORT.PIE,FXMMort.PIE,FXSFlms.PIE,FXSFlms.PIE,FXLExp.PIE,FXSFlms.PIE,0,1152,2304,25,35,90,2,0,0,0,96,99,80,0,0,0,0,10,1000,20,NO,KINETIC,EMP,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 +Mortar3ROTARYMk1,Level Two-Three,300,900,1000,1,50,5,GNHMORT.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,25,35,20,2,0,0,40,64,99,40,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 +Mortar2Mk1,Level All,200,1000,5000,1,25,5,GNHMORT2.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXMNExp.PIE,FXLExp.PIE,FXMNExp.PIE,0,1152,2304,25,35,90,2,0,0,80,96,99,80,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 +Mortar1Mk1,Level One-Two,100,500,2000,1,20,5,GNMMORT.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,25,35,60,2,0,0,50,64,99,40,0,0,0,0,10,1000,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 +Mortar-Incenediary,Level Three,150,750,2000,1,20,5,GNMMORTI.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,25,35,60,2,0,0,50,64,99,40,60,20,64,0,10,1000,20,NO,HEAT,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 +MissileSuper,Level Three,1600,1200,150000,1,10,50,gnwpfmsl.PIE,Trwpfmsl.PIE,FXMMort.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,4000,80,90,0,2,4,200,800,96,99,100,0,0,0,0,10,1000,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ARTILLERY ROUND,180,90,-30,YES,NO,10,128,YES,100,0,0,0,0 +Missile-VTOL-AT,Level Two-Three,300,1200,750,1,10,50,Gnmmslat.PIE,Trmmslat.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,0,2,2,75,600,64,99,20,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,20,-30,YES,NO,20,0,YES,50,100,1,1,0 +Missile-MdArt,Level All,400,1200,1000,1,10,50,Gnmmslaa.PIE,Trmmslaa.PIE,FXMMort.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2000,12000,25,35,2,2,4,300,200,96,99,100,0,0,0,0,10,1000,20,YES,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,180,90,-30,YES,NO,10,512,YES,100,0,0,1,0 +Missile-LtSAM,Level Two-Three,200,800,400,1,10,50,Gnmmslsa.PIE,Trmmslsa.PIE,FXATMiss.PIE,FXMflare.PIE,FXMExp.PIE,FXSExp.PIE,FXSSplsh.PIE,0,2000,2562,60,70,5,2,2,150,250,0,0,0,0,0,0,0,10,800,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,128,YES,100,1,0,1,0 +Missile-HvySAM,Level Two-Three,300,1200,6000,1,10,10,Gnhmslsa.PIE,Trhmslsa.PIE,FXICBM.PIE,FXMflare.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2000,2562,60,70,5,2,4,150,250,0,0,0,0,0,0,0,10,700,20,NO,KINETIC,MISSILE,HOMING-DIRECT,ANTI AIRCRAFT,180,90,-45,YES,YES,25,512,YES,100,1,0,1,0 +Missile-HvyArt,Level Two-Three,500,1500,10000,1,10,50,gnhmslab.PIE,trhmslab.PIE,FXICBM.PIE,FXHPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2000,25000,25,35,5,1,4,400,250,128,99,150,0,0,0,0,10,800,20,NO,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,0,45,-30,YES,NO,25,512,YES,100,0,0,1,0 +Missile-A-T,Level Three,300,1200,400,1,10,10,Gnmmslat.PIE,Trmmslat.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,0,2,2,75,300,0,0,0,0,0,0,0,0,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,0,0,1,0 +MG5TWINROTARY,Level Three,100,500,600,1,20,300,Gnhmg1.PIE,Trhmg.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,2,0,0,35,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,100,0,1,0 +MG4ROTARYMk1,Level Two-Three,100,500,600,1,20,300,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,1,0,0,22,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,100,0,1,0 +MG4ROTARY-VTOL,Level Two-Three,100,500,300,1,20,10,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,1,0,0,66,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,30,0,NO,100,100,6,1,0 +MG4ROTARY-Pillbox,Level Two-Three,100,500,600,1,20,300,0,0,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,4,1,0,0,22,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,0,0,0,0 +MG3Mk1,Level All,50,250,600,1,15,175,GNMMG1.PIE,TRMMG.PIE,FXMgnVic.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,75,50,7,1,0,0,18,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,150,100,0,1,0 +MG3-VTOL,Level All,50,250,300,1,15,10,GNMMG1.PIE,TRMMG.PIE,FXMgnVic.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,75,50,7,1,0,0,54,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,150,100,4,1,0 +MG3-Pillbox,Level All,50,250,600,1,15,175,0,0,FXMgnVic.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,75,50,7,1,0,0,18,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,150,0,0,0,0 +MG2Mk1,Level All,25,125,400,1,10,125,GNLMG2.PIE,TRLMG2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,6,1,0,0,14,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 +MG2-VTOL,Level All,25,125,350,1,10,10,GNLMG2.PIE,TRLMG2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,6,1,0,0,42,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,100,100,4,1,0 +MG2-Pillbox,Level All,25,125,400,1,10,125,0,0,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,6,1,0,0,14,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,100,0,NO,100,0,0,0,0 +MG1Mk1,Level All,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 +MG1-VTOL,Level All,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,20,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI AIRCRAFT,180,0,-60,YES,NO,20,0,NO,100,100,4,1,0 +MG1-Pillbox,Level All,10,50,200,0,5,75,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,100,0,NO,100,0,0,0,0 +MassDriver,Level All,2000,2000,150000,1,120,900,GNWPFGSS.PIE,TRWPFGSS.PIE,FXSHgssM.PIE,FXSHgssA.PIE,FXFlech4.PIE,FXFlech4.PIE,FXVLSWav.PIE,0,128,2048,80,90,200,1,0,0,1000,0,60,50,0,0,0,0,10,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,150,0,0,0,0 +LasSat,Level Three,100,500,600,1,10,500,gnlassat.pie,trlassat.pie,FXHBLas.PIE,FXBeam.PIE,FXMelt.PIE,FXSFlms.PIE,FXSFlms.PIE,0,640,960,70,50,3000,1,0,0,3000,256,99,1000,0,0,0,10,0,1000,20,YES,HEAT,LAS_SAT,DIRECT,ARTILLERY ROUND,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 +Laser4-PlasmaCannon,Level Three,800,1000,30000,1,10,50,GNHPLSMA.PIE,TRHLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,400,700,80,65,120,1,0,0,1000,0,0,0,0,0,0,10,0,1000,20,PARTIAL,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,200,0,0,1,0 +Laser3BEAMMk1,Level Three,150,600,300,1,10,100,GNMRLAS.PIE,TRMLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,1,0 +Laser3BEAM-VTOL,Level Three,150,600,300,1,10,50,GNMRLAS.PIE,TRMLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,200,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,0,-60,YES,NO,10,0,YES,100,100,2,1,0 +Laser2PULSEMk1,Level Three,200,800,500,1,10,250,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,1024,2048,80,70,50,1,0,0,200,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,0,0,1,0 +Laser2PULSE-VTOL,Level Three,200,800,500,1,10,125,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,1024,2048,70,50,50,1,3,15,400,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI TANK,180,0,-60,YES,NO,15,0,YES,100,100,2,1,0 +Howitzer150Mk1,Level Two-Three,350,1250,15000,5,10,5,GNHHOWT.PIE,TRHHOWT.PIE,FXHHowt.PIE,FXCAmmo.PIE,FXVLExp.PIE,FXVLExp.PIE,FXLSplsh.PIE,0,1920,10000,25,35,300,2,0,0,250,128,99,250,0,0,0,0,10,1000,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,200,0,0,1,0 +Howitzer105Mk1,Level Two-Three,250,1000,10000,1,10,5,GNMHOWT.PIE,TRMHOWT.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,5000,25,35,200,2,0,0,150,128,99,150,0,0,0,10,10,1000,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,250,0,0,1,0 +Howitzer03-Rot,Level Two-Three,400,1600,10000,1,10,5,GNHHOWT2.PIE,TRHHOW2.PIE,FXHHowt2.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1920,7000,25,35,40,2,0,0,100,128,99,100,0,0,0,0,10,1000,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,200,0,0,1,0 +Howitzer-Incenediary,Level Two-Three,250,1000,10000,1,10,5,GNMHOWTI.PIE,TRMHOWT.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,5000,25,35,200,2,0,0,150,128,99,150,60,20,96,10,10,1000,20,NO,HEAT,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,250,0,0,1,0 +HeavyLaser-VTOL,Level Three,600,1000,15000,1,10,50,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,400,700,80,65,60,1,0,0,500,0,0,0,0,0,0,10,0,1000,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,2,1,0 +HeavyLaser,Level Three,600,1000,20000,1,10,50,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,400,700,80,65,60,1,0,0,500,0,0,0,0,0,0,10,0,1000,20,PARTIAL,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,0,1,0 +Flame2,Level All,80,400,1000,1,10,75,GNMFLMR.PIE,TRMFLMR.PIE,FXCan20m.PIE,FXLProj.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,384,512,75,50,150,1,0,0,60,0,0,0,60,25,96,10,0,800,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,0 +Flame1Mk1,Level All,40,200,250,1,10,40,GNLFLMR.PIE,TRLFLMR.PIE,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,90,40,120,1,0,0,30,0,0,0,60,15,32,10,0,800,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,0 +EMP-Cannon,Level All,200,800,10000,1,20,500,gnhemp.PIE,trhemp.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,768,1500,70,50,50,1,0,0,70,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,EMP,DIRECT,ANTI TANK,180,90,-60,YES,NO,150,0,YES,1,0,0,1,0 +CyborgRotMG,Level All,90,270,120,1,10,50,cy_gun.pie,Cybody.pie,FXLMgun2.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,70,50,6,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 +CyborgRocket,Level All,125,500,120,1,10,50,cy_rkt.PIE,cybody.PIE,FXLRocPd.PIE,fxmflare.PIE,fxmexp.PIE,fxmexp.PIE,fxssplsh.PIE,0,512,896,50,70,200,2,0,0,100,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,YES,0,64,YES,25,100,0,0,0 +CyborgFlamer01,Level All,50,200,120,1,10,10,cy_flame.pie,Cybody.pie,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,80,40,120,1,0,0,25,0,0,0,50,10,32,10,0,800,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 +CyborgChaingun,Level All,40,160,120,1,10,50,cy_gun.pie,Cybody.pie,FXLMgun2.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,70,50,6,1,0,0,15,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,0,0,0,0 +CyborgCannon,Level All,60,240,120,1,1,50,cy_CAN.pie,Cybody.pie,FXCan20m.PIE,FXcam20.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,50,40,2,0,0,30,16,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 +Cyb-Wpn-Thermite,Level All,80,320,120,1,10,50,cy_therm.pie,Cybody.pie,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,80,40,60,1,0,0,25,0,0,0,50,50,32,10,0,800,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 +Cyb-Wpn-Rail1,Level All,200,800,120,1,20,100,CY_RAIL.PIE,Cybody.PIE,FXLGauss.PIE,FXGAmmo.PIE,FXFlecht.PIE,FXFlecht.PIE,FXFlecht.PIE,0,768,1536,80,70,40,1,3,0,140,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,50,0,NO,100,0,0,0,0 +Cyb-Wpn-Laser,Level All,150,600,120,1,10,100,CY_LAS.PIE,Cybody.PIE,FXLasRot.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,768,1536,80,65,30,1,0,0,100,0,0,0,0,0,0,10,0,1600,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,0,0,0,0 +Cyb-Wpn-Grenade,Level All,80,320,120,1,10,50,cy_gren.pie,Cybody.pie,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,750,1500,25,35,60,1,0,0,40,64,99,20,0,0,0,0,10,800,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,0,64,YES,50,0,0,0,0 +Cyb-Wpn-Atmiss,Level All,250,1000,120,1,10,100,CY_MISS.PIE,Cybody.PIE,FXATMiss.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,1536,70,80,100,2,0,0,250,0,0,0,0,0,0,0,0,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,100,0,0,0 +Cyb-Hvywpn-TK,Level Two,250,1000,120,1,1,50,sc_tk.pie,scbody.pie,FXLRocPd.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,160,2,0,0,250,0,0,0,0,0,0,10,10,1000,60,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,0,0 +Cyb-Hvywpn-RailGunner,Level Three,240,750,120,1,1,50,sc_rail2.pie,scbody.pie,FXMGauss.PIE,FXGammoM.PIE,FXflech2.PIE,FXflech2.PIE,FXMSWave.PIE,0,768,1024,70,50,60,1,0,0,200,0,0,0,0,0,0,0,0,1100,20,YES,KINETIC,GAUSS,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 +Cyb-Hvywpn-PulseLsr,Level Three,240,750,120,1,1,50,sc_pulse.pie,scbody.pie,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,768,1024,70,50,50,1,0,0,200,0,0,0,0,0,0,10,0,1800,20,YES,HEAT,ENERGY,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,0,0,0,0 +Cyb-Hvywpn-Mcannon,Level Two,200,500,120,1,1,50,sc_can.pie,scbody.pie,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,50,40,2,0,0,45,16,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 +Cyb-Hvywpn-HPV,Level Two-Three,220,600,120,1,1,50,sc_hpvcn.pie,scbody.pie,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,50,40,2,0,0,55,16,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 +Cyb-Hvywpn-Acannon,Level Two,240,750,120,1,1,50,sc_asscn.pie,scbody.pie,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,20,2,0,0,28,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,25,0,0,0,0 +Cyb-Hvywpn-A-T,Level Three,250,1000,120,1,1,50,sc_ATM.pie,scbody.pie,FXATMiss.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,1536,70,80,100,2,0,0,250,0,0,0,0,0,0,0,10,900,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,100,0,0,0 +CommandTurret4,Level All,2000,2000,1000,0,1,1600,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 +CommandTurret3,Level All,1500,1500,1000,0,1,1400,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 +CommandTurret2,Level All,1000,1000,1000,0,1,1200,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 +CommandTurret1,Level All,100,100,1000,0,1,999,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,90,99,1,1,0,0,4,0,0,0,0,0,0,0,0,1000,0,YES,KINETIC,COMMAND,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,0,YES,1,0,0,0,0 +CannonSuper,Level All,1000,2000,150000,0,0,500,GNWPFCAN.PIE,TRWPFCAN.PIE,FXSHcanM.PIE,FXSHcanA.PIE,fxgrdexS.PIE,fxgrdexS.PIE,FXSSplsh.PIE,0,128,2048,80,90,160,2,0,0,500,32,25,0,0,0,0,10,0,1000,20,NO,KINETIC,CANNON,DIRECT,ANTI TANK,0,90,-60,YES,YES,150,0,YES,100,0,0,0,0 +Cannon6TwinAslt,Level Two-Three,300,800,8500,1,25,500,Gnhvcan2.pie,trhvcan2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,10,2,0,0,28,32,25,0,0,0,0,10,0,1150,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,35,0,YES,50,0,0,1,0 +Cannon5VulcanMk1,Level Two-Three,200,800,7500,1,25,500,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,20,2,0,0,28,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,25,0,YES,50,0,0,1,0 +Cannon5Vulcan-VTOL,Level All,200,800,1500,1,25,10,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,70,50,20,2,0,0,84,32,25,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,25,0,YES,50,100,4,1,0 +Cannon4AUTOMk1,Level Two-Three,175,700,5000,1,22,400,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1152,70,50,45,2,0,0,55,64,25,10,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,50,0,0,1,0 +Cannon4AUTO-VTOL,Level All,175,700,1000,1,22,10,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1152,70,50,45,2,0,0,165,64,25,10,0,0,0,10,10,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-60,YES,NO,100,0,YES,50,100,4,1,0 +Cannon375mmMk1,Level All,200,800,10000,1,20,500,GNHCAN.PIE,TRHCAN.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1024,70,50,50,2,0,0,70,64,25,20,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,150,0,YES,90,0,0,1,0 +Cannon2A-TMk1,Level All,125,500,5000,1,14,350,GNMCAN.PIE,TRMCAN.PIE,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXMSteam.PIE,0,640,960,70,50,45,2,0,0,45,32,25,10,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-60,YES,NO,100,0,YES,60,0,0,1,0 +Cannon1Mk1,Level All,75,375,1000,1,15,200,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.PIE,FXcam20.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,70,50,40,2,0,0,30,16,20,5,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-90,YES,NO,100,0,YES,30,0,0,1,0 +Cannon1-VTOL,Level All,75,375,1000,1,15,10,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.PIE,FXcam20.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,960,70,50,40,2,0,0,90,16,20,5,0,0,0,10,100,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,0,-90,YES,NO,100,0,YES,30,100,4,1,0 +BusCannon,Level One,10,10,10,10,10,10,GNLCAN.pie,Exturret.pie,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,60,50,30,1,0,0,28,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-30,YES,NO,100,0,YES,25,0,0,0,0 +BuggyMG,Level One-Two,3,11,1,1,1,1,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,60,50,5,1,0,0,16,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,100,0,NO,100,0,0,0,0 +bTrikeMG,Level One,2,11,1,1,1,1,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,60,50,5,1,0,0,13,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,100,0,NO,100,0,0,0,0 +BTowerMG,Level All,12,16,1,1,1,1,0,0,FXLMgun.PIE,FXTracRD.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,70,50,5,1,0,0,16,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,100,0,NO,100,0,0,0,0 +Bomb6-VTOL-EMP,Level Three,225,1000,10000,1,10,50,0,TRMVTLEM.PIE,FXLRocPd.PIE,FXLBMBE2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,100,1,0,0,0,0,0,0,0,0,0,10,10,475,20,YES,KINETIC,EMP,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 +Bomb5-VTOL-Plasmite,Level Three,225,1000,12000,1,10,50,0,TRMVTLPL.PIE,FXLRocPd.PIE,FXLBMBP2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,100,1,0,0,600,200,99,400,200,100,128,10,10,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 +Bomb4-VTOL-HvyINC,Level Two-Three,225,1000,9000,1,10,50,0,trmvtlin.PIE,FXLRocPd.PIE,Fxmbmbi2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,100,1,0,0,400,0,0,0,200,100,128,10,10,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 +Bomb3-VTOL-LtINC,Level Two-Three,175,700,500,1,10,10,0,trlvtlin.PIE,FXLRocPd.PIE,Fxlbmbi1.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,2,2,6,10,100,0,0,0,200,50,128,10,0,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,50,0,1,1,0 +Bomb2-VTOL-HvHE,Level Two-Three,200,800,10000,1,10,50,0,trmvtlhe.PIE,FXLRocPd.PIE,Fxmbmbx2.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,1,1,2,2,500,156,99,400,0,0,0,10,10,475,20,YES,KINETIC,BOMB,ERRATIC-DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,200,0,1,1,0 +Bomb1-VTOL-LtHE,Level Two-Three,150,600,500,1,10,10,0,trlvtlhe.PIE,FXLRocPd.PIE,Fxlbmbx1.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,384,512,80,70,1,2,3,100,100,192,99,60,0,0,0,10,10,475,20,YES,KINETIC,BOMB,DIRECT,ARTILLERY ROUND,180,0,-80,YES,NO,10,0,YES,100,0,1,1,0 +BJeepMG,Level One,4,16,1,1,1,1,0,0,FXLMgun.PIE,FXTracRD.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,60,50,5,1,0,0,14,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-30,YES,NO,20,0,NO,100,0,0,0,0 +BabaRocket,Level One,10,10,100,1,10,10,GNLRCKT.PIE,TRLRCKT.PIE,FXLRocPd.PIE,FXMFLARE.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,30,20,1,2,6,100,20,64,80,20,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,0,90,-30,YES,NO,0,128,YES,50,0,0,0,0 +BabaPitRocketAT,Level One,100,500,500,1,10,20,GNLMSL.PIE,TRLRCKT.PIE,FXLRocPd.PIE,FXMFLARE.PIE,FXSExp.PIE,FXSExp.PIE,FXSSplsh.PIE,0,640,960,50,30,3,2,2,120,50,0,0,0,0,0,0,0,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-30,YES,NO,0,128,YES,100,0,0,0,0 +BabaPitRocket,Level One,75,375,250,1,10,10,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMFLARE.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,960,60,30,6,2,0,0,16,0,0,0,0,0,0,10,10,1200,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-30,YES,NO,10,128,YES,25,0,0,0,0 +BaBaMG,Level One-Two,1,1,1,1,1,1,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,640,960,50,40,4,1,0,0,10,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,0,90,-30,YES,NO,20,0,NO,100,0,0,0,0 +BabaFlame,Level One,40,200,10,1,10,35,GNLFLMR.PIE,TRLFLMR.PIE,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,90,40,120,1,0,0,25,0,0,0,90,10,32,10,0,750,20,NO,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,0,0 +BaBaCannon,Level All,10,10,10,10,10,10,0,0,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,60,40,30,1,0,0,28,0,0,0,0,0,0,10,0,1000,20,YES,KINETIC,CANNON,DIRECT,ANTI TANK,180,90,-30,YES,NO,100,0,YES,25,0,0,0,0 +AAGunLaser,Level Three,500,1600,10000,1,20,200,gnhaalas.PIE,Trhmslsa.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,768,2048,70,75,1,2,2,10,200,64,100,40,0,0,0,10,100,1200,20,NO,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,100,0,YES,100,1,0,1,0 +AAGun2Mk1,Level All,150,450,10000,1,20,200,GNHAIR.PIE,TRHAIR.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXAIREXP.PIE,FXAIREXP.PIE,FXSSplsh.PIE,0,768,2048,70,75,1,2,2,10,45,64,100,40,0,0,0,10,100,1200,20,NO,KINETIC,A-A GUN,DIRECT,ANTI AIRCRAFT,180,90,-45,YES,NO,100,0,YES,100,1,0,1,0 diff --git a/data/mods/multiplay/semperfi/multiplay/skirmish/ai.slo b/data/mods/multiplay/semperfi/multiplay/skirmish/ai.slo index 4f12c6e7b..ec075c88d 100644 --- a/data/mods/multiplay/semperfi/multiplay/skirmish/ai.slo +++ b/data/mods/multiplay/semperfi/multiplay/skirmish/ai.slo @@ -82,26 +82,29 @@ //How many best templates to choose from when deciding what template to build #define MAX_RANDOM_TEMPLATES 4 - - private int me; // player for this instance. public int tileExpand; // rate of exploration -public int numScouts[TECHS],maxScouts[TECHS]; // aim for... +public int numScouts,maxScouts; // aim for... public int numDefenders[TECHS],maxDefenders[TECHS]; public int numAttackers[TECHS],maxAttackers[TECHS]; -public int numCyborgs[TECHS],maxCyborgs[TECHS]; +public int numCyborgs,maxCyborgs; -public int branchDefault,branchVTOL,techCount[TECHS],maxVtolFacs[TECHS],maxIdleRes[TECHS], - maxVTOLs[TECHS],numVtolTargets,vtolTargetWeight[10],numRebuildStat[TECHS]; +public BODY bugBody, viperBody, cobraBody, scorpionBody, leopardBody, pythonBody, retributionBody, tigerBody, vengeanceBody, wyvernBody, dragonBody; +public PROPULSION vtolPropulsion, trackPropulsion, wheelPropulsion, hoverPropulsion, halftrackPropulsion; +public WEAPON atWeapon[5], asWeapon[5], mdWeapon[5]; +public int numAtWeapons, numAsWeapons, numMdWeapons; + +public int branchDefault,branchVTOL,techCount[TECHS],maxVtolFacs[TECHS],maxIdleRes, + maxVTOLs[TECHS],numVtolTargets,vtolTargetWeight[10],numRebuildStat; public RESEARCHSTAT tech[TECHS][30]; //technology for different research branches -public STRUCTURESTAT vtolTarget[10],rebuildStat[TECHS][2]; +public STRUCTURESTAT vtolTarget[10],rebuildStat[4]; // structures private int baseX,baseY,minx,miny,maxx,maxy; -public int numStructs,numIncendrys,numDefStructs,numExtraStructs[TECHS],numWallWeaps,numBaseStruct,numLightCyborgs,numFundamental; +public int numStructs,numIncendrys,numDefStructs,numWallWeaps,numBaseStruct,numLightCyborgs,numFundamental; private STRUCTURESTAT structChoice[5]; -public STRUCTURESTAT incendrys[8],structs[13],defStructs[26],extraStructs[TECHS][6],wallWeaps[11]; +public STRUCTURESTAT incendrys[8],structs[13],defStructs[26],wallWeaps[11]; public STRUCTURESTAT sensorTower,wall,cornerWall,resLab,powGen,playerHQ,lassat,factory,derrick,cybFactory, vtolDefStruct[5],vtolPad,vtolFactory,uplink,baseStruct[8]; public STRUCTURESTAT powModule,facModule,resModule,vtolModule; @@ -114,9 +117,6 @@ private TEMPLATE tmplChoice[5]; public TEMPLATE cybTempl[10],superCyb[4],cybMechanic,cybEngineer,hovertruck; -public TEMPLATE vtols[18]; -public int numVtolTemplates; - public TEMPLATE sense[11]; public int numSenseTemplates; @@ -168,6 +168,7 @@ private int defendX,defendY,defendRadius,tDefendStart,tDefendTimeout, private STRUCTURESTAT rebuildStructStat[MAX_REBUILD_STRUCT]; private int order; // callback global +private bool seenAnyAA; ///////////////////////////////////////////////////////////////////// // triggers. @@ -218,8 +219,11 @@ trigger chainloadTr (wait, 1); trigger slowloadTr (wait, 13); trigger checkActivitiesTr (every, 400); trigger selectedDroidTr (CALL_DROID_SELECTED, ref droid); +trigger hostileAATr (every, 600); // check for AA each minute +trigger vtolRetargetTr (CALL_VTOL_RETARGET, me, ref droid); /* Events */ +event checkForHostileAA; event manicWalls; event buildFundamentals; event newfortify; @@ -321,6 +325,7 @@ event initialisedEvent(CALL_GAMEINIT) tDefendStart = -1; tDefendTimeout = -1; defendMoveType = -1; //move or scout + seenAnyAA = false; baseRange = 4 * TILE; @@ -394,11 +399,29 @@ function void dbgObj(DROID obj, string message) } } +event retargetVtol(vtolRetargetTr) +{ + local BASEOBJ _obj; + + if (droid != NULLOBJECT) + { + _obj = getClosestEnemy(droid.x, droid.y, MAX_VTOL_DEFEND_RADIUS, false, false, me); + if (_obj != NULLOBJECT) + { + orderDroidObj(droid, DORDER_ATTACK, _obj); + } + } +} + // for debugging event selectedDroid(selectedDroidTr) { local int groupcount; + if (!bRunning or me != selectedPlayer) + { + exit; + } if (!hasGroup(droid)) { console("Not in any group"); @@ -722,20 +745,21 @@ function bool tryUpgrade() event buildFundamentals(inactive) { local FEATURE _oil; + local bool needPwGen; + needPwGen = false; count = 0; setEventTrigger(buildFundamentals, inactive); // Do we need power generators? if (numUnusedDerricks() > 0) { + needPwGen = true; dbgPlr("More power generators needed"); - setEventTrigger(buildPowerGenerators, chainloadTr); - exit; } // Do we need to get oil? - if (playerPower(me) < LOW_POWER) + if (not needPwGen and playerPower(me) < LOW_POWER) { // Any available? initGetFeature(oilRes, -1, me); @@ -759,7 +783,8 @@ event buildFundamentals(inactive) while (droid != NULLOBJECT) { if (conCanHelp(droid, structure.x, structure.y) - and distBetweenTwoPoints(droid.x, droid.y, structure.x, structure.y) < 20 * TILE) + and distBetweenTwoPoints(droid.x, droid.y, structure.x, structure.y) < 20 * TILE + and (!needPwGen or structure.stattype == REF_POWER_GEN or structure.stattype == REF_POWER_MODULE)) { orderDroidObj(droid, DORDER_HELPBUILD, structure); dbgObj(droid, "Aid construction at (" & structure.x & ", " & structure.y & ")"); @@ -769,6 +794,12 @@ event buildFundamentals(inactive) structure = enumUnbuilt(); } + if (needPwGen) + { + setEventTrigger(buildPowerGenerators, chainloadTr); + exit; + } + // If we have power, build up base basics if (playerPower(me) >= LOW_POWER and idleGroup(buildGroup) > 0) { @@ -802,7 +833,7 @@ event buildFundamentals(inactive) setEventTrigger(buildDerrick, chainloadTr); exit; } - else // if lots of power and too few factories to replace high-risk oil hunting trucks + else // if lots of power or too few factories to replace high-risk oil hunting trucks { dbgPlr("Too much power - EXPAND!"); setEventTrigger(buildExpand, chainloadTr); @@ -1532,45 +1563,43 @@ event newfortify(inactive) _maxBuilders = 1; setEventTrigger(newfortify, inactive); - if(numGroupSameOrder(buildGroup, DORDER_LINEBUILD) >= _maxBuilders) // only gateway fortifications use line build + if (numGroupSameOrder(buildGroup, DORDER_LINEBUILD) < _maxBuilders) // only gateway fortifications use line build { - exit; - } - - boolResult = FALSE; - initIterateGroup(buildGroup); // find idle an idle veh.in build group. - droid = iterateGroup(buildGroup); - while((boolResult == FALSE) and (droid != NULLOBJECT)) - { - if (droid.order != DORDER_BUILD and droid.order != DORDER_LINEBUILD and droid.order != DORDER_HELPBUILD) - { - boolResult = TRUE; // dont do this again! - - tempx = baseX; - tempy = baseY; - - // choose a suitable turret. - count = numWallWeaps - 1; - count2 = 0; - while( (count2 < 3) and (count >= 0) ) - { - if( isStructureAvailable(wallWeaps[count],me)) - { - structChoice[count2] = wallWeaps[count]; - count2 = count2 + 1; - } - count = count - 1; - } - count =0; - if((count2 > 0) and (_numBuilders < _maxBuilders)) - { - count = random(count2); - skDefenseLocationB(ref tempx,ref tempy,wall,structChoice[count],droid,me); - _numBuilders++; - } - - } + boolResult = FALSE; + initIterateGroup(buildGroup); // find idle an idle veh.in build group. droid = iterateGroup(buildGroup); + while((boolResult == FALSE) and (droid != NULLOBJECT)) + { + if (droid.order != DORDER_BUILD and droid.order != DORDER_LINEBUILD and droid.order != DORDER_HELPBUILD) + { + boolResult = TRUE; // dont do this again! + + tempx = baseX; + tempy = baseY; + + // choose a suitable turret. + count = numWallWeaps - 1; + count2 = 0; + while ((count2 < 3) and (count >= 0)) + { + if (isStructureAvailable(wallWeaps[count], me)) + { + structChoice[count2] = wallWeaps[count]; + count2 = count2 + 1; + } + count = count - 1; + } + count = 0; + if ((count2 > 0) and (_numBuilders < _maxBuilders)) + { + count = random(count2); + skDefenseLocationB(ref tempx, ref tempy, wall, structChoice[count], droid, me); + _numBuilders++; + } + + } + droid = iterateGroup(buildGroup); + } } if (idleGroup(buildGroup) > 0 and !tryUpgrade()) { @@ -1629,7 +1658,7 @@ event droidBuiltAssign(droidBuiltTr) } else { - if(scoutGroup.members < numScouts[curTech]) + if(scoutGroup.members < numScouts) { groupAddDroid(scoutGroup, droid); } @@ -1643,7 +1672,7 @@ event droidBuiltAssign(droidBuiltTr) } else { - if(scoutGroup.members < maxScouts[curTech]) + if(scoutGroup.members < maxScouts) { groupAddDroid(scoutGroup, droid); } @@ -2003,7 +2032,7 @@ function bool needTank() return TRUE; } - if((scoutGroup.members < maxScouts[curTech]) or (maxScouts[curTech] == UNLIMITED)) + if((scoutGroup.members < maxScouts) or (maxScouts == UNLIMITED)) { return TRUE; } @@ -2061,7 +2090,7 @@ function void factoryBuildDroid(STRUCTURE _factory) event cyborgFactoryEvent(cyborgFactoryEventTr) { - if(not ((defendGroup.members < maxCyborgs[curTech]) or (maxCyborgs[curTech] == UNLIMITED))) + if(not ((defendGroup.members < maxCyborgs) or (maxCyborgs == UNLIMITED))) { exit; //we need no cyborgs } @@ -2088,7 +2117,7 @@ function void cybFactorBuildCyborg(STRUCTURE _factory) if( structureIdle(_factory) ) { - if( (defendGroup.members < maxCyborgs[curTech]) and (getDroidCount(me) < MAX_DROIDS) ) + if( (defendGroup.members < maxCyborgs) and (getDroidCount(me) < MAX_DROIDS) ) { if(random(5) == 1) { @@ -2415,28 +2444,31 @@ event doAllOutAttack(allOutAttackTr) // defend attacked objects. event defendWatch(defendWatchTr) { - if(baseobj != NULLOBJECT) + if (baseobj != NULLOBJECT) { - if(!friendlyPlayer(baseobj.player)) + if (baseobj.type == OBJ_DROID) { - if(not isHumanPlayer(baseobj.player) ) // new in wdg1 dont allout attack a pc player //TODO:is this check needed? + if (isVtol(objToDroid(baseobj))) { - if(distBetweenTwoPoints(baseobj.x, baseobj.y, baseX, baseY) <= MAX_DEFENDERS_RADIUS) //don't go too far away from the base + exit; // avoid getting caught in the blast from incendiary bombs... no way to check if building is burning + } + } + if (!friendlyPlayer(baseobj.player)) + { + if(distBetweenTwoPoints(baseobj.x, baseobj.y, baseX, baseY) <= MAX_DEFENDERS_RADIUS) //don't go too far away from the base + { + defendObj = baseobj; + defendbusy = TRUE; + // if not too busy, attack. + if (idleGroup(defendGroup) >= (defendGroup.members / 2)) { - defendObj = baseobj; - defendbusy = TRUE; - // if not too busy, attack. - if( idleGroup(defendGroup) >= (defendGroup.members / 2) ) - { - orderGroupLoc(defendGroup, DORDER_MOVE,defendObj.x,defendObj.y); //cyborg mechanics can't attack (won't move) - } - - if( idleGroup(scoutGroup) >= (scoutGroup.members / 2) ) - { - orderGroupLoc(scoutGroup, DORDER_MOVE,scoutX,scoutY); - } + orderGroupLoc(defendGroup, DORDER_MOVE, defendObj.x, defendObj.y); //cyborg mechanics can't attack (won't move) } + if (idleGroup(scoutGroup) >= (scoutGroup.members / 2)) + { + orderGroupLoc(scoutGroup, DORDER_MOVE, scoutX, scoutY); + } } } } @@ -2521,7 +2553,7 @@ event doResearch(doResearchTr) // do common research if(not boolResult) //didn't start branch research { - if((maxIdleRes[curTech] == UNLIMITED) or (_numResearching < maxIdleRes[curTech])) + if((maxIdleRes == UNLIMITED) or (_numResearching < maxIdleRes)) { skDoResearch(structure,me,0); _numResearching++; @@ -2787,34 +2819,113 @@ event buildVtols(inactive) } } - function void vtolFactoryBuildVtol(STRUCTURE _factory) { - local int _numTemplates,_bestTemplates; + local TEMPLATE _newTemplate; + local BODY _bestBody; + local WEAPON _bestWeapon; + local int _rand, _idx; - if(_factory == NULLOBJECT){ + if (_factory == NULLOBJECT or not structureIdle(_factory)) + { return; } - if( structureIdle(_factory) ) + // choose branch: AT, AS or splash + _rand = random(3); + _idx = 0; + _bestWeapon = NULLSTAT; + if (_rand == 0) // anti-tank { - _numTemplates = numVtolTemplates - 1; - _bestTemplates = 0; - while( (_bestTemplates < 3) and (_numTemplates >= 0) ) + _idx = numAtWeapons - 1; + while (_idx >= 0 and _bestWeapon == NULLSTAT) { - if( skCanBuildTemplate(me,_factory, vtols[_numTemplates]) ) + if (isComponentAvailable(me, atWeapon[_idx])) { - tmplChoice[_bestTemplates] = vtols[_numTemplates]; - _bestTemplates++; + _bestWeapon = atWeapon[_idx]; } - _numTemplates--; - } - - if(_bestTemplates > 0) - { - buildDroid(tmplChoice[random(_bestTemplates)],_factory,me,1); + _idx--; } } + if (_rand == 1) // anti-structure + { + _idx = numAsWeapons - 1; + while (_idx >= 0 and _bestWeapon == NULLSTAT) + { + if (isComponentAvailable(me, asWeapon[_idx])) + { + _bestWeapon = asWeapon[_idx]; + } + _idx--; + } + } + if (_rand < 2 and _bestWeapon == NULLSTAT) + { + _rand = 2; // try this instead + } + if (_rand == 2) // indiscriminate mass destruction + { + _idx = numMdWeapons - 1; + while (_idx >= 0 and _bestWeapon == NULLSTAT) + { + if (isComponentAvailable(me, mdWeapon[_idx])) + { + _bestWeapon = mdWeapon[_idx]; + } + _idx--; + } + } + if (_bestWeapon == NULLSTAT) + { + dbgPlr("Failed to find a weapon for VTOL design"); + return; + } + _bestBody = NULLSTAT; + if (not seenAnyAA) + { + // no AA seen, so go for the cheapest bodies -- no need for defense yet! + if (isComponentAvailable(me, bugBody)) + { + _bestBody = bugBody; + } + else if (isComponentAvailable(me, viperBody)) + { + _bestBody = viperBody; + } + } + else + { + // build sturdiest body available with a decent engine + if (isComponentAvailable(me, retributionBody)) + { + _bestBody = retributionBody; + } + else + { + if (isComponentAvailable(me, scorpionBody)) + { + _bestBody = scorpionBody; + } + else if (isComponentAvailable(me, cobraBody)) + { + _bestBody = cobraBody; + } + } + } + if (_bestBody == NULLSTAT or getBodySize(_bestBody) > skGetFactoryCapacity(_factory)) + { + dbgPlr("Failed to find a viable body for VTOL design"); + return; + } + + _newTemplate = assembleWeaponTemplate(me, _bestBody, vtolPropulsion, _bestWeapon); + + if (_newTemplate == NULLTEMPLATE or not skCanBuildTemplate(me, _factory, _newTemplate)) + { + dbgPlr("Failed to construct viable VTOL template"); + return; + } + buildDroid(_newTemplate, _factory, me, 1); } ///////////////////////////////////////////////////////////////////// @@ -3103,6 +3214,31 @@ function int getVtolTargetWeight(BASEOBJ _target) return _targetWeight; } +event checkForHostileAA(hostileAATr) +{ + local int _enemy, _numAA; + + _numAA = 0; + _enemy = 0; + while (_enemy < MAX_PLAYERS) + { + if (!friendlyPlayer(_enemy)) + { + _numAA = _numAA + numAAinRange(_enemy, me, baseX, baseY, -1); + if (_numAA > 0) + { + seenAnyAA = true; + exit; + } + } + _enemy++; + } + if (_numAA == 0) + { + seenAnyAA = false; + } +} + function int numEnemyAAInRange(int _x, int _y, int _range) { local int _enemy,_numAA; @@ -4142,9 +4278,9 @@ event structureDestroyed(structureDestroyedTr) // add certain structures to the rebuild list _count = 0; - while(_count < numRebuildStat[curTech]) + while(_count < numRebuildStat) { - if(structure.stat == rebuildStat[curTech][_count]) + if(structure.stat == rebuildStat[_count]) { if(countRebuildStruct < MAX_REBUILD_STRUCT) { diff --git a/data/mods/multiplay/semperfi/multiplay/skirmish/ai.vlo b/data/mods/multiplay/semperfi/multiplay/skirmish/ai.vlo index 4e4e4bbd1..ea27d72c3 100644 --- a/data/mods/multiplay/semperfi/multiplay/skirmish/ai.vlo +++ b/data/mods/multiplay/semperfi/multiplay/skirmish/ai.vlo @@ -5,34 +5,31 @@ script "ai.slo" run { + // general constants + numScouts int 3 // min number of droids in group to aim for + maxScouts int 3 // max number of droids in group to aim for + numCyborgs int 8 // build cyborgs until scouts contains at least x droids + maxCyborgs int 20 // build cyborgs until scouts contains max x droids + // research branches branchDefault int 0 - branchVTOL int 1 + branchVTOL int 1 //default branch - numScouts[0] int 3 // min number of droids in group to aim for. numDefenders[0] int 4 numAttackers[0] int 8 - numCyborgs[0] int 15 // build cyborgs until scouts contains x droids //vtol branch - numScouts[1] int 3 // min number of droids in group to aim for. numDefenders[1] int 12 numAttackers[1] int 0 - numCyborgs[1] int 25 // build cyborgs until scouts contains x droids - //default branch - maxScouts[0] int 3 // min number of droids in group to aim for. maxDefenders[0] int 5 maxAttackers[0] int -1 - maxCyborgs[0] int 35 // build cyborgs until scouts contains x droids //vtol branch - maxScouts[1] int 3 // min number of droids in group to aim for. maxDefenders[1] int 20 maxAttackers[1] int 0 - maxCyborgs[1] int 50 // build cyborgs until scouts contains x droids tileExpand int 12 // approx minutes to expand over the map. @@ -52,15 +49,15 @@ run vtolFactory STRUCTURESTAT "A0VTolFactory1" sensorTower STRUCTURESTAT "Sys-SensoTower02" lassat STRUCTURESTAT "A0LasSatCommand" - nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" + nexusDefence RESEARCHSTAT "R-Sys-Resistance-Circuits" uplink STRUCTURESTAT "A0Sat-linkCentre" + //how many res facilities to use when finished researching all specified research topics + maxIdleRes int -1 + //number of research topics for each research branch techCount[0] int 18 - //how many res facilities to use when finished researching all specified research topics - maxIdleRes[0] int -1 - tech[0][0] RESEARCHSTAT "R-Defense-Tower01" //mg guard tower tech[0][1] RESEARCHSTAT "R-Wpn-MG3Mk1" //HMG tech[0][2] RESEARCHSTAT "R-Struc-PowerModuleMk1" //power module @@ -81,46 +78,25 @@ run tech[0][17] RESEARCHSTAT "R-Struc-Research-Upgrade06" //to dedicate one reslab to cerebral stuff //other tech: R-Vehicle-Prop-VTOL, R-Struc-VTOLPad, R-Struc-VTOLFactory - techCount[1] int 27 + techCount[1] int 17 - //how many res facilities to use when finished researching all specified research topics - maxIdleRes[1] int 3 - - tech[1][0] RESEARCHSTAT "R-Struc-VTOLFactory" - tech[1][1] RESEARCHSTAT "R-Struc-VTOLPad" - tech[1][2] RESEARCHSTAT "R-Wpn-MG3Mk1" //HMG - tech[1][3] RESEARCHSTAT "R-Cyborg-Wpn-MG" //Machine gunner - - tech[1][4] RESEARCHSTAT "R-Wpn-Rocket02-MRL" //mini rocket artillery - tech[1][5] RESEARCHSTAT "R-Wpn-Rocket-ROF03" - - tech[1][6] RESEARCHSTAT "R-Cyborg-Sys-Mechanic" //mechanic - tech[1][7] RESEARCHSTAT "R-Cyborg-Sys-ComEng" //cyb engineer - tech[1][8] RESEARCHSTAT "R-Cyborg-Wpn-Flamer" //flamer - tech[1][9] RESEARCHSTAT "R-Wpn-Flamer-Damage03" //flamer damage 03 - tech[1][10] RESEARCHSTAT "R-Wpn-Flamer-ROF03" //flamer ROF 03 - - tech[1][11] RESEARCHSTAT "R-Cyborg-Wpn-Cannon" //heavy gunner - tech[1][12] RESEARCHSTAT "R-Wpn-Rocket01-LtAT" //Lancer - tech[1][13] RESEARCHSTAT "R-Cyborg-Wpn-Rocket" //Cyborg Lancer - tech[1][14] RESEARCHSTAT "R-Vehicle-Body08" //Scorpion body - tech[1][15] RESEARCHSTAT "R-Struc-Power-Upgrade03a" //power upgrade 03a - tech[1][16] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy03" //lancer accuracy - tech[1][17] RESEARCHSTAT "R-Wpn-RocketSlow-Damage06" //lancer damage 06 (all 6 can be researched at once) - - tech[1][18] RESEARCHSTAT "R-Cyborg-Wpn-RotMG-Grd" //assault gunner - - - tech[1][19] RESEARCHSTAT "R-Wpn-Rocket03-HvAT" //BB - tech[1][20] RESEARCHSTAT "R-Cyborg-Wpn-Rail1-Grd" //needle gunner - tech[1][21] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" - tech[1][22] RESEARCHSTAT "R-Struc-VTOLFactory-Upgrade06" - tech[1][23] RESEARCHSTAT "R-Sys-Autorepair-General" //autorepair - tech[1][24] RESEARCHSTAT "R-Sys-Sensor-UpLink" - tech[1][25] RESEARCHSTAT "R-Sys-VTOLCBS-Turret01" - tech[1][26] RESEARCHSTAT "R-Sys-VTOLStrike-Tower01" - - //tech[1][5] RESEARCHSTAT "R-Vehicle-Body04" // Bug body + tech[1][0] RESEARCHSTAT "R-Defense-Tower01" //mg tower for early fun + tech[1][1] RESEARCHSTAT "R-Struc-Research-Module" //reslab module + tech[1][2] RESEARCHSTAT "R-Struc-PowerModuleMk1" //power module + tech[1][3] RESEARCHSTAT "R-Struc-VTOLFactory" //rush vtols + tech[1][4] RESEARCHSTAT "R-Struc-VTOLPad" //vtol pads + tech[1][5] RESEARCHSTAT "R-Wpn-Bomb04" //thermite bomb - and we win + tech[1][6] RESEARCHSTAT "R-Defense-AASite-QuadMg1" //AA hurricane site + tech[1][7] RESEARCHSTAT "R-Defense-WallTower01" //heavy mg hardpoint - in case missed + tech[1][8] RESEARCHSTAT "R-Defense-WallUpgrade01" //impr hardcrete - in case missed + tech[1][9] RESEARCHSTAT "R-Struc-Materials01" //reinf struc mat - in case missed + tech[1][10] RESEARCHSTAT "R-Vehicle-Body07" //retribution body + tech[1][11] RESEARCHSTAT "R-Vehicle-Metals09" //vtol armor + tech[1][12] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" //rearm + tech[1][13] RESEARCHSTAT "R-Struc-VTOLFactory-Upgrade06" //production + tech[1][14] RESEARCHSTAT "R-Struc-Power-Upgrade03a" //power upgrade 03a + tech[1][15] RESEARCHSTAT "R-Sys-Autorepair-General" //autorepair + tech[1][16] RESEARCHSTAT "R-Vehicle-Engine09" //finally - speed maxVtolFacs[0] int 1 maxVtolFacs[1] int 4 @@ -153,11 +129,12 @@ run // Essential and fundamental structs. Fundamental => what you build on level start numStructs int 13 - numFundamental int 4 + numFundamental int 5 structs[0] STRUCTURESTAT "A0LightFactory" structs[1] STRUCTURESTAT "A0ResearchFacility" structs[2] STRUCTURESTAT "A0CommandCentre" structs[3] STRUCTURESTAT "A0CyborgFactory" + structs[4] STRUCTURESTAT "A0PowerGenerator" structs[5] STRUCTURESTAT "Sys-CB-Tower01" structs[6] STRUCTURESTAT "Sys-SpyTower" @@ -222,21 +199,6 @@ run wallWeaps[8] STRUCTURESTAT "WallTower-Atmiss" wallWeaps[9] STRUCTURESTAT "WallTower-HPVcannon" - - // extra structs - numExtraStructs[0] int 4 - extraStructs[0][1] STRUCTURESTAT "A0ResearchFacility" - extraStructs[0][2] STRUCTURESTAT "A0LightFactory" - extraStructs[0][3] STRUCTURESTAT "A0LightFactory" - extraStructs[0][4] STRUCTURESTAT "A0CyborgFactory" - - numExtraStructs[1] int 5 - extraStructs[1][0] STRUCTURESTAT "A0VTolFactory1" - extraStructs[1][1] STRUCTURESTAT "A0VTolFactory1" - extraStructs[1][2] STRUCTURESTAT "A0CyborgFactory" - extraStructs[1][3] STRUCTURESTAT "A0VtolPad" - extraStructs[1][4] STRUCTURESTAT "A0LightFactory" - ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// // SKIRMISH TEMPLATES @@ -267,11 +229,6 @@ run tmpl[0][17] TEMPLATE "SK-Cobra-Track-HVC" //HVC Tr tmpl[0][18] TEMPLATE "CobraHvyCnTrks" //HC Tr - //tmpl[0][19] TEMPLATE "SK-Python-Hover-Mcannon" - //tmpl[0][20] TEMPLATE "PythonMedCnTrks" - //tmpl[0][21] TEMPLATE "SK-Python-Hover-Lancer" - //tmpl[0][22] TEMPLATE "SK-Python-Hover-Hcannon" - //Campaign 2 tmpl[0][19] TEMPLATE "PythonHoverHVC" //HVC Hover tmpl[0][20] TEMPLATE "SK-Cobra-Track-TK" @@ -374,38 +331,7 @@ run superCyb[2] TEMPLATE "Cyb-Hvy-Acannon" superCyb[3] TEMPLATE "Cyb-Hvy-TK" - - ///////////////////////////////////////////////////////////////////// - // VTOL TEMPLATES - - numVtolTemplates int 8 - - vtols[0] TEMPLATE "P6-L-LTAT-V" //Viper Lancer - vtols[1] TEMPLATE "P6-L-Bomb1-V" //Viper Cluster Bombs Bay - vtols[2] TEMPLATE "SK-Bug-VTOL-CLBomb" - vtols[3] TEMPLATE "SK-Scorpion-VTOL-Hbomb" - vtols[4] TEMPLATE "H-Scorp-VTOL-Lancer" - vtols[5] TEMPLATE "H-Scorp-VTOL-BB" - vtols[6] TEMPLATE "H-Scorp-VTOL-Lancer" - vtols[7] TEMPLATE "SK-Retre-VTOL-Thermite" - - /* - vtols[7] TEMPLATE "SK-Mantis-VTOL-BB" - vtols[8] TEMPLATE "SK-Leopard-VTOL-BB" - vtols[9] TEMPLATE "SK-Leopard-VTOL-PhosBomb" - vtols[10] TEMPLATE "SK-Panther-VTOL-Thermite" - vtols[11] TEMPLATE "SK-Panther-VTOL-BB" - vtols[12] TEMPLATE "SK-Panther-VTOL-Phosbomb" - vtols[13] TEMPLATE "SK-Panther-VTOL-TK" - //Campaign 3 - vtols[14] TEMPLATE "SK-Retal-VTOL-Phosbomb" - vtols[16] TEMPLATE "SK-Retre-VTOL-PulseLsr" - vtols[17] TEMPLATE "SK-Retre-VTOL-Scourge" - */ - - numVtolTargets int 10 - vtolTarget[0] STRUCTURESTAT "A0CommandCentre" vtolTargetWeight[0] int 10 vtolTarget[1] STRUCTURESTAT "A0LightFactory" @@ -428,17 +354,46 @@ run vtolTargetWeight[9] int 10 - // Structure types AI will rebuild when they get destroyed (per tech branch basis) - - // branchDefault - numRebuildStat[0] int 2 - rebuildStat[0][0] STRUCTURESTAT "A0HardcreteMk1Wall" - rebuildStat[0][1] STRUCTURESTAT "A0HardcreteMk1CWall" + // Structure types AI will rebuild when they get destroyed + numRebuildStat int 2 + rebuildStat[0] STRUCTURESTAT "A0HardcreteMk1Wall" + rebuildStat[1] STRUCTURESTAT "A0HardcreteMk1CWall" - // branchVTOL - numRebuildStat[1] int 2 - rebuildStat[1][0] STRUCTURESTAT "A0HardcreteMk1Wall" - rebuildStat[1][1] STRUCTURESTAT "A0HardcreteMk1CWall" + // propulsions + vtolPropulsion PROPULSION "V-Tol" + trackPropulsion PROPULSION "tracked01" + wheelPropulsion PROPULSION "wheeled01" + hoverPropulsion PROPULSION "hover01" + halftrackPropulsion PROPULSION "HalfTrack" + + // bodies + bugBody BODY "Body4ABT" + viperBody BODY "Body1REC" + cobraBody BODY "Body5REC" + scorpionBody BODY "Body8MBT" + leopardBody BODY "Body2SUP" + pythonBody BODY "Body11ABT" + retributionBody BODY "Body7ABT" + tigerBody BODY "Body9REC" + vengeanceBody BODY "Body10MBT" + wyvernBody BODY "Body13SUP" + dragonBody BODY "Body14SUP" + + // anti-tank weapons, in reverse order of priority + numAtWeapons int 3 + atWeapon[0] WEAPON "Rocket-VTOL-LtA-T" // vtol lancer + atWeapon[1] WEAPON "Rocket-VTOL-HvyA-T" // vtol tank-killer + atWeapon[2] WEAPON "Missile-VTOL-AT" // vtol scourge + + // anti-building weapons, in order of priority + numAsWeapons int 1 + asWeapon[0] WEAPON "Rocket-VTOL-BB" // vtol bunker-buster + + // weapons of mass destruction + numMdWeapons int 3 + mdWeapon[0] WEAPON "Bomb3-VTOL-LtINC" // phosphor bomb + mdWeapon[1] WEAPON "Bomb4-VTOL-HvyINC" // thermite bomb + mdWeapon[2] WEAPON "Bomb5-VTOL-Plasmite" // plasmite bomb ///////////////////////////////////////////////////////////////////// } diff --git a/data/mp/messages/strings/names.txt b/data/mp/messages/strings/names.txt index 5027178df..110a1315c 100644 --- a/data/mp/messages/strings/names.txt +++ b/data/mp/messages/strings/names.txt @@ -401,6 +401,7 @@ A0RepairCentre _("Repair Center") A0ComDroidControl _("Command Relay Center") A0HardcreteMk1CWall _("Hardcrete Corner Wall") A0HardcreteMk1Wall _("Hardcrete Wall") +A0HardcreteMk1Gate _("Hardcrete Gate") A0VTolFactory1 _("VTOL Factory") A0CyborgFactory _("Cyborg Factory") @@ -720,6 +721,8 @@ R-Defense-WallUpgrade10 _("Plasteel") R-Defense-WallUpgrade11 _("Plasteel Mk2") R-Defense-WallUpgrade12 _("Plasteel Mk3") +R-Defense-HardcreteGate _("Gate") + R-Defense-AASite-QuadBof _("Cyclone AA Site") R-Defense-AASite-QuadMg1 _("Hurricane AA Site") R-Defense-AASite-QuadRotMg _("Whirlwind AA Site") @@ -1932,3 +1935,26 @@ WyvernHvLaserTracks _("Heavy Laser Wyvern Tracks") ViperLtMGHalfTracks _("Machinegun Viper Half-Tracks") ViperFlameHalfTracks _("Flamer Viper Half-Tracks") + +//Added for DyDo-AI +CobraInfernoHover _("Inferno Cobra Hover") +CobraMedCnHTrks _("Medium Cannon Cobra Half Track") +PythonHoverInferno _("Inferno Python Hover") +PhytonHoverAssGun _("Assault Gun Python Hover") +PhytonHTrackAssGun _("Assault Gun Python Half Track") +ScorpHTrackHMG _("Heavy Machinegun Scorpion Half Tracks") +MantisHoverAC _("Assault Cannon Mantis Hover") +LeopardHoverPulseLas _("Pulse Laser Leopard Hover") +PantherHoverPulseLas _("Pulse Laser Panther Hover") +TigerHoverRailGun _("Rail Gun Tiger Hover") +TigerHoverPulseLas _("Pulse Laser Tiger Hover") +WyvernPlasmaCTracks _("Plasma Cannon Wyvern Tracks") +WyvernScourgeTracks _("Scourge Missile Wyvern Tracks") +RetreHoverFlashLight _("Flashlight Retribution Hover") +ViperPODHalfTracks _("Mini-Rocket Viper Half Track") +ViperMRLHalfTracks _("Mini-Rocket Array Viper Half Track") +SK-Mantis-VTOL-PBB _("Phosphor Bomb Bay Mantis VTOL") +SK-Mantis-VTOL-HBB _("Heap Bomb Bay Mantis VTOL") +SK-Retre-VTOL-HBB _("Heap Bomb Bay Retribution VTOL") +SK-Retal-VTOL-Scourge _("Scourge Retaliation VTOL") +SK-Retre-VTOL-Plasmite _("Plasmite Retribution VTOL") diff --git a/data/mp/stats/assignweapons.txt b/data/mp/stats/assignweapons.txt index 85be2dd06..9e1be88af 100644 --- a/data/mp/stats/assignweapons.txt +++ b/data/mp/stats/assignweapons.txt @@ -296,4 +296,25 @@ ViperLtMGHalfTracks,MG1Mk1,NULL,NULL,6 ViperFlameHalfTracks,Flame1Mk1,NULL,NULL,6 PythonMedCanTracks,Cannon2A-TMk1,NULL,NULL,6 PythonTKTracks,Rocket-HvyA-T,NULL,NULL,6 +CobraInfernoHover,Flame2,NULL,NULL,6 +CobraMedCnHTrks,Cannon2A-TMk1,NULL,NULL,6 +PythonHoverInferno,Flame2,NULL,NULL,6 +PhytonHoverAssGun,MG4ROTARYMk1,NULL,NULL,6 +PhytonHTrackAssGun,MG4ROTARYMk1,NULL,NULL,6 +ScorpHTrackHMG,MG1Mk1,NULL,NULL,6 +MantisHoverAC,Cannon5VulcanMk1,NULL,NULL,6 +LeopardHoverPulseLas,Laser2PULSEMk1,NULL,NULL,6 +PantherHoverPulseLas,Laser2PULSEMk1,NULL,NULL,6 +TigerHoverPulseLas,Laser2PULSEMk1,NULL,NULL,6 +TigerHoverRailGun,RailGun2Mk1,NULL,NULL,6 +WyvernScourgeTracks,Missile-A-T,NULL,NULL,6 +WyvernPlasmaCTracks,Laser4-PlasmaCannon,NULL,NULL,6 +RetreHoverFlashLight,Laser3BEAMMk1,NULL,NULL,6 +ViperPODHalfTracks,Rocket-Pod,NULL,NULL,6 +ViperMRLHalfTracks,Rocket-MRL,NULL,NULL,6 +SK-Mantis-VTOL-PBB,Bomb3-VTOL-LtINC,NULL,NULL,6 +SK-Mantis-VTOL-HBB,Bomb2-VTOL-HvHE,NULL,NULL,6 +SK-Retre-VTOL-HBB,Bomb2-VTOL-HvHE,NULL,NULL,6 +SK-Retal-VTOL-Scourge,Missile-VTOL-AT,NULL,NULL,6 +SK-Retre-VTOL-Plasmite,Bomb5-VTOL-Plasmite,NULL,NULL,6 ZNULLDESIGN,ZNULLWEAPON,ZNULLWEAPON,ZNULLWEAPON,0 diff --git a/data/mp/stats/propulsion.txt b/data/mp/stats/propulsion.txt index 3c542bc62..e83f9e2e8 100644 --- a/data/mp/stats/propulsion.txt +++ b/data/mp/stats/propulsion.txt @@ -14,9 +14,9 @@ hover01,Level All,100,100,200,1,1,150,PRLHOV1.PIE,Hover,300,1 HalfTrack03,Level All,125,75,300,1,1,500,PRLRHTR1.PIE,Half-Tracked,150,0 HalfTrack02,Level All,100,75,350,1,1,350,PRLRHTR1.PIE,Half-Tracked,150,0 HalfTrack,Level All,75,75,400,1,1,200,PRLRHTR1.PIE,Half-Tracked,150,1 -CyborgLegs03,Level All,10,50,100,1,1,150,0,Legged,400,0 -CyborgLegs02,Level All,10,50,100,1,1,100,0,Legged,400,0 -CyborgLegs,Level All,10,50,100,1,1,50,0,Legged,400,0 +CyborgLegs03,Level All,10,50,50,1,1,150,0,Legged,400,0 +CyborgLegs02,Level All,10,50,50,1,1,100,0,Legged,400,0 +CyborgLegs,Level All,10,50,50,1,1,50,0,Legged,400,0 BaBaProp,Level All,0,15,10,1,5,1,0,Wheeled,200,0 BaBaLegs,Level All,0,15,10,1,5,1,0,Legged,200,0 Naval,Level All,150,150,300,1,1,300,prhnaval1.pie,Propellor,300,1 diff --git a/data/mp/stats/research/multiplayer/prresearch.txt b/data/mp/stats/research/multiplayer/prresearch.txt index 95c418f05..a3840f21e 100644 --- a/data/mp/stats/research/multiplayer/prresearch.txt +++ b/data/mp/stats/research/multiplayer/prresearch.txt @@ -54,6 +54,7 @@ R-Defense-EMPMortar,R-Defense-EMPCannon,1153 R-Defense-GuardTower-ATMiss,R-Wpn-Missile2A-T,566 R-Defense-GuardTower-Rail1,R-Wpn-RailGun01,568 R-Defense-HardcreteWall,R-Sys-Engineering01,142 +R-Defense-HardcreteGate,R-Defense-HardcreteWall,999 R-Defense-HeavyLas,R-Wpn-HvyLaser,1105 R-Defense-Howitzer,R-Wpn-HowitzerMk1,569 R-Defense-Howitzer-Incenediary,R-Defense-Howitzer,1075 @@ -415,7 +416,6 @@ R-Wpn-Energy-Damage03,R-Wpn-Energy-Damage02,854 R-Wpn-Energy-ROF01,R-Wpn-Energy-Damage01,855 R-Wpn-Energy-ROF02,R-Wpn-Energy-ROF01,856 R-Wpn-Energy-ROF03,R-Wpn-Energy-ROF02,857 -R-Wpn-Flame2,R-Vehicle-Body05,524 R-Wpn-Flame2,R-Wpn-Flamer-Damage04,524 R-Wpn-Flame2,R-Wpn-Flamer01Mk1,524 R-Wpn-Flamer-Damage01,R-Wpn-Flamer01Mk1,385 diff --git a/data/mp/stats/research/multiplayer/research.txt b/data/mp/stats/research/multiplayer/research.txt index 127adcf3d..23fef2d0c 100644 --- a/data/mp/stats/research/multiplayer/research.txt +++ b/data/mp/stats/research/multiplayer/research.txt @@ -23,6 +23,7 @@ R-Struc-Research-Module,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_RM1,A0R R-Wpn-Rocket05-MiniPod,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_MP1,0,Rocket-Pod,WEAPON,1200,1,1,0,0,0,0,0,2 R-Wpn-Rocket01-LtAT,Level All,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RK_LTAT1,0,Rocket-LtA-T,WEAPON,3600,0,2,0,0,0,0,0,3 R-Defense-HardcreteWall,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_HCW1,A0HardcreteMk1Wall,0,0,600,1,1,0,0,0,2,0,0 +R-Defense-HardcreteGate,Level All,0,0,IMAGE_RES_DEFENCE,0,0,RES_DF_HCW1,A0HardcreteMk1Gate,0,0,1800,0,1,0,0,0,1,0,0 R-Wpn-Cannon1Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_CN1MK1,0,Cannon1Mk1,WEAPON,2400,1,1,0,0,0,0,0,3 R-Struc-Factory-Module,Level One,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_FM1,A0FacMod1,0,0,2400,1,2,0,0,0,1,0,0 R-Wpn-MG1Mk1,Level One,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_MG1MK1,0,MG1Mk1,WEAPON,60,1,0,0,0,0,0,0,3 @@ -134,7 +135,7 @@ R-Struc-VTOLPad,Level Two,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VP,A0VtolPad,0, R-Struc-VTOLFactory,Level Two,0,0,IMAGE_RES_STRUCTURETECH,0,0,RES_ST_VF,A0VTolFactory1,0,0,6000,0,1,0,0,0,1,0,0 R-Wpn-Cannon5,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_CN5,0,Cannon5VulcanMk1,WEAPON,8000,1,2,0,0,0,0,0,2 R-Wpn-AAGun02,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_AA2,0,AAGun2Mk1,WEAPON,4800,1,2,0,0,0,0,0,1 -R-Wpn-Flame2,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_FLAME2,0,Flame2,WEAPON,7200,1,3,0,0,0,0,2,2 +R-Wpn-Flame2,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_FLAME2,0,Flame2,WEAPON,7200,1,2,0,0,0,0,2,2 R-Wpn-Howitzer03-Rot,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_RHOW,0,Howitzer03-Rot,WEAPON,12000,1,2,0,0,0,0,1,1 R-Wpn-MG4,Level Two-Three,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_MG4,0,MG4ROTARYMk1,WEAPON,7200,1,2,0,0,0,0,7,3 R-Wpn-Mortar3,Level Two,0,0,IMAGE_RES_WEAPONTECH,0,0,RES_W_M3,0,Mortar3ROTARYMk1,WEAPON,10000,1,2,0,0,0,0,1,1 diff --git a/data/mp/stats/research/multiplayer/resultstructure.txt b/data/mp/stats/research/multiplayer/resultstructure.txt index 079050520..64f91d75a 100644 --- a/data/mp/stats/research/multiplayer/resultstructure.txt +++ b/data/mp/stats/research/multiplayer/resultstructure.txt @@ -10,6 +10,7 @@ R-Defense-GuardTower-ATMiss,GuardTower-ATMiss,0,219 R-Defense-GuardTower-Rail1,GuardTower-Rail1,0,220 R-Defense-HardcreteWall,A0HardcreteMk1CWall,0,97 R-Defense-HardcreteWall,A0HardcreteMk1Wall,0,93 +R-Defense-HardcreteGate,A0HardcreteMk1Gate,0,666 R-Defense-HeavyLas,Emplacement-HeavyLaser,Emplacement-PrisLas,327 R-Defense-Howitzer,Emplacement-Howitzer105,0,134 R-Defense-Howitzer-Incenediary,Emplacement-Howitzer-Incenediary,0,323 diff --git a/data/mp/stats/structures.txt b/data/mp/stats/structures.txt index 446d8fabb..058221cc9 100644 --- a/data/mp/stats/structures.txt +++ b/data/mp/stats/structures.txt @@ -20,8 +20,9 @@ A0CommandCentreNP,HQ,Level One,HARD,0,2,2,Concrete,500,3,10,1000,10,100,30,300,1 A0CyborgFactory,CYBORG FACTORY,Level All,MEDIUM,1,1,2,Concrete,500,2,10,1000,100,100,30,150,255,20,ZNULLECM,DefaultSensor1Mk1,1,blcfact1.pie,blbcfact.pie,1,0 A0FacMod1,FACTORY MODULE,Level All,MEDIUM,1,3,3,Concrete,250,2,10,500,100,100,25,150,255,30,ZNULLECM,DefaultSensor1Mk1,0,BLFACT1.PIE,0,1,0 A0HardcreteMk1CWall,CORNER WALL,Level All,HARD,1,1,1,Concrete,125,2,15,700,10,25,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLWALLC1.pie,0,0,0 +A0HardcreteMk1Gate,GATE,Level All,HARD,1,1,1,Concrete,250,2,15,700,10,25,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLGATEH.pie,0,0,0 A0HardcreteMk1Wall,WALL,Level All,HARD,1,1,1,Concrete,125,2,15,700,10,25,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLWALLH.pie,0,1,0 -A0LasSatCommand,DOOR,Level All,HARD,1,2,2,Concrete,2500,2,16,1000,10,1000,1,0,255,0,ZNULLECM,0,1,milasbas.pie,0,0,1 +A0LasSatCommand,DOOR,Level All,MEDIUM,1,2,2,Concrete,2500,2,16,1000,10,1000,1,0,255,0,ZNULLECM,0,1,milasbas.pie,0,0,1 A0LightFactory,FACTORY,Level All,MEDIUM,1,3,3,Concrete,500,3,10,1000,100,100,30,150,255,20,ZNULLECM,BaBaSensor,1,BLFACT0.pie,blbfact.pie,1,0 A0PowerGenerator,POWER GENERATOR,Level All,MEDIUM,1,2,2,Concrete,500,2,20,1000,30,50,30,300,255,10,ZNULLECM,DefaultSensor1Mk1,0,BLPOWER0.PIE,blbpower.pie,1,0 A0PowMod1,POWER MODULE,Level All,MEDIUM,0,2,2,Concrete,250,2,10,1000,0,0,0,150,255,0,ZNULLECM,DefaultSensor1Mk1,0,BLPOWER4.PIE,0,1,0 @@ -48,7 +49,7 @@ CO-WallTower-RotCan,DEFENSE,Level Two,HARD,0,1,1,Concrete,500,2,12,800,10,100,10 CollectiveCWall,CORNER WALL,Level All,HARD,1,1,1,Concrete,125,2,12,500,10,25,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLWALLC2.pie,0,0,0 CollectiveWall,WALL,Level Two,HARD,1,1,1,Concrete,125,2,12,500,10,25,1,0,255,0,ZNULLECM,ZNULLSENSOR,0,BLWALL2.pie,0,1,0 CoolingTower,DEFENSE,Level All,SOFT,1,1,1,Concrete,500,2,20,700,30,50,30,0,255,10,ZNULLECM,ZNULLSENSOR,0,micool.PIE,0,0,0 -Emplacement-HeavyLaser,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,10,400,10,450,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 +Emplacement-HeavyLaser,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,10,400,10,500,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 Emplacement-Howitzer-Incenediary,DEFENSE,Level Two-Three,HARD,0,1,1,Concrete,550,1,10,400,10,325,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blhowmnt.PIE,0,1,1 Emplacement-Howitzer105,DEFENSE,Level Two-Three,HARD,0,1,1,Concrete,550,1,10,400,10,325,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blhowmnt.PIE,0,1,1 Emplacement-Howitzer150,DEFENSE,Level Two-Three,HARD,0,1,1,Concrete,600,1,10,400,10,425,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,Blhowmnt.PIE,0,0,1 @@ -61,7 +62,7 @@ Emplacement-MortarPit-Incenediary,DEFENSE,Level Three,MEDIUM,0,1,1,Concrete,425, Emplacement-MortarPit01,DEFENSE,Level One-Two,MEDIUM,0,1,1,Concrete,400,1,10,300,10,125,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLMRTPIT.PIE,0,0,1 Emplacement-MortarPit02,DEFENSE,Level All,MEDIUM,0,1,1,Concrete,450,1,10,300,10,150,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLMRTPIT.PIE,0,0,1 Emplacement-MRL-pit,DEFENSE,Level All,HARD,0,1,1,Concrete,400,1,10,400,10,125,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 -Emplacement-PlasmaCannon,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,10,400,10,225,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 +Emplacement-PlasmaCannon,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,10,400,10,300,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 Emplacement-PrisLas,DEFENSE,Level Three,HARD,0,1,1,Concrete,450,1,10,400,10,275,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 Emplacement-PulseLaser,DEFENSE,Level Three,HARD,0,1,1,Concrete,400,1,10,400,10,225,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 Emplacement-Rail2,DEFENSE,Level Three,HARD,0,1,1,Concrete,500,1,10,400,10,350,10,150,255,1,ZNULLECM,DefaultSensor1Mk1,1,BLHARDPT.PIE,0,0,1 diff --git a/data/mp/stats/templates.txt b/data/mp/stats/templates.txt index dbe014e87..03f4038b7 100644 --- a/data/mp/stats/templates.txt +++ b/data/mp/stats/templates.txt @@ -1,345 +1,366 @@ -ConstructionDroid,140,Body1REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,0,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -BarbarianTrike,139,B4body-sml-trike01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BarbarianBuggy,150,B3body-sml-buggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BaBaPeople,158,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 -ViperLtCannonWheels,177,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperLtCannonHTracks,178,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BabaJeep,194,B2JeepBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ConstructorDroid,249,Body1REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,5,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -ViperLtCannonTracks,257,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMedCnTrks,263,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraLtCnTrks,266,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMedCnTrks,267,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHvyCnTrks,268,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonLtCnTrks,269,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonHvyCnTrks,271,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperFlameWheels,274,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperSensorWheels,275,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -BabaRKJeep,276,B2RKJeepBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BarbarianRKBuggy,277,B3bodyRKbuggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Transporter,278,TransporterBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,V-Tol,ZNULLREPAIR,TRANSPORTER,DefaultSensor1Mk1,1 -BabaBusCan,289,BusBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BabaFireCan,290,FireBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-RocketPod-Wheels,311,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-MRLS-Halftrack,312,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-HMG-Halftrack,313,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-LtAT-Halftrack,314,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-L-Sensor-Wheels,315,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -NP-M-Command-Halftrack,316,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-Sensor-Wheels,317,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -NP-M-MdCannon-Halftrack,318,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-MdCannon-Tracks,319,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-LtMortar-Halftrack,320,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-HvyMortar-Halftrack,321,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-BB-Halftrack,322,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-H-MdCannon-Tracks,323,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-H-HvyCannon-Tracks,324,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cyb-Chain-GROUND,325,CyborgChain1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CO-H-How105-Tracks,328,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-How150-Tracks,329,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-HvyCan-Tracks,330,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-MedCan-Tracks,336,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Sensor-T,337,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -CyborgFlamer01Grd,341,CyborgFlamerGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CyborgRkt01Ground,342,CyborgRkt1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CyborgCannon01Grd,343,CyborgCannonGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CyborgChain01Ground,344,CyborgChain1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -CobraMortarHalfTrack,346,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHMGHalfTrack,347,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,4,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Con-T,350,Body6SUPP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -BabaFireTruck,354,FireBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -BabaPickUp,355,B2RKJeepBody,ZNULLBRAIN,Spade1Mk1,ZNULLECM,7,ZNULLPROP,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -NX-M-Rail2-Hover,363,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-PulseLas-VTOL,365,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Missile-A-T-VTOL,366,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Sens-Hov,369,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -NX-M-Missile-A-T-Hover,371,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-M-Com-Hover,376,Body7ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-Cyb-Rail1-JUMP,377,CybNXRail1Jmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 -NX-Cyb-PulseLas-JUMP,378,CybNXPulseLasJmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 -NX-Cyb-Miss-JUMP,379,CybNXMissJmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 -SuperTank,380,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-LitCannon-Halftrack,381,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-M-Con-Hover,382,Body7ABT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,0 -SuperTank2,383,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-L-Repair-Hover,384,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,LightRepair1,DROID,NavGunSensor,0 -ATESTVEHICLE,387,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ZNULLDESIGN,389,ZNULLBODY,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,ZNULLPROP,ZNULLREPAIR,ZNULLDROID,ZNULLSENSOR,0 -NP-M-LtAT-Hover,391,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-H-HvyCannon-Hover,392,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-MG3-Hover,393,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ATESTVTOL,394,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ASPOTTER,395,Cyb-Hvybod-HPV,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -NP-M-CON-HalfTrack,397,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -NP-M-CON-Track,398,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -NP-M-Repair-HalfTrack,399,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -NP-M-Command-Track,400,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NP-M-CBS-Halftrack,402,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,Sys-CBTurret01,0 -NP-L-LtCannon-Halftrack,403,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,1,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Repair-T,405,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -CO-M-Vstrike-T,407,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,Sys-VstrikeTurret01,0 -CO-M-VTOLCBS-T,408,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,Sys-VTOLCBTurret01,0 -CO-H-Command-Track,410,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HMG-T,411,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-LTAT-Hover,412,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HPVCannon-Tracks,413,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Rocket-LtA-T-T,415,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Rocket-HvyA-T-Track,417,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-RotCan-Track,418,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-HPVCannon-Tracks,419,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-Rkt-BB-T,420,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HvMortar-T,421,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-RotMortar-T,422,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-RotHow-Track,423,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-L-Rocket-LtA-T-VTOL,424,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-COM-H,425,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-L-RotMG-VTOL,426,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Bomb1-VTOL,427,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-Bomb2-VTOL,428,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-QuadBofAA-T,429,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-H-QuadRotAA-T,430,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-M-Link-Hover,431,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-CBS-Hover,432,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,Sys-CBTurret01,0 -NX-M-Strike-Hover,433,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,Sys-VstrikeTurret01,0 -NX-M-VTOLCBS-Hover,434,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,Sys-VTOLCBTurret01,0 -NX-M-PulseLas-Hover,437,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-Rail3-Hover,438,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Flash-Hover,439,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Missile-MdArt-Hover,440,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-HvMiss-Hover,441,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Rail1-VTOL,443,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-H-Rail2-VTOL,444,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -Cyb-Flamer-GROUND,446,CyborgFlamerGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Cannon-GROUND,447,CyborgCannonGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Rocket-GROUND,448,CyborgRkt1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-RotMG-GROUND,449,CybRotMgGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -BaBaCivilian,451,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,7,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,0 -ViperRepairWheels,452,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,LightRepair1,DROID,DefaultSensor1Mk1,0 -ViperRepairHalftrack,453,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,LightRepair1,DROID,DefaultSensor1Mk1,0 -ViperMG01Wheels,454,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMG02Wheels,455,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMG02Halftrack,456,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperHMGHalftrack,457,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperHMGTracks,458,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperLtA-Twheels,459,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperPODWheels,460,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperMRLWheels,461,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperBBWheels,462,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraSpadeTracks,463,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -CobraSensorHalftrack,464,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -CobraFlameTracks,466,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHvyMortarHalftrack,467,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraComHalftrack,468,Body5REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraLtA-Thalftrack,469,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMRLHalftrack,470,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonComTracks,471,Body11ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonMedCnTrks,472,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0PythonHvyCnTrks,481,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraSpadeTracks,482,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -P0CobraFlameTracks,483,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraMedCnTrks,484,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HvFlame-Track,495,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-RR-HT,496,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-CBS-T,497,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,Sys-CBTurret01,0 -CO-M-ROTMG-T,498,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HVAT-V,499,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraLtATRktHtrack,500,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraHvyMGHtrack,501,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0PythonComTracks,502,Body11ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,2,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CO-M-HVAT-Hover,503,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0CobraRepairTrks,504,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -CO-L-Bomb1-VTOL,505,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,2,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cyb-Atmiss-GROUND,506,Cyb-Bod-Atmiss,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Laser1-GROUND,508,Cyb-Bod-Las1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Rail1-GROUND,509,Cyb-Bod-Rail1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -P6-L-LTAT-V,510,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P6-L-Bomb1-V,511,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P6-M-QMG1-HT,512,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3CobCONTrk,513,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -P0cam3PyHvyATTrk,514,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3PyHPVcanTrk,515,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3PyFlakHT,516,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -P0cam3PyAsltGnTrk,517,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -NX-M-Bomb4-VTOL,518,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-M-HvSam-Hover,519,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-L-Link-Hov,520,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 -NX-M-Bomb2-VTOL,521,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,3,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 -CyborgRotMgGround,522,CybRotMgGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Sk-PythonHvCanTrack,523,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Sk-CobraBBHover,524,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MP-Cyb-Laser1-GRD,525,Cyb-Bod-Las1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -MP-Cyb-ATmiss-GRD,526,Cyb-Bod-Atmiss,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -SK-Cobra-Hover-HMG,527,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Hover-BB,528,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Hover-Lancer,529,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Hover-Mcannon,530,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Hover-Hcannon,531,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Hover-Lancer,532,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Python-Track-Hcannon,533,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Track-HVC,534,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Cobra-Track-TK,535,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Bug-Hover-HMG,536,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-ASGUN,537,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-Mcannon,538,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-Bombard,539,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-Lancer,540,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorp-Hover-BB,541,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-Hover-Hcannon,542,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-Hover-HVC,543,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-Track-Lancer,544,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-HTrk-ASGun,545,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Track-HVC,546,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Hover-HVC,547,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Track-TK,548,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Hover-TK,549,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Htrk-ASGun,550,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Htrk-BB,551,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-Hcannon,552,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-Hcannon,553,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-HVC,554,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-HVC,555,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-TK,556,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-TK,557,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-ASCannon,558,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-ASCannon,559,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-Htrk-Needle,561,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-Hover-Needle,562,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-Track-RailGun,564,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-Scourge,565,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-Scourge,566,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Track-Gauss,567,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Tiger-Hover-Gauss,568,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retal-Track-Needle,569,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-PulseLsr,570,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-FlashLight,571,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Htrk-Pepper,572,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-RailGun,573,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Hover-RailGun,574,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Track-Scourge,575,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-Hover-Scourge,576,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-Gauss,577,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Hover-Gauss,578,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-PulseLsr,579,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Hover-PulseLsr,580,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-Scourge,581,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Hover-Scourge,582,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Bug-Hover-Sensor,583,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -SK-Bug-Hover-Repair,584,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Leopard-Hover-Sensor,585,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -SK-Leopard-Hover-Repair,586,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Panther-Track-Repair,587,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Retal-Hover-Repair,588,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 -SK-Retal-Hover-Sensor,589,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 -SK-Bug-VTOL-CLBomb,590,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Bug-VTOL-BB,591,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorpion-VTOL-BB,592,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Scorpion-VTOL-Hbomb,593,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Mantis-VTOL-BB,594,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-VTOL-BB,595,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Leopard-VTOL-PhosBomb,596,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-Thermite,597,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-BB,598,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-Phosbomb,599,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Panther-VTOL-TK,600,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retal-VTOL-Phosbomb,601,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-Thermite,602,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-PulseLsr,603,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Retre-VTOL-Scourge,604,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MP-Cyb-Needle-GRD,608,Cyb-Bod-Rail1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,5,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Thermite,609,Cyb-Bod-Thermite,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-Gren,610,Cyb-Bod-Grenade,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 -Cyb-ComEng,611,Cyb-Bod-ComEng,ZNULLBRAIN,CyborgSpade,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_CONSTRUCT,DefaultSensor1Mk1,0 -Cyb-Mechanic,612,Cyb-Bod-Mechanic,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,CyborgRepair,CYBORG_REPAIR,DefaultSensor1Mk1,0 -Cyb-Hvy-Mcannon,613,Cyb-Hvybod-Mcannon,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-Acannon,614,Cyb-Hvybod-Acannon,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-PulseLsr,619,Cyb-Hvybod-PulseLsr,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-TK,617,Cyb-Hvybod-TK,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-HPV,618,Cyb-Hvybod-HPV,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-RailGunner,620,Cyb-Hvybod-RailGunner,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -Cyb-Hvy-A-T,621,Cyb-Hvybod-A-T,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,0,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 -SK-Veng-Track-C6TwinAslt,622,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -SK-Veng-Track-HvyLaser,623,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHRepairHover,625,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,HeavyRepair,DROID,DefaultSensor1Mk1,0 -ViperHMGWheels,626,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Scourge-Mantis-H,627,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraHMGTracks,628,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Wheels-MG,629,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Wheels-TMG,630,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Wheels-HMG,631,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Wheels-HMG,632,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Hover-HMG,633,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Hover-MC,634,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Scorp-Hover-MC,635,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Hover-MC,636,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Hover-HC,637,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Trk-HC,638,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Tiger-Trk-HC,639,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Tiger-Trk-Needle,640,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Retrib-Trk-Needle,641,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Needle,642,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Rail,643,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Guass,644,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-Scourge,645,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Mantis-Trk-Pulse,646,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Mantis-Trk-Rail,647,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-ClusterBomb,648,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-BB,649,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-Lancer,650,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Bug-HPV,651,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-ClusterBomb,652,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-BB,653,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-Lancer,654,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Scor-HPV,655,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Python-Trk-Lancer,656,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Mantis-Trk-Lancer,657,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Veng-Trk-TK,658,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Mantis-Lancer,659,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -V-Mantis-HPV,660,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Rep-Cobra-Trk,661,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -A-Rep-Mantis-Trk,662,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,HeavyRepair,DROID,DefaultSensor1Mk1,0 -A-Viper-Trk-MG,663,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Trk-TMG,664,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Viper-Trk-HMG,665,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Cobra-Trk-HMG,666,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -A-Scorp-Trk-MC,667,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TK-Mantis-H,684,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cobra-Hover-HC,685,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-Trk-Lancer,687,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-Trk-HC,688,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-VTOL-Lancer,689,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -H-Scorp-VTOL-BB,689,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Viper-Trk-Com,690,Body1REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Cobra-Trk-Com,691,Body5REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Scorp-Trk-Com,692,Body8MBT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraTrkLancer,693,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisTrkHC,694,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisTKTracks,695,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpTrkHMG,696,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpRepairTrk,697,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 -ScorpHRepairHover,698,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,HeavyRepair,DROID,DefaultSensor1Mk1,0 -CobraHoverTruck,699,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -ScorpHoverTruck,700,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -MantisHoverTruck,701,Body12SUP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 -CobraBBTracks,702,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ScorpBBTracks,703,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisBBTracks,704,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -Mantis-Trk-Com,705,Body12SUP,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -MantisScourgeTracks,706,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperTrkLancer,707,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraPODHTracks,708,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraPODTracks,709,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraMRLTracks,710,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -CobraInfernoHTracks,711,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonHoverHVC,712,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonScourgeTracks,713,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonGaussTracks,714,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonPulseTracks,715,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TigerPulseTracks,717,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -TigerHvLaserTracks,718,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernGaussTracks,719,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernPulseTracks,720,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -WyvernHvLaserTracks,721,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperLtMGHalfTracks,722,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -ViperFlameHalfTracks,723,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonMedCanTracks,724,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 -PythonTKTracks,725,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,6,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ConstructionDroid,140,Body1REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,YES,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +BarbarianTrike,139,B4body-sml-trike01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +BarbarianBuggy,150,B3body-sml-buggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +BaBaPeople,158,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,1 +ViperLtCannonWheels,177,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperLtCannonHTracks,178,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +BabaJeep,194,B2JeepBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ConstructorDroid,249,Body1REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +ViperLtCannonTracks,257,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperMedCnTrks,263,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraLtCnTrks,266,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraMedCnTrks,267,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraHvyCnTrks,268,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonLtCnTrks,269,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonHvyCnTrks,271,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperFlameWheels,274,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperSensorWheels,275,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +BabaRKJeep,276,B2RKJeepBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +BarbarianRKBuggy,277,B3bodyRKbuggy01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Transporter,278,TransporterBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,V-Tol,ZNULLREPAIR,TRANSPORTER,DefaultSensor1Mk1,1 +BabaBusCan,289,BusBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +BabaFireCan,290,FireBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-L-RocketPod-Wheels,311,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-L-MRLS-Halftrack,312,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-L-HMG-Halftrack,313,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-L-LtAT-Halftrack,314,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-L-Sensor-Wheels,315,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +NP-M-Command-Halftrack,316,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-Sensor-Wheels,317,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +NP-M-MdCannon-Halftrack,318,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-MdCannon-Tracks,319,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-LtMortar-Halftrack,320,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-HvyMortar-Halftrack,321,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-BB-Halftrack,322,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-H-MdCannon-Tracks,323,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-H-HvyCannon-Tracks,324,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Cyb-Chain-GROUND,325,CyborgChain1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +CO-H-How105-Tracks,328,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-How150-Tracks,329,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-HvyCan-Tracks,330,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-MedCan-Tracks,336,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Sensor-T,337,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +CyborgFlamer01Grd,341,CyborgFlamerGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +CyborgRkt01Ground,342,CyborgRkt1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +CyborgCannon01Grd,343,CyborgCannonGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +CyborgChain01Ground,344,CyborgChain1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +CobraMortarHalfTrack,346,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraHMGHalfTrack,347,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Con-T,350,Body6SUPP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +BabaFireTruck,354,FireBody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaProp,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +BabaPickUp,355,B2RKJeepBody,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,ZNULLPROP,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +NX-M-Rail2-Hover,363,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-PulseLas-VTOL,365,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-Missile-A-T-VTOL,366,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-Sens-Hov,369,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +NX-M-Missile-A-T-Hover,371,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-M-Com-Hover,376,Body7ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-Cyb-Rail1-JUMP,377,CybNXRail1Jmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 +NX-Cyb-PulseLas-JUMP,378,CybNXPulseLasJmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 +NX-Cyb-Miss-JUMP,379,CybNXMissJmp,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,NavGunSensor,1 +SuperTank,380,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-LitCannon-Halftrack,381,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NX-M-Con-Hover,382,Body7ABT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,0 +SuperTank2,383,Superbody,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NX-L-Repair-Hover,384,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,LightRepair1,DROID,NavGunSensor,0 +ATESTVEHICLE,387,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ZNULLDESIGN,389,ZNULLBODY,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,ZNULLPROP,ZNULLREPAIR,ZNULLDROID,ZNULLSENSOR,0 +NP-M-LtAT-Hover,391,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-H-HvyCannon-Hover,392,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-MG3-Hover,393,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ATESTVTOL,394,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ASPOTTER,395,Cyb-Hvybod-HPV,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +NP-M-CON-HalfTrack,397,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +NP-M-CON-Track,398,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +NP-M-Repair-HalfTrack,399,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 +NP-M-Command-Track,400,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NP-M-CBS-Halftrack,402,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,Sys-CBTurret01,0 +NP-L-LtCannon-Halftrack,403,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Repair-T,405,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 +CO-M-Vstrike-T,407,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,Sys-VstrikeTurret01,0 +CO-M-VTOLCBS-T,408,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,Sys-VTOLCBTurret01,0 +CO-H-Command-Track,410,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-HMG-T,411,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-LTAT-Hover,412,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-HPVCannon-Tracks,413,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Rocket-LtA-T-T,415,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Rocket-HvyA-T-Track,417,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-RotCan-Track,418,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-HPVCannon-Tracks,419,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-Rkt-BB-T,420,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-HvMortar-T,421,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-RotMortar-T,422,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-RotHow-Track,423,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-L-Rocket-LtA-T-VTOL,424,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-COM-H,425,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-L-RotMG-VTOL,426,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Bomb1-VTOL,427,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-Bomb2-VTOL,428,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-QuadBofAA-T,429,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-H-QuadRotAA-T,430,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NX-M-Link-Hover,431,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-H-CBS-Hover,432,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,Sys-CBTurret01,0 +NX-M-Strike-Hover,433,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,Sys-VstrikeTurret01,0 +NX-M-VTOLCBS-Hover,434,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,Sys-VTOLCBTurret01,0 +NX-M-PulseLas-Hover,437,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-H-Rail3-Hover,438,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-Flash-Hover,439,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-Missile-MdArt-Hover,440,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-H-HvMiss-Hover,441,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-Rail1-VTOL,443,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-H-Rail2-VTOL,444,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 +Cyb-Flamer-GROUND,446,CyborgFlamerGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-Cannon-GROUND,447,CyborgCannonGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-Rocket-GROUND,448,CyborgRkt1Ground,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-RotMG-GROUND,449,CybRotMgGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +BaBaCivilian,451,B1BaBaPerson01,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,BaBaLegs,ZNULLREPAIR,PERSON,DefaultSensor1Mk1,0 +ViperRepairWheels,452,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,LightRepair1,DROID,DefaultSensor1Mk1,0 +ViperRepairHalftrack,453,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,LightRepair1,DROID,DefaultSensor1Mk1,0 +ViperMG01Wheels,454,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperMG02Wheels,455,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperMG02Halftrack,456,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperHMGHalftrack,457,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperHMGTracks,458,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperLtA-Twheels,459,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperPODWheels,460,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperMRLWheels,461,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperBBWheels,462,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraSpadeTracks,463,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +CobraSensorHalftrack,464,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +CobraFlameTracks,466,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraHvyMortarHalftrack,467,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraComHalftrack,468,Body5REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraLtA-Thalftrack,469,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraMRLHalftrack,470,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonComTracks,471,Body11ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonMedCnTrks,472,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0PythonHvyCnTrks,481,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0CobraSpadeTracks,482,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +P0CobraFlameTracks,483,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0CobraMedCnTrks,484,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-HvFlame-Track,495,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-RR-HT,496,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-CBS-T,497,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,Sys-CBTurret01,0 +CO-M-ROTMG-T,498,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-HVAT-V,499,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0CobraLtATRktHtrack,500,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0CobraHvyMGHtrack,501,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0PythonComTracks,502,Body11ABT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CO-M-HVAT-Hover,503,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0CobraRepairTrks,504,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 +CO-L-Bomb1-VTOL,505,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Cyb-Atmiss-GROUND,506,Cyb-Bod-Atmiss,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-Laser1-GROUND,508,Cyb-Bod-Las1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-Rail1-GROUND,509,Cyb-Bod-Rail1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +P6-L-LTAT-V,510,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P6-L-Bomb1-V,511,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P6-M-QMG1-HT,512,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0cam3CobCONTrk,513,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +P0cam3PyHvyATTrk,514,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0cam3PyHPVcanTrk,515,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0cam3PyFlakHT,516,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +P0cam3PyAsltGnTrk,517,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +NX-M-Bomb4-VTOL,518,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-M-HvSam-Hover,519,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-L-Link-Hov,520,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,NavGunSensor,1 +NX-M-Bomb2-VTOL,521,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,NavGunSensor,1 +CyborgRotMgGround,522,CybRotMgGrd,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Sk-PythonHvCanTrack,523,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Sk-CobraBBHover,524,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MP-Cyb-Laser1-GRD,525,Cyb-Bod-Las1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +MP-Cyb-ATmiss-GRD,526,Cyb-Bod-Atmiss,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +SK-Cobra-Hover-HMG,527,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Cobra-Hover-BB,528,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Cobra-Hover-Lancer,529,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Python-Hover-Mcannon,530,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Python-Hover-Hcannon,531,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Python-Hover-Lancer,532,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Python-Track-Hcannon,533,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Cobra-Track-HVC,534,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Cobra-Track-TK,535,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Bug-Hover-HMG,536,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorp-Hover-ASGUN,537,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorp-Hover-Mcannon,538,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorp-Hover-Bombard,539,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorp-Hover-Lancer,540,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorp-Hover-BB,541,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Mantis-Hover-Hcannon,542,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Mantis-Hover-HVC,543,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Leopard-Track-Lancer,544,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Leopard-HTrk-ASGun,545,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Track-HVC,546,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Hover-HVC,547,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Track-TK,548,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Hover-TK,549,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Htrk-ASGun,550,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Htrk-BB,551,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Track-Hcannon,552,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Hover-Hcannon,553,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Track-HVC,554,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Hover-HVC,555,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Track-TK,556,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Hover-TK,557,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Track-ASCannon,558,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Hover-ASCannon,559,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Leopard-Htrk-Needle,561,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Leopard-Hover-Needle,562,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-Track-RailGun,564,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Track-Scourge,565,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Hover-Scourge,566,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Track-Gauss,567,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Tiger-Hover-Gauss,568,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retal-Track-Needle,569,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Track-PulseLsr,570,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Track-FlashLight,571,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Htrk-Pepper,572,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Track-RailGun,573,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Hover-RailGun,574,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Track-Scourge,575,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-Hover-Scourge,576,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Track-Gauss,577,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Hover-Gauss,578,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Track-PulseLsr,579,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Hover-PulseLsr,580,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Track-Scourge,581,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Hover-Scourge,582,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Bug-Hover-Sensor,583,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +SK-Bug-Hover-Repair,584,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 +SK-Leopard-Hover-Sensor,585,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +SK-Leopard-Hover-Repair,586,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 +SK-Panther-Track-Repair,587,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 +SK-Retal-Hover-Repair,588,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,LightRepair1,DROID,DefaultSensor1Mk1,0 +SK-Retal-Hover-Sensor,589,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,SensorTurret1Mk1,0 +SK-Bug-VTOL-CLBomb,590,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Bug-VTOL-BB,591,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorpion-VTOL-BB,592,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Scorpion-VTOL-Hbomb,593,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Mantis-VTOL-BB,594,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Leopard-VTOL-BB,595,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Leopard-VTOL-PhosBomb,596,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-VTOL-Thermite,597,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-VTOL-BB,598,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-VTOL-Phosbomb,599,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Panther-VTOL-TK,600,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retal-VTOL-Phosbomb,601,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-VTOL-Thermite,602,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-VTOL-PulseLsr,603,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-VTOL-Scourge,604,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MP-Cyb-Needle-GRD,608,Cyb-Bod-Rail1,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-Thermite,609,Cyb-Bod-Thermite,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-Gren,610,Cyb-Bod-Grenade,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG,DefaultSensor1Mk1,1 +Cyb-ComEng,611,Cyb-Bod-ComEng,ZNULLBRAIN,CyborgSpade,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_CONSTRUCT,DefaultSensor1Mk1,0 +Cyb-Mechanic,612,Cyb-Bod-Mechanic,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,CyborgRepair,CYBORG_REPAIR,DefaultSensor1Mk1,0 +Cyb-Hvy-Mcannon,613,Cyb-Hvybod-Mcannon,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +Cyb-Hvy-Acannon,614,Cyb-Hvybod-Acannon,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +Cyb-Hvy-PulseLsr,619,Cyb-Hvybod-PulseLsr,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +Cyb-Hvy-TK,617,Cyb-Hvybod-TK,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +Cyb-Hvy-HPV,618,Cyb-Hvybod-HPV,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +Cyb-Hvy-RailGunner,620,Cyb-Hvybod-RailGunner,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +Cyb-Hvy-A-T,621,Cyb-Hvybod-A-T,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,YES,CyborgLegs,ZNULLREPAIR,CYBORG_SUPER,DefaultSensor1Mk1,1 +SK-Veng-Track-C6TwinAslt,622,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Veng-Track-HvyLaser,623,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraHRepairHover,625,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,HeavyRepair,DROID,DefaultSensor1Mk1,0 +ViperHMGWheels,626,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Scourge-Mantis-H,627,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraHMGTracks,628,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Viper-Wheels-MG,629,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Viper-Wheels-TMG,630,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Viper-Wheels-HMG,631,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Cobra-Wheels-HMG,632,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,wheeled01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Cobra-Hover-HMG,633,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Cobra-Hover-MC,634,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Scorp-Hover-MC,635,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Python-Hover-MC,636,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Python-Hover-HC,637,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Python-Trk-HC,638,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Tiger-Trk-HC,639,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Tiger-Trk-Needle,640,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Retrib-Trk-Needle,641,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Veng-Trk-Needle,642,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Veng-Trk-Rail,643,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Veng-Trk-Guass,644,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Veng-Trk-Scourge,645,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Mantis-Trk-Pulse,646,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Mantis-Trk-Rail,647,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Bug-ClusterBomb,648,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Bug-BB,649,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Bug-Lancer,650,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Bug-HPV,651,Body4ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Scor-ClusterBomb,652,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Scor-BB,653,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Scor-Lancer,654,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Scor-HPV,655,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Python-Trk-Lancer,656,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Mantis-Trk-Lancer,657,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Veng-Trk-TK,658,Body10MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Mantis-Lancer,659,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +V-Mantis-HPV,660,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Rep-Cobra-Trk,661,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 +A-Rep-Mantis-Trk,662,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,HeavyRepair,DROID,DefaultSensor1Mk1,0 +A-Viper-Trk-MG,663,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Viper-Trk-TMG,664,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Viper-Trk-HMG,665,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Cobra-Trk-HMG,666,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +A-Scorp-Trk-MC,667,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +TK-Mantis-H,684,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Cobra-Hover-HC,685,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +H-Scorp-Trk-Lancer,687,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +H-Scorp-Trk-HC,688,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +H-Scorp-VTOL-Lancer,689,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +H-Scorp-VTOL-BB,689,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Viper-Trk-Com,690,Body1REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Cobra-Trk-Com,691,Body5REC,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Scorp-Trk-Com,692,Body8MBT,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraTrkLancer,693,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MantisTrkHC,694,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MantisTKTracks,695,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ScorpTrkHMG,696,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ScorpRepairTrk,697,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,LightRepair1,DROID,DefaultSensor1Mk1,0 +ScorpHRepairHover,698,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,HeavyRepair,DROID,DefaultSensor1Mk1,0 +CobraHoverTruck,699,Body5REC,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +ScorpHoverTruck,700,Body8MBT,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +MantisHoverTruck,701,Body12SUP,ZNULLBRAIN,Spade1Mk1,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,0 +CobraBBTracks,702,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ScorpBBTracks,703,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MantisBBTracks,704,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +Mantis-Trk-Com,705,Body12SUP,CommandBrain01,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MantisScourgeTracks,706,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperTrkLancer,707,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraPODHTracks,708,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraPODTracks,709,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraMRLTracks,710,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraInfernoHTracks,711,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonHoverHVC,712,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonScourgeTracks,713,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonGaussTracks,714,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonPulseTracks,715,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +TigerPulseTracks,717,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +TigerHvLaserTracks,718,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +WyvernGaussTracks,719,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +WyvernPulseTracks,720,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +WyvernHvLaserTracks,721,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperLtMGHalfTracks,722,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperFlameHalfTracks,723,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonMedCanTracks,724,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonTKTracks,725,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraInfernoHover,726,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +CobraMedCnHTrks,727,Body5REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PythonHoverInferno,728,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PhytonHoverAssGun,729,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PhytonHTrackAssGun,730,Body11ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ScorpHTrackHMG,731,Body8MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +MantisHoverAC,732,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +LeopardHoverPulseLas,733,Body2SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +PantherHoverPulseLas,734,Body6SUPP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +TigerHoverPulseLas,735,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +TigerHoverRailGun,736,Body9REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,hover01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +WyvernPlasmaCTracks,737,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +WyvernScourgeTracks,738,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +RetreHoverFlashLight,739,Body13SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,tracked01,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperPODHalfTracks,740,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +ViperMRLHalfTracks,741,Body1REC,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,HalfTrack,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Mantis-VTOL-PBB,742,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Mantis-VTOL-HBB,743,Body12SUP,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-VTOL-HBB,744,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retal-VTOL-Scourge,745,Body3MBT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 +SK-Retre-VTOL-Plasmite,746,Body7ABT,ZNULLBRAIN,ZNULLCONSTRUCT,ZNULLECM,NO,V-Tol,ZNULLREPAIR,DROID,DefaultSensor1Mk1,1 diff --git a/data/mp/stats/weapons.txt b/data/mp/stats/weapons.txt index 079d803bc..f13e93745 100644 --- a/data/mp/stats/weapons.txt +++ b/data/mp/stats/weapons.txt @@ -10,13 +10,13 @@ MassDriver,Level All,2000,2000,150000,1,120,900,GNWPFGSS.PIE,TRWPFGSS.PIE,FXSHgs CannonSuper,Level All,1000,2000,120000,0,0,500,GNWPFCAN.PIE,TRWPFCAN.PIE,FXSHcanM.PIE,FXSHcanA.PIE,fxgrdexS.PIE,fxgrdexS.PIE,FXSSplsh.PIE,0,128,1792,80,90,60,2,0,0,380,256,100,260,0,0,0,10,0,1500,20,NO,KINETIC,CANNON,DIRECT,ALL ROUNDER,0,90,-60,YES,YES,150,0,YES,100,0,0,0,0 Rocket-VTOL-Pod,Level All,75,375,200,1,10,20,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,640,1024,50,30,5,2,0,0,44,0,0,0,0,0,0,10,10,2250,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,20,-60,YES,YES,10,128,YES,25,100,5,1,0 Rocket-VTOL-LtA-T,Level All,100,500,250,1,10,30,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,120,240,0,0,0,0,0,0,0,10,1800,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,50,100,1,1,0 -Rocket-VTOL-HvyA-T,Level All,250,1250,750,1,10,30,Gnmrcktb.PIE,Trmrcktb.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,160,375,0,0,0,0,0,0,0,10,1500,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,0,-60,YES,NO,0,128,YES,75,100,1,1,0 +Rocket-VTOL-HvyA-T,Level All,250,1250,750,1,10,30,Gnmrcktb.PIE,Trmrcktb.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,512,1152,50,60,1,2,2,160,375,0,0,0,0,0,0,0,10,1500,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,75,100,1,1,0 Rocket-VTOL-BB,Level All,150,750,750,1,10,30,Gnmrktbb.PIE,TRMRKTBB.PIE,FXLRocPd.PIE,FXSPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,50,70,200,2,0,0,240,0,0,0,0,0,0,10,10,1800,20,YES,KINETIC,SLOW ROCKET,DIRECT,BUNKER BUSTER,180,20,-60,YES,NO,0,128,YES,25,0,1,1,0 Rocket-Pod,Level All,75,375,200,1,10,30,GNLRCKTP.PIE,TRLRCKTP.PIE,FXLRocPd.PIE,FXMflare.PIE,FXMPExp.PIE,FXMPExp.PIE,FXSSplsh.PIE,0,384,1024,40,45,10,2,0,0,22,0,0,0,0,0,0,10,10,2250,20,YES,KINETIC,ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,YES,10,128,YES,25,100,0,1,0 Rocket-MRL,Level All,100,500,250,1,10,40,GNMRCKT.PIE,TRMRCKT.PIE,FXMRoc.PIE,FXMflare.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,384,1088,45,52,1,2,8,145,34,64,100,30,0,0,0,0,10,2000,20,YES,KINETIC,ROCKET,INDIRECT,ARTILLERY ROUND,180,90,-60,YES,YES,0,128,YES,25,0,0,1,0 -Rocket-LtA-T,Level All,150,500,250,1,10,20,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,30,60,1,2,2,160,150,0,0,0,0,0,0,0,10,1700,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,50,0,0,1,0 +Rocket-LtA-T,Level All,150,500,250,1,10,20,GNMRCKTA.PIE,TRMRCKTA.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1152,30,60,1,2,2,160,160,0,0,0,0,0,0,0,10,1700,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,50,0,0,1,0 Rocket-IDF,Level All,300,1500,10000,1,10,15,GNHRCKT.PIE,TRHRCKT.PIE,FXLRocPd.PIE,FXHPLME.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,1024,11008,40,80,1,2,8,600,60,64,100,50,0,0,0,0,0,1500,10,NO,KINETIC,SLOW ROCKET,INDIRECT,ARTILLERY ROUND,0,90,-60,YES,NO,0,640,YES,50,0,0,1,0 -Rocket-HvyA-T,Level All,200,1250,300,1,10,40,Gnmrcktb.pie,Trmrcktb.pie,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1280,30,60,1,2,2,200,240,0,0,0,0,0,0,0,10,1700,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,75,0,0,1,0 +Rocket-HvyA-T,Level All,200,1250,300,1,10,40,Gnmrcktb.pie,Trmrcktb.pie,FXMRocAt.PIE,FXMPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1280,30,60,1,2,2,200,250,0,0,0,0,0,0,0,10,1700,20,YES,KINETIC,SLOW ROCKET,DIRECT,ANTI TANK,180,90,-60,YES,NO,0,128,YES,75,0,0,1,0 Rocket-BB,Level All,150,750,250,1,10,30,Gnmrktbb.PIE,TRMRKTBB.PIE,FXLRocPd.PIE,FXSPLME.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,1280,60,70,200,2,0,0,240,0,0,0,0,0,0,10,10,1700,20,YES,KINETIC,SLOW ROCKET,DIRECT,BUNKER BUSTER,180,90,-60,YES,NO,0,128,YES,25,0,0,1,0 RailGun3Mk1,Level Three,400,1600,5000,1,120,700,GNHGSS.PIE,TRHGSS.PIE,FXHGauss.PIE,FXGammoH.PIE,Fxflech2.PIE,Fxflech2.PIE,FXVLSWav.PIE,0,1024,1792,80,70,60,1,0,0,300,192,100,150,0,0,0,10,10,1800,20,YES,KINETIC,GAUSS,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,150,0,0,1,1 RailGun2Mk1,Level Three,300,1200,2000,1,80,500,GNMGSS.PIE,TRMGSS.PIE,FXMGauss.PIE,FXGammoM.PIE,Fxflech2.PIE,Fxflech2.PIE,FXMSWave.PIE,0,768,1536,80,70,50,1,0,0,220,160,100,110,0,0,0,0,0,1800,20,YES,KINETIC,GAUSS,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,0,0,YES,100,0,0,1,1 @@ -34,14 +34,14 @@ NX-Cyb-Rail1,Level All,170,800,120,1,20,100,CY_RAIL.PIE,Cybodyjp.pie,FXLGauss.PI NEXUSlink,Level Three,75,375,0,0,0,300,GNHECM3.PIE,TRHECM3.PIE,FXHBLas.PIE,FXMflare.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,512,896,99,100,20,0,0,0,10,0,0,0,0,0,0,0,0,2500,0,NO,HEAT,ELECTRONIC,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 MortarEMP,Level Three,200,2000,5000,1,25,5,gnhmorte.PIE,TRHRMORT.PIE,FXMMort.PIE,FXSFlms.PIE,FXSFlms.PIE,FXLExp.PIE,FXSFlms.PIE,0,1152,2304,40,50,90,2,0,0,60,160,100,60,0,0,0,0,10,1500,20,NO,KINETIC,EMP,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 Mortar3ROTARYMk1,Level Two-Three,300,900,1000,1,50,5,GNHMORT.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,20,2,0,0,50,160,100,30,0,0,0,0,10,1500,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 -Mortar2Mk1,Level All,200,1000,5000,1,25,5,GNHMORT2.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXMNExp.PIE,FXLExp.PIE,FXMNExp.PIE,0,1152,2304,40,50,90,2,0,0,110,192,100,70,0,0,0,0,10,1500,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 +Mortar2Mk1,Level All,200,1000,5000,1,25,5,GNHMORT2.PIE,TRHRMORT.PIE,FXMMort.PIE,FXCAmmo.PIE,FXMNExp.PIE,FXLExp.PIE,FXMNExp.PIE,0,1152,2304,40,50,90,2,0,0,120,192,100,80,0,0,0,0,10,1500,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,100,0,0,1,0 Mortar1Mk1,Level One-Two,100,500,2000,1,20,5,GNMMORT.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,60,2,0,0,60,160,100,40,0,0,0,0,10,1500,20,NO,KINETIC,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 Mortar-Incenediary,Level Three,150,750,2000,1,20,5,GNMMORTI.PIE,TRMMORT.PIE,FxCan75m.PIE,FXTracer.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1152,2304,40,50,60,2,0,0,90,160,100,70,60,30,192,0,10,1500,20,NO,HEAT,MORTARS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,150,128,YES,75,0,0,1,0 Missile-VTOL-AT,Level Two-Three,300,1200,750,1,10,10,Gnmmslat.PIE,Trmmslat.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,2048,70,80,0,2,2,75,480,160,100,20,0,0,0,0,10,1350,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,20,-30,YES,NO,20,0,YES,50,100,1,1,0 Missile-MdArt,Level All,400,1200,1000,1,10,50,Gnmmslaa.PIE,Trmmslaa.PIE,FXMMort.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,896,1920,55,65,2,2,8,135,120,96,100,100,0,0,0,0,10,1400,20,YES,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,180,90,-30,YES,NO,10,256,YES,100,0,0,1,0 Missile-LtSAM,Level Two-Three,200,800,400,1,10,50,Gnmmslsa.PIE,Trmmslsa.PIE,FXATMiss.PIE,FXMflare.PIE,FXMExp.PIE,FXSExp.PIE,FXSSplsh.PIE,0,2048,2562,70,80,5,2,2,100,350,0,0,0,0,0,0,0,10,1350,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-45,YES,YES,25,128,YES,100,1,0,1,0 Missile-HvySAM,Level Two-Three,300,1200,6000,1,10,10,Gnhmslsa.PIE,Trhmslsa.PIE,FXICBM.PIE,FXMflare.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2048,2562,70,80,5,2,4,100,350,0,0,0,0,0,0,0,10,1350,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-45,YES,YES,25,512,YES,100,1,0,1,0 -Missile-HvyArt,Level Two-Three,500,1500,10000,1,10,50,gnhmslab.PIE,trhmslab.PIE,FXICBM.PIE,FXHPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2048,15360,50,80,5,1,6,300,160,96,100,160,0,0,0,0,10,1250,20,PARTIAL,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,0,45,-30,YES,NO,25,512,YES,100,0,0,1,0 +Missile-HvyArt,Level Two-Three,500,1500,10000,1,10,50,gnhmslab.PIE,trhmslab.PIE,FXICBM.PIE,FXHPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXMExp.PIE,0,2048,15360,50,80,5,1,6,300,160,96,100,160,0,0,0,0,10,1250,20,NO,KINETIC,MISSILE,INDIRECT,ARTILLERY ROUND,0,45,-30,YES,NO,25,512,YES,100,0,0,1,0 Missile-A-T,Level Three,300,1200,400,1,10,20,Gnmmslat.PIE,Trmmslat.PIE,FXMRocAt.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,1792,50,80,2,2,2,100,360,0,0,0,0,0,0,0,0,1350,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,256,YES,50,0,0,1,0 MG5TWINROTARY,Level Three,100,500,600,1,20,300,Gnhmg1.PIE,Trhmg.PIE,FXMgnVul.PIE,FXTracr2.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,3,2,0,0,30,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,100,0,1,0 MG4ROTARYMk1,Level Two-Three,100,500,600,1,20,300,GNMMG2.PIE,TRMMG.PIE,FXMgnVul.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,768,1152,75,50,3,1,0,0,20,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,30,0,NO,100,100,0,1,0 @@ -56,8 +56,8 @@ MG2-Pillbox,Level All,25,125,400,1,10,125,0,0,FXLMgun2.PIE,FXTracr2.PIE,FXMETHIT MG1Mk1,Level All,10,50,200,1,5,75,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,20,0,NO,100,100,0,1,0 MG1-VTOL,Level All,10,50,200,1,5,8,GNLMG1.PIE,TRLMG1.PIE,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,15,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,0,-60,YES,NO,20,0,NO,100,100,14,1,0 MG1-Pillbox,Level All,10,50,200,0,5,75,0,0,FXLMgun.PIE,FXTracer.PIE,FXMETHIT.PIE,FXDIRTsp.PIE,FXSSplsh.PIE,0,512,768,75,50,5,1,0,0,10,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,MACHINE GUN,DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,100,0,NO,100,0,0,0,0 -LasSat,Level Three,100,500,600,1,10,500,gnlassat.pie,trlassat.pie,FXHBLas.PIE,FXBeam.PIE,FXMelt.PIE,FXSFlms.PIE,FXSFlms.PIE,0,640,23040,100,100,3000,1,0,0,5400,512,100,3200,60,720,512,10,0,1500,20,YES,HEAT,LAS_SAT,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 -Laser4-PlasmaCannon,Level Three,750,1000,30000,1,10,50,GNHPLSMA.PIE,TRHLAS.PIE,FXHBLas.PIE,FXSHgssA.PIE,FXFlech4.PIE,FXFlech4.PIE,FXVLSWav.PIE,0,960,960,65,65,120,1,0,0,400,256,100,400,0,0,0,10,0,1500,20,PARTIAL,HEAT,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,150,0,YES,200,0,0,1,0 +LasSat,Level Three,100,500,600,1,10,500,gnlassat.pie,trlassat.pie,FXHBLas.PIE,FXBeam.PIE,FXMelt.PIE,FXSFlms.PIE,FXSFlms.PIE,0,640,23040,100,100,3000,1,0,0,5400,512,100,3200,60,720,512,10,0,1500,20,NO,HEAT,LAS_SAT,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 +Laser4-PlasmaCannon,Level Three,750,1000,30000,1,10,50,GNHPLSMA.PIE,TRHLAS.PIE,FXHBLas.PIE,FXSHgssA.PIE,FXFlech4.PIE,FXFlech4.PIE,FXVLSWav.PIE,0,960,1280,65,65,150,1,0,0,500,320,100,500,0,0,0,10,0,1500,20,NO,HEAT,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,150,0,YES,200,0,0,1,0 Laser3BEAMMk1,Level Three,150,600,300,1,10,100,GNMRLAS.PIE,TRMLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,1536,1536,80,80,20,1,0,0,80,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,10,0,YES,100,100,0,1,0 Laser3BEAM-VTOL,Level Three,150,600,300,1,10,50,GNMRLAS.PIE,TRMLAS.PIE,FXHBLas.PIE,FXLFLSH.PIE,FXFLSHL.PIE,FXFLSHL.PIE,FXFLSHL.PIE,0,1536,1536,80,80,20,1,8,15,160,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,0,-60,YES,NO,10,0,YES,100,100,2,1,0 Laser2PULSEMk1,Level Three,200,800,500,1,10,180,GNMLAS.PIE,TRMLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,1792,1792,80,80,40,1,0,0,165,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,100,0,1,0 @@ -66,8 +66,8 @@ Howitzer150Mk1,Level Two-Three,350,1250,10000,5,10,10,GNHHOWT.PIE,TRHHOWT.PIE,FX Howitzer105Mk1,Level Two-Three,250,1000,10000,1,10,10,GNMHOWT.PIE,TRMHOWT.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,4992,40,50,150,2,0,0,150,192,100,150,0,0,0,10,10,1500,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,250,0,0,1,0 Howitzer03-Rot,Level Two-Three,400,1600,10000,1,10,10,GNHHOWT2.PIE,TRHHOW2.PIE,FXHHowt2.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXLSplsh.PIE,0,1920,7040,40,50,50,2,0,0,120,192,100,120,0,0,0,0,10,1500,20,NO,KINETIC,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,200,0,0,1,0 Howitzer-Incenediary,Level Two-Three,250,1000,10000,1,10,10,GNMHOWTI.PIE,TRMHOWT.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXLExp.PIE,FXLExp.PIE,FXMSplsh.PIE,0,1920,4992,40,50,120,2,0,0,200,192,100,200,60,60,256,10,10,1500,20,NO,HEAT,HOWITZERS,INDIRECT,ARTILLERY ROUND,0,90,0,YES,NO,250,128,YES,250,0,0,1,0 -HeavyLaser-VTOL,Level Three,600,1000,5000,1,10,100,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,2048,2048,80,80,50,1,2,20,520,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,2,1,0 -HeavyLaser,Level Three,600,1000,20000,1,10,200,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,2048,2048,80,80,50,1,0,0,260,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,0,1,0 +HeavyLaser-VTOL,Level Three,600,1000,5000,1,10,100,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,2048,2048,80,80,60,1,2,20,640,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,2,1,0 +HeavyLaser,Level Three,600,1000,20000,1,10,200,GNHLAS.PIE,TRHLAS.PIE,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,2048,2048,80,80,60,1,0,0,320,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,150,0,YES,100,0,0,1,0 Flame2,Level All,80,400,500,1,10,75,GNMFLMR.PIE,TRMFLMR.PIE,FXCan20m.PIE,FXLProj.PIE,FXMNExp.PIE,FXMNExp.PIE,FXSSplsh.PIE,0,384,512,75,50,20,1,0,0,40,0,0,0,50,40,96,10,0,700,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,1 Flame1Mk1,Level All,40,200,250,1,10,40,GNLFLMR.PIE,TRLFLMR.PIE,FXCan20m.PIE,FXLThrow.PIE,FXMETHIT.PIE,FXMETHIT.PIE,FXMETHIT.PIE,0,256,384,90,40,20,1,0,0,28,0,0,0,50,28,32,10,0,700,20,YES,HEAT,FLAME,DIRECT,FLAMER,180,90,-60,YES,NO,0,64,YES,1,0,0,1,1 EMP-Cannon,Level All,200,800,10000,1,20,500,gnhemp.PIE,trhemp.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,768,1536,70,50,80,1,0,0,70,256,100,0,0,0,0,10,0,1500,20,YES,KINETIC,EMP,DIRECT,ANTI AIRCRAFT,180,90,-60,YES,NO,150,0,YES,1,0,0,1,0 @@ -85,20 +85,20 @@ Cyb-Hvywpn-TK,Level Two,250,700,120,1,1,90,sc_tk.pie,scbody.pie,FXLRocPd.PIE,FXM Cyb-Hvywpn-RailGunner,Level Three,240,750,120,1,1,120,sc_rail2.pie,scbody.pie,FXMGauss.PIE,FXGammoM.PIE,FXflech2.PIE,FXflech2.PIE,FXMSWave.PIE,0,768,1024,80,70,50,1,0,0,240,128,100,80,0,0,0,0,0,1650,20,YES,KINETIC,GAUSS,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,0,0,YES,100,0,0,0,0 Cyb-Hvywpn-PulseLsr,Level Three,150,450,120,1,1,100,sc_pulse.pie,scbody.pie,FXLasRot.PIE,FXPLAmmo.PIE,FXLENFL.PIE,FXLENFL.PIE,FXMExp.PIE,0,1792,1792,80,80,40,1,0,0,155,0,0,0,0,0,0,10,0,3200,20,YES,HEAT,ENERGY,HOMING-DIRECT,ANTI PERSONNEL,180,90,-60,YES,NO,15,0,YES,100,100,0,0,0 Cyb-Hvywpn-Mcannon,Level Two,75,300,120,1,1,110,sc_can.pie,scbody.pie,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,512,758,70,55,42,2,0,0,75,96,100,40,0,0,0,10,0,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,25,0,0,0,0 -Cyb-Hvywpn-HPV,Level Two-Three,150,450,120,1,1,100,sc_hpvcn.pie,scbody.pie,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,758,1152,65,65,40,2,0,0,70,32,100,25,0,0,0,10,0,2250,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,25,100,0,0,1 +Cyb-Hvywpn-HPV,Level Two-Three,150,450,120,1,1,100,sc_hpvcn.pie,scbody.pie,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,758,1152,65,65,40,2,0,0,70,32,100,25,0,0,0,10,0,2250,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,25,100,0,0,0 Cyb-Hvywpn-Acannon,Level Two,125,400,120,1,1,110,sc_asscn.pie,scbody.pie,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,896,60,50,15,2,0,0,35,96,100,25,0,0,0,10,0,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,25,0,YES,25,0,0,0,0 Cyb-Hvywpn-A-T,Level Three,235,1000,120,1,1,90,sc_ATM.pie,scbody.pie,FXATMiss.PIE,FXMPLME.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,1792,70,80,80,2,0,0,460,0,0,0,0,0,0,0,10,1350,20,YES,KINETIC,MISSILE,HOMING-DIRECT,ANTI TANK,180,90,-30,YES,NO,20,64,YES,50,100,0,0,0 CommandTurret4,Level All,1750,2000,1000,0,1,1600,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,2304,2304,100,100,1,1,0,0,8,0,0,0,0,0,0,0,0,2500,0,YES,HEAT,COMMAND,HOMING-DIRECT,ALL ROUNDER,180,90,-30,YES,NO,0,0,YES,1,100,0,0,0 CommandTurret3,Level All,1250,1500,1000,0,1,1400,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,2048,2048,100,100,1,1,0,0,7,0,0,0,0,0,0,0,0,2500,0,YES,HEAT,COMMAND,HOMING-DIRECT,ALL ROUNDER,180,90,-30,YES,NO,0,0,YES,1,100,0,0,0 CommandTurret2,Level All,750,1000,1000,0,1,1200,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1792,1792,100,100,1,1,0,0,6,0,0,0,0,0,0,0,0,2500,0,YES,HEAT,COMMAND,HOMING-DIRECT,ALL ROUNDER,180,90,-30,YES,NO,0,0,YES,1,100,0,0,0 CommandTurret1,Level All,250,500,1000,0,1,1000,GNLCMD1.PIE,TRLCMD1.PIE,FXHBLas.PIE,FXBeam.PIE,FXSFlms.PIE,FXSFlms.PIE,FXSFlms.PIE,0,1536,1536,100,100,1,1,0,0,4,0,0,0,0,0,0,0,0,2500,0,YES,HEAT,COMMAND,HOMING-DIRECT,ALL ROUNDER,180,90,-30,YES,NO,0,0,YES,1,100,0,0,0 -Cannon6TwinAslt,Level Two-Three,250,800,6000,1,25,500,Gnhvcan2.pie,trhvcan2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,60,50,15,2,0,0,55,192,100,45,0,0,0,10,0,1600,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,35,0,YES,50,0,0,1,0 -Cannon5VulcanMk1,Level Two-Three,150,800,3500,1,25,300,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,60,50,15,2,0,0,35,128,100,25,0,0,0,10,0,1600,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,25,0,YES,50,0,0,1,0 -Cannon5Vulcan-VTOL,Level All,150,800,1500,1,25,50,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,60,50,15,2,0,0,70,128,100,45,0,0,0,10,0,1600,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,0,-60,YES,NO,25,0,YES,50,0,8,1,0 -Cannon4AUTOMk1,Level Two-Three,175,700,2500,1,22,250,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1280,65,65,50,2,0,0,70,32,100,35,0,0,0,10,10,1800,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,50,100,0,1,1 -Cannon4AUTO-VTOL,Level All,175,700,1000,1,22,30,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1280,65,65,50,2,0,0,140,32,100,70,0,0,0,10,10,2250,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,0,-60,YES,NO,100,0,YES,50,100,4,1,1 -Cannon375mmMk1,Level All,200,800,10000,1,20,500,GNHCAN.PIE,TRHCAN.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1024,70,55,60,2,0,0,120,192,100,60,0,0,0,10,100,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,150,0,YES,90,0,0,1,0 -Cannon2A-TMk1,Level All,125,500,5000,1,14,350,GNMCAN.PIE,TRMCAN.PIE,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXMSteam.PIE,0,640,960,70,55,40,2,0,0,60,128,100,30,0,0,0,10,100,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,60,0,0,1,0 +Cannon6TwinAslt,Level Two-Three,250,800,5000,1,25,500,Gnhvcan2.pie,trhvcan2.PIE,FXLMgun2.PIE,FXTracr2.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,60,50,15,2,0,0,55,192,100,45,0,0,0,10,0,1600,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,35,0,YES,50,0,0,1,0 +Cannon5VulcanMk1,Level Two-Three,150,800,2500,1,25,300,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,60,50,15,2,0,0,35,128,100,25,0,0,0,10,0,1600,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,25,0,YES,50,0,0,1,0 +Cannon5Vulcan-VTOL,Level All,150,800,1250,1,25,50,GNMVCAN.PIE,TRMVCAN.PIE,FXVulCan.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1024,60,50,15,2,0,0,70,128,100,45,0,0,0,10,0,1600,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,0,-60,YES,NO,25,0,YES,50,0,8,1,0 +Cannon4AUTOMk1,Level Two-Three,175,700,4000,1,22,250,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1280,65,65,50,2,0,0,70,32,100,35,0,0,0,10,10,1800,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,50,100,0,1,0 +Cannon4AUTO-VTOL,Level All,175,700,2000,1,22,30,GNLACAN.PIE,TRLACAN.PIE,FXCan20A.PIE,FXTracer.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,768,1280,65,65,50,2,0,0,140,32,100,70,0,0,0,10,10,2250,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,0,-60,YES,NO,100,0,YES,50,100,4,1,0 +Cannon375mmMk1,Level All,250,800,10000,1,20,500,GNHCAN.PIE,TRHCAN.PIE,FxCan75m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,768,1088,70,55,60,2,0,0,120,192,100,60,0,0,0,10,100,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,150,0,YES,90,0,0,1,0 +Cannon2A-TMk1,Level All,150,500,5000,1,14,350,GNMCAN.PIE,TRMCAN.PIE,FXCan40m.PIE,FXCAmmo.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXMSteam.PIE,0,640,1024,70,55,40,2,0,0,60,128,100,30,0,0,0,10,100,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-60,YES,NO,100,0,YES,60,0,0,1,0 Cannon1Mk1,Level All,75,375,1000,1,15,200,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.PIE,FXcam20.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,70,55,30,2,0,0,35,64,100,18,0,0,0,10,100,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-90,YES,NO,100,0,YES,30,0,0,1,0 Cannon1-VTOL,Level All,75,375,1000,1,15,30,GNLCAN.PIE,TRLCAN.PIE,FXCan20m.PIE,FXcam20.PIE,FXMExp.PIE,FXMExp.PIE,FXSSplsh.PIE,0,640,960,70,55,40,2,0,0,70,96,100,35,0,0,0,10,100,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,0,-90,YES,NO,100,0,YES,30,0,4,1,0 BusCannon,Level One,10,10,10,10,10,10,GNLCAN.pie,Exturret.pie,FXLMgun.PIE,FXTracer.PIE,FXGRDexl.PIE,FXGRDexl.PIE,FXSSplsh.PIE,0,640,960,60,50,30,1,0,0,28,0,0,0,0,0,0,10,0,1500,20,YES,KINETIC,CANNON,DIRECT,ALL ROUNDER,180,90,-30,YES,NO,100,0,YES,25,0,0,0,0 diff --git a/data/mp/structs/blgateh.pie b/data/mp/structs/blgateh.pie new file mode 100644 index 000000000..f2589706c --- /dev/null +++ b/data/mp/structs/blgateh.pie @@ -0,0 +1,34 @@ +PIE 2 +TYPE 200 +TEXTURE 0 page-12-player-buildings.png 256 256 +LEVELS 1 +LEVEL 1 +POINTS 16 + 65 0 14 + 65 62 12 + -65 0 14 + -65 0 -14 + -65 62 -12 + -65 62 12 + 65 0 -14 + 65 62 -12 + 65 62 0 + 65 0 0 + -65 62 0 + -65 0 0 + -65 78 -12 + -65 78 12 + 65 78 12 + 65 78 -12 +POLYGONS 11 + 200 4 3 4 7 6 21 175 21 117 69 117 69 175 + 200 4 8 1 0 9 0 117 21 117 21 175 0 175 + 200 4 9 6 7 8 90 175 69 175 69 117 90 117 + 200 4 0 1 5 2 21 175 21 117 69 117 69 175 + 200 4 10 4 3 11 0 117 21 117 21 175 0 175 + 200 4 11 2 5 10 90 175 69 175 69 117 90 117 + 4200 4 12 13 14 15 8 1 56 14 55 225 55 238 2 238 2 225 + 4200 4 13 12 4 5 8 1 56 14 55 238 4 238 4 225 55 225 + 4200 4 14 13 5 1 8 1 56 14 2 238 55 238 55 225 2 225 + 4200 4 15 14 1 7 8 1 56 14 5 225 55 225 55 238 5 238 + 4200 4 12 15 7 4 8 1 56 14 55 225 2 225 2 238 55 238 diff --git a/data/mp/wrf/piestats.wrf b/data/mp/wrf/piestats.wrf index be07d483c..e18242d6b 100644 --- a/data/mp/wrf/piestats.wrf +++ b/data/mp/wrf/piestats.wrf @@ -13,6 +13,7 @@ file IMD "blfact0.pie" file IMD "blfact1.pie" file IMD "blfact2.pie" file IMD "blwallh.pie" +file IMD "blgateh.pie" file IMD "blwallc2.pie" file IMD "blwall2.pie" file IMD "blwallc3.pie" diff --git a/data/music/Makefile.am b/data/music/Makefile.am index 031d0f877..9e7eb6535 100644 --- a/data/music/Makefile.am +++ b/data/music/Makefile.am @@ -3,4 +3,5 @@ dist_music_DATA = \ menu.ogg \ music.wpl \ track1.ogg \ - track2.ogg + track2.ogg \ + track3.ogg diff --git a/data/music/music.wpl b/data/music/music.wpl index 02c696a85..d7923b1c4 100644 --- a/data/music/music.wpl +++ b/data/music/music.wpl @@ -1,2 +1,3 @@ track1.ogg track2.ogg +track3.ogg diff --git a/data/music/track3.ogg b/data/music/track3.ogg new file mode 100644 index 000000000..87466e070 Binary files /dev/null and b/data/music/track3.ogg differ diff --git a/lib/exceptionhandler/dumpinfo.cpp b/lib/exceptionhandler/dumpinfo.cpp index fb84a24fe..4d7fb7b84 100644 --- a/lib/exceptionhandler/dumpinfo.cpp +++ b/lib/exceptionhandler/dumpinfo.cpp @@ -212,7 +212,7 @@ static std::string getProgramPath(const char* programCommand) } else { - debug(LOG_WARNING, "Could not retrieve full path to %s, will not create extended backtrace", programCommand); + debug(LOG_INFO, "Could not retrieve full path to %s, will not create extended backtrace", programCommand); } return programPath; diff --git a/lib/exceptionhandler/exceptionhandler.c b/lib/exceptionhandler/exceptionhandler.c index b2dd4d2f3..6af7579ca 100644 --- a/lib/exceptionhandler/exceptionhandler.c +++ b/lib/exceptionhandler/exceptionhandler.c @@ -23,6 +23,9 @@ #include "dumpinfo.h" #if defined(WZ_OS_WIN) +#include +#include +#include # include "dbghelp.h" # include "exchndl.h" @@ -33,6 +36,7 @@ static LPTOP_LEVEL_EXCEPTION_FILTER prevExceptionHandler = NULL; /** * Exception handling on Windows. * Ask the user whether he wants to safe a Minidump and then dump it into the temp directory. + * NOTE: This is only for MSVC compiled programs. * * \param pExceptionInfo Information on the exception, passed from Windows * \return whether further exception handlers (i.e. the Windows internal one) should be invoked @@ -704,3 +708,43 @@ void setupExceptionHandler(int argc, char * argv[]) setFatalSignalHandler(posixExceptionHandler); #endif // WZ_OS_* } +bool OverrideRPTDirectory(char *newPath) +{ +# if defined(WZ_CC_MINGW) + TCHAR buf[MAX_PATH]; + + if (!MultiByteToWideChar(CP_UTF8, 0, newPath, strlen(newPath), buf, 0)) + { + //conversion failed-- we won't use the user's directory. + + LPVOID lpMsgBuf; + LPVOID lpDisplayBuf; + DWORD dw = GetLastError(); + TCHAR szBuffer[4196]; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, + 0, NULL ); + + wsprintf(szBuffer, _T("Exception handler failed setting new directory with error %d: %s\n"), dw, lpMsgBuf); + MessageBox(MB_ICONEXCLAMATION, szBuffer, _T("Error"), MB_OK); + + LocalFree(lpMsgBuf); + LocalFree(lpDisplayBuf); + + return false; + } + _tcscpy(buf, newPath); + PathRemoveFileSpec(buf); + _tcscat(buf, _T("\\logs\\")); // stuff it in the logs directory + _tcscat(buf, _T("Warzone2100.RPT")); + ResetRPTDirectory(buf); +#endif + return true; +} diff --git a/lib/exceptionhandler/exceptionhandler.h b/lib/exceptionhandler/exceptionhandler.h index fa9655ced..48756145b 100644 --- a/lib/exceptionhandler/exceptionhandler.h +++ b/lib/exceptionhandler/exceptionhandler.h @@ -21,5 +21,5 @@ #define __INCLUDED_LIB_EXCEPTIONHANDLER_EXCEPTIONHANDLER_H__ extern void setupExceptionHandler(int argc, char * argv[]); - +extern bool OverrideRPTDirectory(char *newPath); #endif // __INCLUDED_LIB_EXCEPTIONHANDLER_EXCEPTIONHANDLER_H__ diff --git a/lib/exceptionhandler/exchndl.c b/lib/exceptionhandler/exchndl.c index 7360860c0..f68840a76 100644 --- a/lib/exceptionhandler/exchndl.c +++ b/lib/exceptionhandler/exchndl.c @@ -19,7 +19,10 @@ along with Warzone 2100; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ - +#if (_WIN32_WINNT < 0x0500) // must force win 2k or higher +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0500 +#endif #include "lib/framework/frame.h" #include "dumpinfo.h" #include "exchndl.h" @@ -32,7 +35,8 @@ #include #include #include - +#include +#include #if !defined(WZ_CC_MSVC) #define HAVE_BFD 1 @@ -1072,7 +1076,7 @@ void GenerateExceptionReport(PEXCEPTION_POINTERS pExceptionInfo) rprintf(_T("\r\n\r\n")); #endif - + // FIXME: We *never* return from the below call! StackBackTrace(GetCurrentProcess(), GetCurrentThread(), pContext); rprintf(_T("\r\n\r\n")); @@ -1106,6 +1110,32 @@ LONG WINAPI TopLevelExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo) FILE_FLAG_WRITE_THROUGH, 0 ); + if (hReportFile == INVALID_HANDLE_VALUE) + { + // Retrieve the system error message for the last-error code + + LPVOID lpMsgBuf; + LPVOID lpDisplayBuf; + DWORD dw = GetLastError(); + TCHAR szBuffer[4196]; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, + 0, NULL ); + + wsprintf(szBuffer, _T("Exception handler failed with error %d: %s\n"), dw, lpMsgBuf); + MessageBox(MB_ICONEXCLAMATION, szBuffer, _T("Error"), MB_OK); + + LocalFree(lpMsgBuf); + LocalFree(lpDisplayBuf); + debug(LOG_ERROR, "Exception handler failed to create file!"); + } #ifdef HAVE_BFD bfd_set_error_handler((bfd_error_handler_type) rprintf); @@ -1113,28 +1143,43 @@ LONG WINAPI TopLevelExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo) if (hReportFile) { + TCHAR szBuffer[4196]; + int err; + SetFilePointer(hReportFile, 0, 0, FILE_END); + // FIXME: We don't return from the below function call GenerateExceptionReport(pExceptionInfo); - CloseHandle(hReportFile); + + wsprintf(szBuffer, _T("Warzone has crashed.\r\nSee %s for more details\r\n"), szLogFileName); + err = MessageBox(MB_ICONERROR, szBuffer, _T("Warzone Crashed!"), MB_OK | MB_ICONERROR); + if (err == 0) + { + LPVOID lpMsgBuf; + LPVOID lpDisplayBuf; + DWORD dw = GetLastError(); + TCHAR szBuffer[4196]; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, + 0, NULL ); + + wsprintf(szBuffer, _T("Exception handler failed with error %d: %s\n"), dw, lpMsgBuf); + MessageBox(MB_ICONEXCLAMATION, szBuffer, _T("Error"), MB_OK); + + LocalFree(lpMsgBuf); + LocalFree(lpDisplayBuf); + debug(LOG_ERROR, "Exception handler failed to create file!"); + } hReportFile = 0; } - - if(fuOldErrorMode & SEM_NOGPFAULTERRORBOX) - { - TCHAR szBuffer[4196]; - - wsprintf(szBuffer, _T("An unhandled exception ocurred\r\nSee %s for more details\r\n"), szLogFileName); - - MessageBox( - NULL, - szBuffer, - _T("Error"), - MB_OK | MB_ICONERROR - ); - } - SetErrorMode(fuOldErrorMode); } @@ -1146,35 +1191,46 @@ LONG WINAPI TopLevelExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo) void ExchndlSetup() { +# if defined(WZ_CC_MINGW) + TCHAR miniDumpPath[PATH_MAX] = {'\0'}; // Install the unhandled exception filter function prevExceptionFilter = SetUnhandledExceptionFilter(TopLevelExceptionFilter); // Retrieve the current version formattedVersionString = strdup(version_getFormattedVersionString()); - // Figure out what the report file will be named, and store it away - if(GetModuleFileName(NULL, szLogFileName, MAX_PATH)) + // Because of UAC on vista / win7 we use this to write our dumps to (unless we override it via OverrideRPTDirectory()) + // NOTE: CSIDL_PERSONAL = C:\Users\user name\Documents + if ( SUCCEEDED( SHGetFolderPathA( NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, miniDumpPath ) )) { - LPTSTR lpszDot; + PathAppend( miniDumpPath, TEXT( "Warzone 2100 2.3\\logs" ) ); - // Look for the '.' before the "EXE" extension. Replace the extension - // with "RPT" - if((lpszDot = _tcsrchr(szLogFileName, _T('.')))) + if( !PathFileExists( miniDumpPath ) ) { - lpszDot++; // Advance past the '.' - _tcscpy(lpszDot, _T("RPT")); // "RPT" -> "Report" + if( ERROR_SUCCESS != SHCreateDirectoryEx( NULL, miniDumpPath, NULL ) ) + { + _tcscpy(miniDumpPath, _T("c:\\temp")); + } } - else - _tcscat(szLogFileName, _T(".RPT")); } - else if(GetWindowsDirectory(szLogFileName, MAX_PATH)) - { - _tcscat(szLogFileName, _T("EXCHNDL.RPT")); + else + { // should never fail, but if it does, we fall back to this + _tcscpy(miniDumpPath, _T("c:\\temp")); } + _tcscat(szLogFileName, _T("Warzone2100.RPT")); + _tcscat(miniDumpPath, _T("\\")); + _tcscat(miniDumpPath,szLogFileName); + _tcscpy(szLogFileName, miniDumpPath); + atexit(ExchndlShutdown); +#endif +} +void ResetRPTDirectory(char *newPath) +{ + debug(LOG_WZ, "New RPT directory is %s, was %s", newPath, szLogFileName); + _tcscpy(szLogFileName, newPath); } - void ExchndlShutdown(void) { if (prevExceptionFilter) diff --git a/lib/exceptionhandler/exchndl.h b/lib/exceptionhandler/exchndl.h index 1714c1c0e..9e0190608 100644 --- a/lib/exceptionhandler/exchndl.h +++ b/lib/exceptionhandler/exchndl.h @@ -23,5 +23,5 @@ extern void ExchndlSetup(void); extern void ExchndlShutdown(void); - +void ResetRPTDirectory(char *newPath); #endif // __INCLUDED_LIB_EXCEPTIONHANDLER_EXCHNDL_H__ diff --git a/lib/framework/cursors.h b/lib/framework/cursors.h index 33bd145be..fe2d0715c 100644 --- a/lib/framework/cursors.h +++ b/lib/framework/cursors.h @@ -50,10 +50,12 @@ typedef enum CURSOR_BRIDGE, CURSOR_BUILD, CURSOR_EMBARK, + CURSOR_DISEMBARK, CURSOR_FIX, CURSOR_GUARD, CURSOR_JAM, CURSOR_LOCKON, + CURSOR_SCOUT, CURSOR_MENU, CURSOR_MOVE, CURSOR_NOTPOSSIBLE, diff --git a/lib/framework/cursors16.c b/lib/framework/cursors16.c index ad9f5923e..a6e1eaeaa 100644 --- a/lib/framework/cursors16.c +++ b/lib/framework/cursors16.c @@ -430,6 +430,33 @@ static const char *cursor_embark[] = { "8,11" }; +static const char *cursor_disembark[] = { + /* width height num_colors chars_per_pixel */ + " 16 16 3 1", + /* colors */ + "X c #000000", + ". c #ffffff", + " c None", + /* pixels */ + " ", + " ", + " ...... ", + " ...... ", + " ........X ", + " ......X ", + " X....X ", + " ..X..X.. ", + " ..XX.. ", + " .... ", + " .. ", + " ", + " ", + " ", + " ", + " ", + "8,11" +}; + static const char *cursor_fix[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", @@ -538,6 +565,33 @@ static const char *cursor_lockon[] = { "7,7" }; +static const char *cursor_scout[] = { + /* width height num_colors chars_per_pixel */ + " 16 16 3 1", + /* colors */ + "X c #000000", + ". c #ffffff", + " c None", + /* pixels */ + " ", + " ", + " ", + " ..X.. ", + " .X X. ", + " . . . .X ", + " X X. X X ", + " . X.X .X ", + " .X... . ", + " X...X ", + " ..... ", + " XXXX ", + " ", + " ", + " ", + " ", + "7,7" +}; + static const char *cursor_menu[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", @@ -722,10 +776,12 @@ static const struct { cursor_bridge, CURSOR_BRIDGE }, { cursor_build, CURSOR_BUILD }, { cursor_embark, CURSOR_EMBARK }, + { cursor_disembark, CURSOR_EMBARK }, { cursor_fix, CURSOR_FIX }, { cursor_guard, CURSOR_GUARD }, { cursor_jam, CURSOR_JAM }, { cursor_lockon, CURSOR_LOCKON }, + { cursor_scout, CURSOR_SCOUT }, { cursor_menu, CURSOR_MENU }, { cursor_move, CURSOR_MOVE }, { cursor_notpossible, CURSOR_NOTPOSSIBLE }, diff --git a/lib/framework/cursors32.c b/lib/framework/cursors32.c index e4ebbab6c..bfad4d9c0 100644 --- a/lib/framework/cursors32.c +++ b/lib/framework/cursors32.c @@ -670,6 +670,49 @@ static const char *cursor_embark[] = { "16,22" }; +static const char *cursor_disembark[] = { + /* width height num_colors chars_per_pixel */ + " 32 32 3 1", + /* colors */ + "X c #000000", + ". c #ffffff", + " c None", + /* pixels */ + " ", + " ", + " ", + " ", + " ", + " ...........X ", + " ...........X ", + " ...........X ", + " ...........X ", + " .................X ", + " ...............XX ", + " .............X ", + " ...........X ", + " X.........X ", + " ...XX.......XX...X ", + " ...XX.....XX...X ", + " ...XX...XX...X ", + " ...XX.XX...X ", + " ...XXX...X ", + " ...X...X ", + " .....X ", + " ...X ", + " .X ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "16,22" +}; + static const char *cursor_fix[] = { /* width height num_colors chars_per_pixel */ " 32 32 3 1", @@ -842,6 +885,49 @@ static const char *cursor_lockon[] = { "15,15" }; +static const char *cursor_scout[] = { + /* width height num_colors chars_per_pixel */ + " 32 32 3 1", + /* colors */ + "X c #000000", + ". c #ffffff", + " c None", + /* pixels */ + " ", + " ", + " ", + " ", + " ", + " ", + " .....X ", + " ...XXX...X ", + " ..XX XX..X ", + " ..X X..X ", + " .X ...X X.X ", + " ..X .X .X ..X ", + " .X .X .X .X ", + " .X .X .X .X .X ", + " .X .XX.XX.X .X ", + " ..X X...XX ..X ", + " .X ...X .X ", + " ..X .....X ..X ", + " .XX.....XX.X ", + " X.......XX ", + " .......X ", + " .........X ", + " .........X ", + " XXXXXXXXX ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "15,15" +}; + static const char *cursor_menu[] = { /* width height num_colors chars_per_pixel */ " 32 32 3 1", @@ -1122,10 +1208,12 @@ static const struct { cursor_bridge, CURSOR_BRIDGE }, { cursor_build, CURSOR_BUILD }, { cursor_embark, CURSOR_EMBARK }, + { cursor_disembark, CURSOR_DISEMBARK }, { cursor_fix, CURSOR_FIX }, { cursor_guard, CURSOR_GUARD }, { cursor_jam, CURSOR_JAM }, { cursor_lockon, CURSOR_LOCKON }, + { cursor_scout, CURSOR_SCOUT }, { cursor_menu, CURSOR_MENU }, { cursor_move, CURSOR_MOVE }, { cursor_notpossible, CURSOR_NOTPOSSIBLE }, diff --git a/lib/framework/debug.c b/lib/framework/debug.c index 6c01dcf8d..ea9c56bea 100644 --- a/lib/framework/debug.c +++ b/lib/framework/debug.c @@ -45,7 +45,9 @@ bool assertEnabled = true; #else bool assertEnabled = false; #endif - +#if defined(WZ_OS_MAC) +#include +#endif /* * This list _must_ match the enum in debug.h! * Names must be 8 chars long at max! @@ -432,8 +434,29 @@ void _debug( code_part part, const char *function, const char *str, ... ) MessageBoxA( NULL, wbuf, "Warzone has terminated unexpectedly", MB_OK|MB_ICONERROR); +#elif defined(WZ_OS_MAC) + AlertStdCFStringAlertParamRec param; + DialogRef dialog; + OSStatus err; + DialogItemIndex itemHit; + char aBuffer[512]; + + GetStandardAlertDefaultParams( ¶m, kStdCFStringAlertVersionOne ); + param.movable = true; + + ssprintf(aBuffer, "%s\n\nPlease check your logs for more details.\n", useInputBuffer1 ? inputBuffer[1] : inputBuffer[0] ); + + err = CreateStandardAlert( kAlertStopAlert, CFStringCreateWithCString( nil, aBuffer, kCFStringEncodingMacRoman), + CFSTR( "Run Console.app and search for wz2100 and copy that to a file.\ + \n\nFor the Crash report on 10.4/10.5 check\ + \n~/Library/Logs/CrashReporter,\ + \non 10.6 check ~/Library/Logs/DiagnosticReports\ + \nDo not forget to upload and attach those to a bug report at http://developer.wz2100.net/newticket\ + \nThanks!" ), ¶m, &dialog ); + SetWindowTitleWithCFString( GetDialogWindow( dialog ), CFSTR( "Warzone has terminated unexpectedly" ) ); + + RunStandardAlert( dialog, NULL, &itemHit ); #endif - // TODO: Add Mac OS X dialog as well? } // Throw up a dialog box for windows users since most don't have a clue to check the stderr.txt file for information @@ -446,8 +469,23 @@ void _debug( code_part part, const char *function, const char *str, ... ) MessageBoxA( NULL, wbuf, "Warzone has detected a problem.", MB_OK|MB_ICONINFORMATION); +#elif defined (WZ_OS_MAC) + AlertStdCFStringAlertParamRec param; + DialogRef dialog; + OSStatus err; + DialogItemIndex itemHit; + char aBuffer[512]; + + GetStandardAlertDefaultParams( ¶m, kStdCFStringAlertVersionOne ); + param.movable = true; + + ssprintf(aBuffer, "A non fatal error has occurred.\n\n%s\n\n", useInputBuffer1 ? inputBuffer[1] : inputBuffer[0] ); + + err = CreateStandardAlert( kAlertNoteAlert, CFStringCreateWithCString( nil, aBuffer, kCFStringEncodingMacRoman), NULL, ¶m, &dialog ); + SetWindowTitleWithCFString( GetDialogWindow( dialog ), CFSTR( "Warzone has detected a problem" ) ); + + RunStandardAlert( dialog, NULL, &itemHit ); #endif - // TODO: Add Mac OS X dialog as well? } } diff --git a/lib/framework/frame.c b/lib/framework/frame.c index cc7f59ad6..d22ce3d24 100644 --- a/lib/framework/frame.c +++ b/lib/framework/frame.c @@ -64,7 +64,11 @@ UDWORD selectedPlayer = 0; /**< Current player */ */ /* Over how many seconds is the average required? */ -#define TIMESPAN 5 +#ifdef _DEBUG +# define TIMESPAN 1 +#else +# define TIMESPAN 5 +#endif /* Initial filler value for the averages - arbitrary */ #define IN_A_FRAME 70 @@ -185,10 +189,12 @@ static void initCursors(void) aCursors[CURSOR_BRIDGE] = init_system_cursor(CURSOR_BRIDGE, cursor_type); aCursors[CURSOR_BUILD] = init_system_cursor(CURSOR_BUILD, cursor_type); aCursors[CURSOR_EMBARK] = init_system_cursor(CURSOR_EMBARK, cursor_type); + aCursors[CURSOR_DISEMBARK] = init_system_cursor(CURSOR_DISEMBARK, cursor_type); aCursors[CURSOR_FIX] = init_system_cursor(CURSOR_FIX, cursor_type); aCursors[CURSOR_GUARD] = init_system_cursor(CURSOR_GUARD, cursor_type); aCursors[CURSOR_JAM] = init_system_cursor(CURSOR_JAM, cursor_type); aCursors[CURSOR_LOCKON] = init_system_cursor(CURSOR_LOCKON, cursor_type); + aCursors[CURSOR_SCOUT] = init_system_cursor(CURSOR_SCOUT, cursor_type); aCursors[CURSOR_MENU] = init_system_cursor(CURSOR_MENU, cursor_type); aCursors[CURSOR_MOVE] = init_system_cursor(CURSOR_MOVE, cursor_type); aCursors[CURSOR_NOTPOSSIBLE] = init_system_cursor(CURSOR_NOTPOSSIBLE, cursor_type); @@ -240,7 +246,18 @@ bool frameInitialise( if (!screenInitialise(width, height, bitDepth, fsaa, fullScreen, vsync)) { - return false; + if (fullScreen) + { + info("Trying windowed mode now."); + if (!screenInitialise(width, height, bitDepth, fsaa, false, vsync)) + { + return false; + } + } + else + { + return false; + } } /* Initialise the input system */ diff --git a/lib/framework/input.c b/lib/framework/input.c index 9f7213706..39dce2434 100644 --- a/lib/framework/input.c +++ b/lib/framework/input.c @@ -328,7 +328,7 @@ void inputHandleMouseButtonEvent(SDL_MouseButtonEvent * buttonEvent) && buttonEvent->button != SDL_BUTTON_WHEELDOWN)) { //whether double click or not - if ( gameTime - aMouseState[buttonEvent->button].lastdown < DOUBLE_CLICK_INTERVAL ) + if ( realTime - aMouseState[buttonEvent->button].lastdown < DOUBLE_CLICK_INTERVAL ) { aMouseState[buttonEvent->button].state = KEY_DOUBLECLICK; aMouseState[buttonEvent->button].lastdown = 0; @@ -336,7 +336,7 @@ void inputHandleMouseButtonEvent(SDL_MouseButtonEvent * buttonEvent) else { aMouseState[buttonEvent->button].state = KEY_PRESSED; - aMouseState[buttonEvent->button].lastdown = gameTime; + aMouseState[buttonEvent->button].lastdown = realTime; } } diff --git a/lib/framework/types.h b/lib/framework/types.h index ccbb71523..ff7ca6838 100644 --- a/lib/framework/types.h +++ b/lib/framework/types.h @@ -32,6 +32,7 @@ #else // Defines C99 types for C99 incompatible compilers (e.g. MSVC) #include +#ifndef WZ_CC_MINGW # define INT8_MIN (-128) # define INT16_MIN (-32767-1) # define INT32_MIN (-2147483647-1) @@ -41,9 +42,11 @@ # define UINT8_MAX (255) # define UINT16_MAX (65535) # define UINT32_MAX (4294967295U) +#endif #ifdef WZ_CC_MSVC # define PRIu32 "u" # define PRIu64 "I64u" +typedef SSIZE_T ssize_t; #endif #endif // WZ_C99 diff --git a/lib/iniparser/Makefile.am b/lib/iniparser/Makefile.am index cbbd5fa71..1a908bc94 100644 --- a/lib/iniparser/Makefile.am +++ b/lib/iniparser/Makefile.am @@ -4,3 +4,4 @@ AM_CPPFLAGS = $(WZ_CPPFLAGS) noinst_LIBRARIES = libiniparser.a noinst_HEADERS = dictionary.h iniparser.h libiniparser_a_SOURCES = dictionary.c iniparser.c +EXTRA_DIST = LICENSE AUTHORS diff --git a/lib/ivis_common/imdload.c b/lib/ivis_common/imdload.c index 9bd0edfc5..e6f69a5a0 100644 --- a/lib/ivis_common/imdload.c +++ b/lib/ivis_common/imdload.c @@ -765,7 +765,8 @@ iIMDShape *iV_ProcessIMD( const char **ppFileData, const char *FileDataEnd ) debug(LOG_ERROR, "iV_ProcessIMD %s could not load tex page %s", pFileName, texfile); return NULL; } - /* assign tex page to levels */ + + // assign tex page to levels for (psShape = shape; psShape != NULL; psShape = psShape->next) { psShape->texpage = texpage; @@ -784,9 +785,10 @@ iIMDShape *iV_ProcessIMD( const char **ppFileData, const char *FileDataEnd ) } else { - shape->flags |= iV_IMD_TCMASK; + // Propagate settings through levels for (psShape = shape; psShape != NULL; psShape = psShape->next) { + psShape->flags |= iV_IMD_TCMASK; psShape->tcmaskpage = texpage; } } diff --git a/lib/ivis_common/pieclip.c b/lib/ivis_common/pieclip.c index 7774a129a..d2b007aa5 100644 --- a/lib/ivis_common/pieclip.c +++ b/lib/ivis_common/pieclip.c @@ -20,7 +20,7 @@ #include "pieclip.h" #include "ivi.h" -static UDWORD videoBufferDepth = 32, videoBufferWidth = 640, videoBufferHeight = 480; +static UDWORD videoBufferDepth = 32, videoBufferWidth = 0, videoBufferHeight = 0; BOOL pie_SetVideoBufferDepth(UDWORD depth) { diff --git a/lib/ivis_common/piefunc.h b/lib/ivis_common/piefunc.h index 59cd2f58f..552102d6d 100644 --- a/lib/ivis_common/piefunc.h +++ b/lib/ivis_common/piefunc.h @@ -34,7 +34,7 @@ #include "lib/ivis_common/pieclip.h" extern UBYTE pie_ByteScale(UBYTE a, UBYTE b) WZ_DECL_CONST; -extern void pie_TransColouredTriangle(CLIP_VERTEX *vrt, PIELIGHT c); +extern void pie_TransColouredTriangle(Vector3f *vrt, PIELIGHT c); extern void pie_DrawSkybox(float scale, int u, int v, int w, int h); extern void pie_DrawFogBox(float left, float right, float front, float back, float height, float wider); extern void pie_DrawViewingWindow( Vector3i *v, UDWORD x1, UDWORD y1, UDWORD x2, UDWORD y2, PIELIGHT colour); diff --git a/lib/ivis_common/piepalette.h b/lib/ivis_common/piepalette.h index 0221db4a7..d508331ac 100644 --- a/lib/ivis_common/piepalette.h +++ b/lib/ivis_common/piepalette.h @@ -81,8 +81,23 @@ #define WZCOL_TEAM6 psPalette[56] #define WZCOL_TEAM7 psPalette[57] #define WZCOL_TEAM8 psPalette[58] +#define WZCOL_FORM_BACKGROUND psPalette[59] +#define WZCOL_FORM_TEXT psPalette[60] +#define WZCOL_FORM_LIGHT psPalette[61] +#define WZCOL_FORM_DARK psPalette[62] +#define WZCOL_FORM_HILITE psPalette[63] +#define WZCOL_FORM_CURSOR psPalette[64] +#define WZCOL_FORM_TIP_BACKGROUND psPalette[65] +#define WZCOL_FORM_DISABLE psPalette[66] +#define WZCOL_DESIGN_POWER_FORM_BACKGROUND psPalette[67] +#define WZCOL_POWER_BAR psPalette[68] +#define WZCOL_ACTION_PROGRESS_BAR_MAJOR psPalette[69] +#define WZCOL_ACTION_PROGRESS_BAR_MINOR psPalette[70] +#define WZCOL_ACTION_PRODUCTION_RUN_TEXT psPalette[71] +#define WZCOL_ACTION_PRODUCTION_RUN_BACKGROUND psPalette[72] +#define WZCOL_LOADING_BAR_BACKGROUND psPalette[73] -#define WZCOL_MAX 59 +#define WZCOL_MAX 74 //************************************************************************* @@ -92,7 +107,7 @@ extern PIELIGHT psPalette[]; extern void pal_Init(void); extern void pal_ShutDown(void); -extern PIELIGHT pal_GetTeamColour(int team); +extern PIELIGHT pal_GetTeamColour(int team); static inline PIELIGHT pal_Colour(UBYTE r, UBYTE g, UBYTE b) { @@ -118,8 +133,6 @@ static inline PIELIGHT pal_SetBrightness(UBYTE brightness) return c; } -#define pal_Grey pal_SetBrightness - static inline PIELIGHT pal_RGBA(UBYTE r, UBYTE g, UBYTE b, UBYTE a) { PIELIGHT c; diff --git a/lib/ivis_common/piestate.c b/lib/ivis_common/piestate.c index 6e83bc671..2bba46a47 100644 --- a/lib/ivis_common/piestate.c +++ b/lib/ivis_common/piestate.c @@ -128,6 +128,10 @@ void pie_SetRendMode(REND_MODE rendMode) pie_SetTranslucencyMode(TRANS_ADDITIVE); break; + case REND_MULTIPLICATIVE: + pie_SetTranslucencyMode(TRANS_MULTIPLICATIVE); + break; + default: break; } diff --git a/lib/ivis_common/piestate.h b/lib/ivis_common/piestate.h index d432b744b..dc7ce3920 100644 --- a/lib/ivis_common/piestate.h +++ b/lib/ivis_common/piestate.h @@ -46,6 +46,7 @@ typedef enum REND_MODE REND_ALPHA, REND_ADDITIVE, REND_OPAQUE, + REND_MULTIPLICATIVE } REND_MODE; @@ -63,7 +64,8 @@ typedef enum TRANSLUCENCY_MODE TRANS_DECAL, TRANS_FILTER, TRANS_ALPHA, - TRANS_ADDITIVE + TRANS_ADDITIVE, + TRANS_MULTIPLICATIVE } TRANSLUCENCY_MODE; diff --git a/lib/ivis_opengl/Makefile.am b/lib/ivis_opengl/Makefile.am index ca5edeb3f..4c057599d 100644 --- a/lib/ivis_opengl/Makefile.am +++ b/lib/ivis_opengl/Makefile.am @@ -1,10 +1,9 @@ -AM_CPPFLAGS = $(SDL_CFLAGS) $(PNG_CFLAGS) $(OPENGLC_CFLAGS) $(OPENGL_CFLAGS) $(WZ_CPPFLAGS) +AM_CPPFLAGS = $(SDL_CFLAGS) $(PNG_CFLAGS) $(OPENGLC_CFLAGS) $(OPENGL_CFLAGS) $(WZ_CPPFLAGS) $(GLee_CFLAGS) AM_CFLAGS = $(WZ_CFLAGS) -Wno-missing-declarations AM_CXXFLAGS = $(WZ_CXXFLAGS) noinst_LIBRARIES = libivis_opengl.a noinst_HEADERS = \ - GLee.h \ piematrix.h \ screen.h @@ -24,6 +23,7 @@ libivis_opengl_a_SOURCES = \ if !SYSTEM_GLEE libivis_opengl_a_SOURCES += GLee.c +noinst_HEADERS += GLee.h endif libivis_opengl_a_LIBADD = $(top_builddir)/lib/ivis_common/libivis_common.a \ diff --git a/lib/ivis_opengl/pieblitfunc.c b/lib/ivis_opengl/pieblitfunc.c index 3f5a948ed..ba7ba6c69 100644 --- a/lib/ivis_opengl/pieblitfunc.c +++ b/lib/ivis_opengl/pieblitfunc.c @@ -264,7 +264,7 @@ void pie_ImageFileIDTile(IMAGEFILE *ImageFile, UWORD ID, int x, int y, int Width * was retrofitted onto something else. - Per */ void pie_UploadDisplayBuffer() { - screen_Upload(NULL); + screen_Upload(NULL, false); } BOOL pie_InitRadar(void) diff --git a/lib/ivis_opengl/piefunc.c b/lib/ivis_opengl/piefunc.c index f778dfb0c..d5a84dea3 100644 --- a/lib/ivis_opengl/piefunc.c +++ b/lib/ivis_opengl/piefunc.c @@ -98,7 +98,7 @@ void pie_DrawViewingWindow(Vector3i *v, UDWORD x1, UDWORD y1, UDWORD x2, UDWORD glEnd(); } -void pie_TransColouredTriangle(CLIP_VERTEX *vrt, PIELIGHT c) +void pie_TransColouredTriangle(Vector3f *vrt, PIELIGHT c) { UDWORD i; @@ -110,7 +110,7 @@ void pie_TransColouredTriangle(CLIP_VERTEX *vrt, PIELIGHT c) glBegin(GL_TRIANGLE_FAN); for (i = 0; i < 3; ++i) { - glVertex3f(vrt[i].pos.x, vrt[i].pos.y, vrt[i].pos.z); + glVertex3f(vrt[i].x, vrt[i].y, vrt[i].z); } glEnd(); } diff --git a/lib/ivis_opengl/piematrix.c b/lib/ivis_opengl/piematrix.c index 7a139dbd5..c8dc2a979 100644 --- a/lib/ivis_opengl/piematrix.c +++ b/lib/ivis_opengl/piematrix.c @@ -28,7 +28,6 @@ #include "lib/ivis_common/pieclip.h" #include "piematrix.h" #include "lib/ivis_common/rendmode.h" -#include "lib/ivis_common/piestate.h" /***************************************************************************/ /* @@ -298,8 +297,6 @@ void pie_PerspectiveEnd(void) void pie_Begin3DScene(void) { - pie_SetTexturePage(TEXPAGE_FONT); - glColor3f( 1.0f, 1.0f, 1.0f); // Reset Color to white glDepthRange(0.1, 1); drawing_interface = false; } diff --git a/lib/ivis_opengl/piemode.c b/lib/ivis_opengl/piemode.c index 5419015ce..4508f6530 100644 --- a/lib/ivis_opengl/piemode.c +++ b/lib/ivis_opengl/piemode.c @@ -42,7 +42,6 @@ #include "lib/ivis_common/pieclip.h" #include "screen.h" - /***************************************************************************/ /* * Source @@ -123,7 +122,7 @@ void pie_ScreenFlip(int clearMode) } if (screen_GetBackDrop()) { - screen_Upload(NULL); + screen_Upload(NULL, screen_getMapPreview()); } } diff --git a/lib/ivis_opengl/piestate.c b/lib/ivis_opengl/piestate.c index 5e74b5d29..b8ec9c179 100644 --- a/lib/ivis_opengl/piestate.c +++ b/lib/ivis_opengl/piestate.c @@ -449,8 +449,11 @@ void pie_SetTranslucencyMode(TRANSLUCENCY_MODE transMode) glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE); break; + case TRANS_MULTIPLICATIVE: + glEnable(GL_BLEND); + glBlendFunc(GL_ZERO, GL_SRC_COLOR); + break; case TRANS_DECAL: - rendStates.transMode = TRANS_DECAL; glDisable(GL_BLEND); break; case TRANS_FILTER: diff --git a/lib/ivis_opengl/screen.c b/lib/ivis_opengl/screen.c index f33cb03e6..0e577ce1b 100644 --- a/lib/ivis_opengl/screen.c +++ b/lib/ivis_opengl/screen.c @@ -34,8 +34,10 @@ #include "lib/ivis_common/tex.h" #include "lib/framework/frameint.h" +#include "lib/ivis_common/textdraw.h" #include "lib/ivis_common/piestate.h" #include "lib/ivis_common/pieblitfunc.h" +#include "lib/ivis_common/pieclip.h" #if defined(WZ_OS_MAC) #include @@ -44,6 +46,7 @@ #endif #include "screen.h" #include "src/console.h" +#include "src/levels.h" /* The Current screen size and bit depth */ UDWORD screenWidth = 0; @@ -59,12 +62,10 @@ static char screendump_filename[PATH_MAX]; static BOOL screendump_required = false; static GLuint backDropTexture = ~0; -// Variables needed for our FBO -GLuint fbo; // Our handle to the FBO -GLuint FBOtexture; // The texture we are going to use -GLuint FBOdepthbuffer; // Our handle to the depth render buffer -static BOOL FBOinit = false; -BOOL bFboProblem = false; // hack to work around people with bad drivers. (*cough*intel*cough*) +static int preview_width = 0, preview_height = 0; +static Vector2i player_pos[MAX_PLAYERS]; +static BOOL mappreview = false; +static char mapname[256]; /* Initialise the double buffered display */ bool screenInitialise( @@ -76,85 +77,93 @@ bool screenInitialise( // or full screen bool vsync) // If to sync to vblank or not { - static int video_flags = 0; + int video_flags = 0; int bpp = 0, value; char buf[512]; GLint glMaxTUs; + // Fetch the video info. + const SDL_VideoInfo* video_info = SDL_GetVideoInfo(); - /* Store the screen information */ - screenWidth = width; - screenHeight = height; - screenDepth = bitDepth; + if (width == 0 || height == 0) + { + pie_SetVideoBufferWidth(width = screenWidth = video_info->current_w); + pie_SetVideoBufferHeight(height = screenHeight = video_info->current_h); + pie_SetVideoBufferDepth(bitDepth = screenDepth = video_info->vfmt->BitsPerPixel); + } + else + { + screenWidth = width; + screenHeight = height; + screenDepth = bitDepth; + } - // Calculate the common flags for windowed and fullscreen modes. - if (video_flags == 0) { - // Fetch the video info. - const SDL_VideoInfo* video_info = SDL_GetVideoInfo(); + if (!video_info) + { + return false; + } - if (!video_info) { - return false; - } + // The flags to pass to SDL_SetVideoMode. + video_flags = SDL_OPENGL; // Enable OpenGL in SDL. + video_flags |= SDL_ANYFORMAT; // Don't emulate requested BPP if not available. - // The flags to pass to SDL_SetVideoMode. - video_flags = SDL_OPENGL; // Enable OpenGL in SDL. - video_flags |= SDL_ANYFORMAT; // Don't emulate requested BPP if not available. + if (fullScreen) + { + video_flags |= SDL_FULLSCREEN; + } - if (fullScreen) { - video_flags |= SDL_FULLSCREEN; - } + // Set the double buffer OpenGL attribute. + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - // Set the double buffer OpenGL attribute. - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + // Enable vsync if requested by the user + SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, vsync); - // Enable vsync if requested by the user - SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, vsync); + // Enable FSAA anti-aliasing if and at the level requested by the user + if (fsaa) + { + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, fsaa); + } - // Enable FSAA anti-aliasing if and at the level requested by the user - if (fsaa) - { - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, fsaa); - } - - bpp = SDL_VideoModeOK(width, height, bitDepth, video_flags); - if (!bpp) { - debug( LOG_ERROR, "Error: Video mode %dx%d@%dbpp is not supported!\n", width, height, bitDepth ); - return false; - } - switch ( bpp ) - { - case 32: - case 24: - SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 ); - SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 ); - SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 ); - SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 ); - SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); - SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 8 ); - break; - case 16: - debug( LOG_ERROR, "Warning: Using colour depth of %i instead of %i.", bpp, screenDepth ); - debug( LOG_ERROR, " You will experience graphics glitches!" ); - SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 ); - SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 6 ); - SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 ); - SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); - SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 8 ); - break; - case 8: - debug( LOG_FATAL, "Error: You don't want to play Warzone with a bit depth of %i, do you?", bpp ); - exit( 1 ); - break; - default: - debug( LOG_FATAL, "Error: Unsupported bit depth: %i", bpp ); - exit( 1 ); - break; - } + bpp = SDL_VideoModeOK(width, height, bitDepth, video_flags); + if (!bpp) + { + debug(LOG_ERROR, "Video mode %dx%d@%dbpp is not supported!", width, height, bitDepth); + return false; + } + switch (bpp) + { + case 32: + case 24: + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); + break; + case 16: + info("Using colour depth of %i instead of %i.", bpp, screenDepth); + info("You will experience graphics glitches!"); + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); + break; + case 8: + debug(LOG_FATAL, "You don't want to play Warzone with a bit depth of %i, do you?", bpp); + exit(1); + break; + default: + debug(LOG_FATAL, "Unsupported bit depth: %i", bpp); + exit(1); + break; } screen = SDL_SetVideoMode(width, height, bpp, video_flags); - if ( !screen ) { - debug( LOG_ERROR, "Error: SDL_SetVideoMode failed (%s).", SDL_GetError() ); + if (!screen) + { + debug(LOG_ERROR, "SDL_SetVideoMode failed (%s).", SDL_GetError()); return false; } if ( SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER, &value) == -1) @@ -195,38 +204,46 @@ bool screenInitialise( debug(LOG_3D, " * Anisotropic filtering %s supported.", GLEE_EXT_texture_filter_anisotropic ? "is" : "is NOT"); debug(LOG_3D, " * Rectangular texture %s supported.", GLEE_ARB_texture_rectangle ? "is" : "is NOT"); debug(LOG_3D, " * FrameBuffer Object (FBO) %s supported.", GLEE_EXT_framebuffer_object ? "is" : "is NOT"); - debug(LOG_3D, " * Shader Objects %s supported.", GL_ARB_shader_objects ? "is" : "is NOT"); - debug(LOG_3D, " * Vertex Buffer Object (VBO) %s supported.", GL_ARB_vertex_buffer_object ? "is" : "is NOT"); - + debug(LOG_3D, " * Vertex Buffer Object (VBO) %s supported.", GLEE_ARB_vertex_buffer_object ? "is" : "is NOT"); + debug(LOG_3D, " * NPOT %s supported.", GLEE_ARB_texture_non_power_of_two ? "is" : "is NOT"); + debug(LOG_3D, " * texture cube_map %s supported.", GLEE_ARB_texture_cube_map ? "is" : "is NOT"); glGetIntegerv(GL_MAX_TEXTURE_UNITS, &glMaxTUs); debug(LOG_3D, " * Total number of Texture Units (TUs) supported is %d.", (int) glMaxTUs); if (!GLEE_VERSION_1_4) { - debug(LOG_FATAL, "OpenGL 1.4+ is required for this game!"); + debug(LOG_FATAL, "OpenGL 1.4 + VBO extension is required for this game!"); exit(1); } #ifndef WZ_OS_MAC // Make OpenGL's VBO functions available under the core names for // implementations that have them only as extensions, namely Mesa. - if (!GLEE_VERSION_1_5 && !strncmp((const char *)glGetString(GL_RENDERER), "Mesa", 4)) + if (!GLEE_VERSION_1_5) { - info("Using VBO extension functions under the core names."); - // GLee is usually initialized automatically when needed, but - // here it has to be done explicitly. - GLeeInit(); - GLeeFuncPtr_glBindBuffer = GLeeFuncPtr_glBindBufferARB; - GLeeFuncPtr_glDeleteBuffers = GLeeFuncPtr_glDeleteBuffersARB; - GLeeFuncPtr_glGenBuffers = GLeeFuncPtr_glGenBuffersARB; - GLeeFuncPtr_glIsBuffer = GLeeFuncPtr_glIsBufferARB; - GLeeFuncPtr_glBufferData = GLeeFuncPtr_glBufferDataARB; - GLeeFuncPtr_glBufferSubData = GLeeFuncPtr_glBufferSubDataARB; - GLeeFuncPtr_glGetBufferSubData = GLeeFuncPtr_glGetBufferSubDataARB; - GLeeFuncPtr_glMapBuffer = GLeeFuncPtr_glMapBufferARB; - GLeeFuncPtr_glUnmapBuffer = GLeeFuncPtr_glUnmapBufferARB; - GLeeFuncPtr_glGetBufferParameteriv = GLeeFuncPtr_glGetBufferParameterivARB; - GLeeFuncPtr_glGetBufferPointerv = GLeeFuncPtr_glGetBufferPointervARB; + if (GLEE_ARB_vertex_buffer_object) + { + info("Using VBO extension functions under the core names."); + + GLeeFuncPtr_glBindBuffer = GLeeFuncPtr_glBindBufferARB; + GLeeFuncPtr_glDeleteBuffers = GLeeFuncPtr_glDeleteBuffersARB; + GLeeFuncPtr_glGenBuffers = GLeeFuncPtr_glGenBuffersARB; + GLeeFuncPtr_glIsBuffer = GLeeFuncPtr_glIsBufferARB; + GLeeFuncPtr_glBufferData = GLeeFuncPtr_glBufferDataARB; + GLeeFuncPtr_glBufferSubData = GLeeFuncPtr_glBufferSubDataARB; + GLeeFuncPtr_glGetBufferSubData = GLeeFuncPtr_glGetBufferSubDataARB; + GLeeFuncPtr_glMapBuffer = GLeeFuncPtr_glMapBufferARB; + GLeeFuncPtr_glUnmapBuffer = GLeeFuncPtr_glUnmapBufferARB; + GLeeFuncPtr_glGetBufferParameteriv = GLeeFuncPtr_glGetBufferParameterivARB; + GLeeFuncPtr_glGetBufferPointerv = GLeeFuncPtr_glGetBufferPointervARB; + } + else + { + debug(LOG_FATAL, "OpenGL 1.4 + VBO extension is required for this game!"); + exit(1); + } + + debug(LOG_WARNING, "OpenGL 1.5 is not supported by your system! Expect some glitches..."); } #endif @@ -243,11 +260,11 @@ bool screenInitialise( debug(LOG_3D, " * Total number of Texture Image Units (TIUs) supported is %d.", (int) glMaxTIUs); if (!pie_LoadShaders()) - debug(LOG_WARNING, "Can't use shaders! Switching back to fixed pipeline...");; + debug(LOG_INFO, "Can't use shaders, switching back to fixed pipeline.");; } else { - debug(LOG_WARNING, "OpenGL 2.0 is not supported by your system! Using fixed pipeline..."); + debug(LOG_INFO, "OpenGL 2.0 is not supported by your system, using fixed pipeline."); } glViewport(0, 0, width, height); @@ -343,9 +360,25 @@ BOOL screen_GetBackDrop(void) //****************************************************************** //slight hack to display maps (or whatever) in background. //bitmap MUST be (BACKDROP_HACK_WIDTH * BACKDROP_HACK_HEIGHT) for now. -void screen_Upload(const char *newBackDropBmp) +void screen_Upload(const char *newBackDropBmp, BOOL preview) { static bool processed = false; + int x1 = 0, x2 = screenWidth, y1 = 0, y2 = screenHeight, i, scale = 0, w = 0, h = 0; + float tx = 1, ty = 1; + const float aspect = screenWidth / (float)screenHeight, backdropAspect = 4 / (float)3; + + if (aspect < backdropAspect) + { + int offset = (screenWidth - screenHeight * backdropAspect) / 2; + x1 += offset; + x2 -= offset; + } + else + { + int offset = (screenHeight - screenWidth / backdropAspect) / 2; + y1 += offset; + y2 -= offset; + } if(newBackDropBmp != NULL) { @@ -362,8 +395,6 @@ void screen_Upload(const char *newBackDropBmp) 0, GL_RGB, GL_UNSIGNED_BYTE, newBackDropBmp); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); processed = true; @@ -380,16 +411,97 @@ void screen_Upload(const char *newBackDropBmp) glBindTexture(GL_TEXTURE_2D, backDropTexture); glColor3f(1, 1, 1); + if (preview) + { + int s1, s2; + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + s1 = screenWidth / preview_width; + s2 = screenHeight / preview_height; + scale = MIN(s1, s2); + + w = preview_width * scale; + h = preview_height * scale; + x1 = screenWidth / 2 - w / 2; + x2 = screenWidth / 2 + w / 2; + y1 = screenHeight / 2 - h / 2; + y2 = screenHeight / 2 + h / 2; + + tx = preview_width / (float)BACKDROP_HACK_WIDTH; + ty = preview_height / (float)BACKDROP_HACK_HEIGHT; + } + else + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + } + glBegin(GL_TRIANGLE_STRIP); glTexCoord2f(0, 0); - glVertex2f(0, 0); - glTexCoord2f(1, 0); - glVertex2f(screenWidth, 0); - glTexCoord2f(0, 1); - glVertex2f(0, screenHeight); - glTexCoord2f(1, 1); - glVertex2f(screenWidth, screenHeight); + glVertex2f(x1, y1); + glTexCoord2f(tx, 0); + glVertex2f(x2, y1); + glTexCoord2f(0, ty); + glVertex2f(x1, y2); + glTexCoord2f(tx, ty); + glVertex2f(x2, y2); glEnd(); + + if (preview) + { + for (i = 0; i < MAX_PLAYERS; i++) + { + int x = player_pos[i].x; + int y = player_pos[i].y; + char text[5]; + + if (x == 0x77777777) + continue; + + x = screenWidth / 2 - w / 2 + x * scale; + y = screenHeight / 2 - h / 2 + y * scale; + ssprintf(text, "%d", i); + iV_SetFont(font_large); + iV_SetTextColour(WZCOL_BLACK); + iV_DrawText(text, x - 1, y - 1); + iV_DrawText(text, x + 1, y - 1); + iV_DrawText(text, x - 1, y + 1); + iV_DrawText(text, x + 1, y + 1); + iV_SetTextColour(WZCOL_WHITE); + iV_DrawText(text, x, y); + } + } +} + +void screen_enableMapPreview(char *name, int width, int height, Vector2i *playerpositions) +{ + int i; + mappreview = true; + preview_width = width; + preview_height = height; + sstrcpy(mapname, name); + for (i = 0; i < MAX_PLAYERS; i++) + { + player_pos[i].x = playerpositions[i].x; + player_pos[i].y = playerpositions[i].y; + } +} + +const char *screen_getMapName(void) +{ + return mapname; +} + +void screen_disableMapPreview(void) +{ + mappreview = false; + sstrcpy(mapname, "none"); +} + +BOOL screen_getMapPreview(void) +{ + return mappreview; } /* Swap between windowed and full screen mode */ @@ -466,121 +578,19 @@ void screenDoDumpToDiskIfRequired(void) */ void screenDumpToDisk(const char* path) { - static unsigned int screendump_num = 0; + unsigned int screendump_num = 0; + time_t aclock; + struct tm *t; - while (++screendump_num != 0) { - // We can safely use '/' as path separator here since PHYSFS uses that as its default separator - ssprintf(screendump_filename, "%s/wz2100_shot_%03i.png", path, screendump_num); - if (!PHYSFS_exists(screendump_filename)) { - // Found a usable filename, so we'll stop searching. - break; - } + time(&aclock); /* Get time in seconds */ + t = localtime(&aclock); /* Convert time to struct */ + + ssprintf(screendump_filename, "%s/wz2100-%04d%02d%02d_%02d%02d%02d-%s.png", path, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, getLevelName()); + + while (PHYSFS_exists(screendump_filename)) + { + ssprintf(screendump_filename, "%s/wz2100-%04d%02d%02d_%02d%02d%02d-%s-%d.png", path, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, getLevelName(), ++screendump_num); } - - ASSERT( screendump_num != 0, "screenDumpToDisk: integer overflow; no more filenumbers available.\n" ); - - // If we have an integer overflow, we don't want to go about and overwrite files - if (screendump_num != 0) - screendump_required = true; + screendump_required = true; } - -BOOL Init_FBO(unsigned int width, unsigned int height) -{ - GLenum status; - - glErrors(); - // Bail out if FBOs aren't supported - if (!GLEE_EXT_framebuffer_object) - return false; - - // No need to create two FBOs - if (FBOinit) - return true; - - // Create the FBO - glGenFramebuffersEXT(1, &fbo); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); - - // create depthbuffer - glGenRenderbuffersEXT(1, &FBOdepthbuffer); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, FBOdepthbuffer); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, width, height); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, FBOdepthbuffer); - - // Now setup a texture to render to - glGenTextures(1, &FBOtexture); - glBindTexture(GL_TEXTURE_2D, FBOtexture); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height,0, GL_RGB, GL_UNSIGNED_BYTE, NULL); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - // attach that texture to the color - glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_2D, FBOtexture, 0); - glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); // unbind FBO - - // make sure everything went OK - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if(status != GL_FRAMEBUFFER_COMPLETE_EXT) - { - switch (status) - { - case GL_FRAMEBUFFER_COMPLETE_EXT: - break; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: - debug(LOG_ERROR, "Error: FBO missing a required image/buffer attachment!"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: - debug(LOG_ERROR, "Error: FBO has no images/buffers attached!"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: - debug(LOG_ERROR, "Error: FBO has mismatched image/buffer dimensions!"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: - debug(LOG_ERROR, "Error: FBO colorbuffer attachments have different types!"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: - debug(LOG_ERROR, "Error: FBO trying to draw to non-attached color buffer!"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: - debug(LOG_ERROR, "Error: FBO trying to read from a non-attached color buffer!"); - break; - case GL_FRAMEBUFFER_UNSUPPORTED_EXT: - debug(LOG_ERROR, "Error: FBO format is not supported by current graphics card/driver!"); - break; - case GL_INVALID_FRAMEBUFFER_OPERATION_EXT : - debug(LOG_ERROR, "Error: FBO Non-framebuffer passed to glCheckFramebufferStatusEXT()!"); - break; - default: - debug(LOG_ERROR, "*UNKNOWN FBO ERROR* reported from glCheckFramebufferStatusEXT() for %x!", (unsigned int)status); - break; - } - FBOinit = false; //we have a error with the FBO setup - return false; - } - else - { - FBOinit = true; //everything is OK with FBO setup. - } - - glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); // unbind it for now. - - bFboProblem |= glErrors(); // don't use FBOs if something here caused an error - return true; -} - -void Delete_FBO(void) -{ - if(FBOinit) - { - glErrors(); - glDeleteFramebuffersEXT(1, &fbo); - glDeleteRenderbuffersEXT(1, &FBOdepthbuffer); - glDeleteTextures(1,&FBOtexture); - bFboProblem |= glErrors(); - fbo = FBOdepthbuffer = FBOtexture = FBOinit = 0; //reset everything. - } -} diff --git a/lib/ivis_opengl/screen.h b/lib/ivis_opengl/screen.h index 703233f5c..c96b7db79 100644 --- a/lib/ivis_opengl/screen.h +++ b/lib/ivis_opengl/screen.h @@ -48,7 +48,7 @@ extern void screen_SetBackDropFromFile(const char* filename); extern void screen_StopBackDrop(void); extern void screen_RestartBackDrop(void); extern BOOL screen_GetBackDrop(void); -extern void screen_Upload(const char *newBackDropBmp); +extern void screen_Upload(const char *newBackDropBmp, BOOL preview); /* screendump */ extern void screenDumpToDisk(const char* path); @@ -60,6 +60,8 @@ extern int wz_texture_compression; extern void screenDoDumpToDiskIfRequired(void); -extern BOOL Init_FBO(unsigned int width, unsigned int height); -extern void Delete_FBO(void); +void screen_enableMapPreview(char *name, int width, int height, Vector2i *playerpositions); +void screen_disableMapPreview(void); +BOOL screen_getMapPreview(void); +const char *screen_getMapName(void); #endif diff --git a/lib/netplay/makefile.win32 b/lib/netplay/makefile.win32 index e0dd66305..8786eb07e 100644 --- a/lib/netplay/makefile.win32 +++ b/lib/netplay/makefile.win32 @@ -10,7 +10,8 @@ SRC= \ netlog.c \ netplay.c \ netqueue.cpp \ - nettypes.cpp + nettypes.cpp \ + netsocket.cpp LIB=netplay diff --git a/lib/netplay/miniupnpc/Makefile.am b/lib/netplay/miniupnpc/Makefile.am index f1b1a086c..3dd93a501 100644 --- a/lib/netplay/miniupnpc/Makefile.am +++ b/lib/netplay/miniupnpc/Makefile.am @@ -27,3 +27,5 @@ libminiupnpc_a_SOURCES = \ upnpcommands.c \ minissdpc.c \ upnperrors.c + +EXTRA_DIST = LICENCE README diff --git a/lib/netplay/netlog.c b/lib/netplay/netlog.c index f04d8e984..a5f73be7f 100644 --- a/lib/netplay/netlog.c +++ b/lib/netplay/netlog.c @@ -74,6 +74,7 @@ BOOL NETstopLogging(void) static const char dash_line[] = "-----------------------------------------------------------\n"; char buf[256]; int i; + UDWORD totalBytessent = 0, totalBytesrecv = 0, totalPacketsent = 0, totalPacketrecv = 0; if (!pFileHandle) { @@ -83,13 +84,40 @@ BOOL NETstopLogging(void) /* Output stats */ for (i = 0; i < NUM_GAME_PACKETS; i++) { - snprintf(buf, sizeof(buf), "%s: received %u times, %u bytes; sent %u times, %u bytes\n", messageTypeToString(i), + snprintf(buf, sizeof(buf), "%-24s:\t received %u times, %u bytes; sent %u times, %u bytes\n", messageTypeToString(i), packetcount[0][i], packetsize[0][i], packetcount[1][i], packetsize[1][i]); PHYSFS_write(pFileHandle, buf, strlen(buf), 1); + totalBytessent += packetsize[1][i]; + totalBytesrecv += packetsize[0][i]; + totalPacketsent += packetcount[0][i]; + totalPacketrecv += packetcount[1][i]; } + snprintf(buf, sizeof(buf), "== Total bytes sent %u, Total bytes received %u ==\n", totalBytessent, totalBytesrecv); + PHYSFS_write(pFileHandle, buf, strlen(buf), 1); + snprintf(buf, sizeof(buf), "== Total packets sent %u, recv %u ==\n", totalPacketsent, totalPacketrecv); + PHYSFS_write(pFileHandle, buf, strlen(buf), 1); snprintf(buf, sizeof(buf), "\n-Sync statistics -\n"); PHYSFS_write(pFileHandle, buf, strlen(buf), 1); PHYSFS_write(pFileHandle, dash_line, strlen(dash_line), 1); + snprintf(buf, sizeof(buf), "joins: %hhu, kicks: %hhu, drops: %hhu, left %hhu\n", sync_counter.joins, sync_counter.kicks, sync_counter.drops, sync_counter.left ); + PHYSFS_write(pFileHandle, buf, strlen(buf), 1); + snprintf(buf, sizeof(buf), "banned: %hhu, cantjoin: %hhu, rejected: %hhu\n", sync_counter.banned, sync_counter.cantjoin, sync_counter.rejected ); + PHYSFS_write(pFileHandle, buf, strlen(buf), 1); + if (sync_counter.banned && IPlist) + { + snprintf(buf, sizeof(buf), "Banned list:\n"); + PHYSFS_write(pFileHandle, buf, strlen(buf), 1); + for (i = 0; i < MAX_BANS; i++) + { + if (IPlist[i].IPAddress[0] != '\0') + { + snprintf(buf, sizeof(buf), "player %s, IP: %s\n", IPlist[i].pname, IPlist[i].IPAddress); + PHYSFS_write(pFileHandle, buf, strlen(buf), 1); + } + } + + } + PHYSFS_write(pFileHandle, dash_line, strlen(dash_line), 1); snprintf(buf, sizeof(buf), "sent/unsent DroidCheck %"PRIu64" / %"PRIu64"\n", sync_counter.sentDroidCheck, sync_counter.unsentDroidCheck); PHYSFS_write(pFileHandle, buf, strlen(buf), 1); snprintf(buf, sizeof(buf), "sent/unsent StructureCheck %"PRIu64" / %"PRIu64"\n", sync_counter.sentStructureCheck, sync_counter.unsentStructureCheck); @@ -133,17 +161,10 @@ BOOL NETlogEntry(const char *str,UDWORD a,UDWORD b) return false; } -#ifndef MASSIVELOGS - if(a ==9 || a==10) - { - return true; - } -#endif + time( &aclock ); /* Get time in seconds */ + newtime = localtime( &aclock ); /* Convert time to struct */ - time( &aclock ); /* Get time in seconds */ - newtime = localtime( &aclock ); /* Convert time to struct */ - - if (!newtime || a >= NET_GAME_FLAGS || !str || !pFileHandle) + if (!newtime || !str || !pFileHandle) { debug(LOG_ERROR, "Fatal error averted in NETlog"); return false; @@ -155,25 +176,28 @@ BOOL NETlogEntry(const char *str,UDWORD a,UDWORD b) static const char dash_line[] = "-----------------------------------------------------------\n"; lastframe = frame; - PHYSFS_write(pFileHandle, dash_line, strlen(dash_line), 1); } - if (a <= 51) + if (a < NUM_GAME_PACKETS) // replace common msgs with txt descriptions snprintf(buf, sizeof(buf), "%s \t: %s \t:%d\t\t%s", str, messageTypeToString(a), b, asctime(newtime)); + else if (a == SYNC_FLAG) + snprintf(buf, sizeof(buf), "%s \t: %d \t(Sync) \t%s", str, b, asctime(newtime)); else snprintf(buf, sizeof(buf), "%s \t:%d \t\t\t:%d\t\t%s", str, a, b, asctime(newtime)); - if (a == 56 || a==57 ) // NET_PLAYER_LEAVING || NET_PLAYER_DROPPED + if (a == NET_PLAYER_LEAVING || a == NET_PLAYER_DROPPED ) + { // Write a starry line above NET_LEAVING messages PHYSFS_write(pFileHandle, star_line, strlen(star_line), 1); - - PHYSFS_write(pFileHandle, buf, strlen( buf ), 1); - - if (a == 56 || a== 57 ) // NET_PLAYER_LEAVING ||NET_PLAYER_DROPPED - // Write a starry line below NET_LEAVING messages + PHYSFS_write(pFileHandle, buf, strlen( buf ), 1); PHYSFS_write(pFileHandle, star_line, strlen(star_line), 1); + } + else + { + PHYSFS_write(pFileHandle, buf, strlen( buf ), 1); + } PHYSFS_flush(pFileHandle); return true; diff --git a/lib/netplay/netplay.c b/lib/netplay/netplay.c index dda723662..8ddd318ed 100644 --- a/lib/netplay/netplay.c +++ b/lib/netplay/netplay.c @@ -77,6 +77,8 @@ static void NETregisterServer(int state); static void NETallowJoining(void); static void NET_InitPlayer(int i, bool initPosition); static void recvDebugSync(NETQUEUE queue); +static bool onBanList(const char *ip); +static void addToBanList(const char *ip, const char *name); /* * Network globals, these are part of the new network API @@ -104,7 +106,7 @@ typedef struct // Variables NETPLAY NetPlay; - +PLAYER_IP *IPlist = NULL; static BOOL allow_joining = false; static bool server_not_there = false; static GAMESTRUCT gamestruct; @@ -135,7 +137,7 @@ static struct IGDdatas data; // local ip address static char lanaddr[16]; - +static char clientAddress[40] = { '\0' }; /** * Used for connections with clients. */ @@ -175,6 +177,7 @@ void NETGameLocked( bool flag) { NetPlay.GamePassworded = flag; gamestruct.privateGame = flag; + NETlogEntry("Password is", SYNC_FLAG, NetPlay.GamePassworded); debug(LOG_NET, "Passworded game is %s", NetPlay.GamePassworded ? "TRUE" : "FALSE" ); } @@ -216,6 +219,7 @@ static size_t NET_fillBuffer(Socket **pSocket, SocketSet* socket_set, uint8_t *b if (size == 0) { debug(LOG_NET, "Connection closed from the other side"); + NETlogEntry("Connection closed from the other side..", SYNC_FLAG, selectedPlayer); } else { @@ -233,10 +237,12 @@ static size_t NET_fillBuffer(Socket **pSocket, SocketSet* socket_set, uint8_t *b if (size > bufsize) { debug(LOG_ERROR, "Fatal connection error: buffer size of (%d) was too small, current byte count was %zd", bufsize, size); + NETlogEntry("Fatal connection error: buffer size was too small!", SYNC_FLAG, selectedPlayer); } if (tcp_socket == socket) { debug(LOG_NET, "Host connection was lost!"); + NETlogEntry("Host connection was lost!", SYNC_FLAG, selectedPlayer); tcp_socket = NULL; //Game is pretty much over --should just end everything when HOST dies. NetPlay.isHostAlive = false; @@ -289,6 +295,7 @@ void NET_InitPlayers() static void NETSendPlayerInfoTo(uint32_t index, unsigned to) { debug(LOG_NET, "sending player's (%u) info to all players", index); + NETlogEntry(" sending player's info to all players", SYNC_FLAG, index); NETbeginEncode(NETnetQueue(to), NET_PLAYER_INFO); NETuint32_t(&index); NETbool(&NetPlay.players[index].allocated); @@ -318,21 +325,25 @@ static signed int NET_CreatePlayer(const char* name) if (NetPlay.players[index].allocated == false) { debug(LOG_NET, "A new player has been created. Player, %s, is set to slot %u", name, index); + NETlogEntry("A new player has been created.", SYNC_FLAG, index); + NET_InitPlayer(index, false); // re-init everything NetPlay.players[index].allocated = true; sstrcpy(NetPlay.players[index].name, name); - NETBroadcastPlayerInfo(index); NetPlay.playercount++; + sync_counter.joins++; return index; } } debug(LOG_ERROR, "Could not find place for player %s", name); + NETlogEntry("Could not find a place for player!", SYNC_FLAG, index); return -1; } static void NET_DestroyPlayer(unsigned int index) { debug(LOG_NET, "Freeing slot %u for a new player", index); + NETlogEntry("Freeing slot for a new player.", SYNC_FLAG, index); if (NetPlay.players[index].allocated) { NetPlay.players[index].allocated = false; @@ -361,6 +372,7 @@ static void NETplayerClientDisconnect(uint32_t index) NETplayerLeaving(index); + NETlogEntry("Player has left unexpectedly.", SYNC_FLAG, index); // Announce to the world. This was really icky, because we may have been calling the send // function recursively. We really ought to have had a send queue, and now we finally do... NETbeginEncode(NETbroadcastQueue(), NET_PLAYER_DROPPED); @@ -383,6 +395,7 @@ static void NETplayerLeaving(UDWORD index) if(connected_bsocket[index]) { debug(LOG_NET, "Player (%u) has left, closing socket %p", index, connected_bsocket[index]); + NETlogEntry("Player has left nicely.", SYNC_FLAG, index); // Although we can get a error result from DelSocket, it don't really matter here. SocketSet_DelSocket(socket_set, connected_bsocket[index]); @@ -393,7 +406,7 @@ static void NETplayerLeaving(UDWORD index) { debug(LOG_NET, "Player (%u) has left nicely, socket already closed?", index); } - + sync_counter.left++; MultiPlayerLeave(index); // more cleanup NET_DestroyPlayer(index); // sets index player's array to false } @@ -412,6 +425,7 @@ static void NETplayerDropped(UDWORD index) NETuint32_t(&id); NETend(); debug(LOG_INFO, "sending NET_PLAYER_DROPPED for player %d", id); + sync_counter.drops++; NET_DestroyPlayer(id); // just clears array MultiPlayerLeave(id); // more cleanup @@ -427,6 +441,9 @@ void NETplayerKicked(UDWORD index) // kicking a player counts as "leaving nicely", since "nicely" in this case // simply means "there wasn't a connection error." debug(LOG_INFO, "Player %u was kicked.", index); + sync_counter.kicks++; + NETlogEntry("Player was kicked.", SYNC_FLAG, index); + addToBanList(NetPlay.players[index].IPtextAddress, NetPlay.players[index].name); NETplayerLeaving(index); // need to close socket for the player that left. NET_PlayerConnectionStatus = 1; // LEAVING_NICELY } @@ -441,7 +458,7 @@ BOOL NETchangePlayerName(UDWORD index, char *newName) return true; } debug(LOG_NET, "Requesting a change of player name for pid=%u to %s", index, newName); - + NETlogEntry("Player wants a name change.", SYNC_FLAG, index); sstrcpy(NetPlay.players[index].name, newName); NETBroadcastPlayerInfo(index); @@ -805,6 +822,11 @@ static bool NETrecvGAMESTRUCT(GAMESTRUCT* ourgamestruct) ourgamestruct->future4 = ntoh32(*(uint32_t*)buffer); buffer += sizeof(uint32_t); + // cat the modstring (if there is one) to the version string to display it for the end-user + if (ourgamestruct->modlist[0] != '\0') + { + ssprintf(ourgamestruct->versionstring, "%s, Mods:%s", ourgamestruct->versionstring, ourgamestruct->modlist); + } debug(LOG_NET, "received GAMESTRUCT"); return true; @@ -940,6 +962,7 @@ int NETinit(BOOL bFirstCall) UDWORD i; debug(LOG_NET, "NETinit"); + NETlogEntry("NETinit!", SYNC_FLAG, selectedPlayer); NET_InitPlayers(); SOCKETinit(); @@ -976,8 +999,11 @@ int NETinit(BOOL bFirstCall) int NETshutdown(void) { debug( LOG_NET, "NETshutdown" ); - + NETlogEntry("NETshutdown", SYNC_FLAG, selectedPlayer); NETstopLogging(); + if (IPlist) + free(IPlist); + IPlist = NULL; SOCKETshutdown(); @@ -1181,6 +1207,7 @@ BOOL NETsend(uint8_t player, NETMESSAGE message) { // Write error, most likely client disconnect. debug(LOG_ERROR, "Failed to send message: %s", strSockError(getSockErr())); + NETlogEntry("client disconnect?", SYNC_FLAG, player); NETplayerClientDisconnect(player); } } @@ -1207,6 +1234,7 @@ BOOL NETsend(uint8_t player, NETMESSAGE message) // Write error, most likely host disconnect. debug(LOG_ERROR, "Failed to send message: %s", strSockError(getSockErr())); debug(LOG_ERROR, "Host connection was broken, socket %p.", tcp_socket); + NETlogEntry("write error--client disconnect.", SYNC_FLAG, player); SocketSet_DelSocket(socket_set, tcp_socket); // mark it invalid socketClose(tcp_socket); tcp_socket = NULL; @@ -1808,6 +1836,7 @@ UBYTE NETrecvFile(NETQUEUE queue) if (currPos+bytesRead == fileSize) // last packet { PHYSFS_close(NetPlay.pMapFileHandle); + NetPlay.pMapFileHandle = NULL; } //return the percentage count @@ -2107,7 +2136,7 @@ static void NETallowJoining(void) { debug(LOG_NET, "Client socket encountered error: %s", strSockError(getSockErr())); } - + NETlogEntry("Client socket disconnected (allowJoining)", SYNC_FLAG, i); debug(LOG_NET, "freeing temp socket %p (%d)", tmp_socket[i], __LINE__); SocketSet_DelSocket(tmp_socket_set, tmp_socket[i]); socketClose(tmp_socket[i]); @@ -2131,6 +2160,20 @@ static void NETallowJoining(void) char GamePassword[password_string_size] = { '\0' }; int32_t Hash_Data = 0; // Not currently used + if (onBanList(clientAddress)) + { + char buf[256] = {'\0'}; + + ssprintf(buf, "** A player that you have kicked tried to rejoin the game, and was rejected. IP:%s", clientAddress ); + debug(LOG_INFO, buf); + NETlogEntry(buf, SYNC_FLAG, i); + SocketSet_DelSocket(tmp_socket_set, tmp_socket[i]); + socketClose(tmp_socket[i]); + tmp_socket[i] = NULL; + sync_counter.rejected++; + return; + } + NETbeginDecode(NETnetTmpQueue(i), NET_JOIN); NETstring(name, sizeof(name)); NETint32_t(&MajorVersion); // NETCODE_VERSION_MAJOR @@ -2150,12 +2193,13 @@ static void NETallowJoining(void) SocketSet_DelSocket(tmp_socket_set, tmp_socket[i]); socketClose(tmp_socket[i]); tmp_socket[i] = NULL; + sync_counter.cantjoin++; return; } index = tmp; - debug(LOG_NET, "freeing temp socket %p (%d)", tmp_socket[i], __LINE__); + debug(LOG_NET, "freeing temp socket %p (%d), creating permanent socket.", tmp_socket[i], __LINE__); SocketSet_DelSocket(tmp_socket_set, tmp_socket[i]); connected_bsocket[index] = tmp_socket[i]; tmp_socket[i] = NULL; @@ -2186,6 +2230,7 @@ static void NETallowJoining(void) if (rejected) { debug(LOG_INFO, "We were rejected, reason (%u)", (unsigned int) rejected); + //NETlogEntry(buf, SYNC_FLAG, index); // buf undeclared in newnet branch. NETbeginEncode(NETnetQueue(index), NET_REJECTED); NETuint8_t(&rejected); NETend(); @@ -2200,6 +2245,16 @@ static void NETallowJoining(void) return; } + sstrcpy(NetPlay.players[index].IPtextAddress, clientAddress); + { + char buf[250] = {'\0'}; + snprintf(buf, sizeof(buf), "Player %d has joined, IP is:%s", index, clientAddress); + NETlogEntry(buf, SYNC_FLAG, index); + } + + // Broadcast to everyone that a new player has joined + NETBroadcastPlayerInfo(index); // Should this be in newnet? + NETbeginEncode(NETnetQueue(index), NET_ACCEPTED); NETuint8_t(&index); NETend(); @@ -2304,7 +2359,12 @@ BOOL NEThostGame(const char* SessionName, const char* PlayerName, } NetPlay.isHost = true; - + NETlogEntry("Hosting game, resetting ban list.", SYNC_FLAG, 0); + if (IPlist) + { + free(IPlist); + IPlist = NULL; + } sstrcpy(gamestruct.name, SessionName); memset(&gamestruct.desc, 0, sizeof(gamestruct.desc)); gamestruct.desc.dwSize = sizeof(gamestruct.desc); @@ -2320,11 +2380,6 @@ BOOL NEThostGame(const char* SessionName, const char* PlayerName, memset(gamestruct.secondaryHosts, 0, sizeof(gamestruct.secondaryHosts)); sstrcpy(gamestruct.extra, "Extra"); // extra string (future use) sstrcpy(gamestruct.versionstring, VersionString); // version (string) - if (*getModList()) - { - sstrcat(gamestruct.versionstring, _(", mods: ")); // version (string) - sstrcat(gamestruct.versionstring, getModList()); // version (string) - } sstrcpy(gamestruct.modlist, getModList()); // List of mods gamestruct.GAMESTRUCT_VERSION = 3; // version of this structure gamestruct.game_version_major = NETCODE_VERSION_MAJOR; // Netcode Major version @@ -2667,19 +2722,17 @@ BOOL NETjoinGame(UDWORD gameNumber, const char* playername) } else if (type == NET_REJECTED) { - // :( uint8_t rejection = 0; NETbeginDecode(queue, NET_REJECTED); - // WRY??? - // And why "wry"? NETuint8_t(&rejection); NETend(); NETpop(queue); - debug(LOG_NET, "NET_REJECTED received. Better luck next time?"); + debug(LOG_NET, "NET_REJECTED received. Error code: %u", (unsigned int) rejection); setLobbyError((LOBBY_ERROR_TYPES)rejection); + NETclose(); } NETpop(queue); @@ -2986,3 +3039,53 @@ const char *messageTypeToString(unsigned messageType_) } return "(INVALID MESSAGE TYPE)"; } + +/** + * Check if ip is on the banned list. + * \param ip IP address converted to text + */ +static bool onBanList(const char *ip) +{ + int i; + + if (!IPlist) return false; //if no bans are added, then don't check. + for(i = 0; i < MAX_BANS ; i++) + { + if (strcmp(ip, IPlist[i].IPAddress) == 0) + { + return true; + } + } + return false; +} + +/** + * Create the banned list. + * \param ip IP address in text format + * \param name Name of the player we are banning + */ +static void addToBanList(const char *ip, const char *name) +{ + static int numBans = 0; + + if (!IPlist) + { + IPlist = malloc(sizeof(PLAYER_IP) * MAX_BANS + 1); + if (!IPlist) + { + debug(LOG_FATAL, "Out of memory!"); + abort(); + } + numBans = 0; + } + memset(IPlist, 0x0, sizeof(PLAYER_IP) * MAX_BANS); + sstrcpy(IPlist[numBans].IPAddress, ip); + sstrcpy(IPlist[numBans].pname, name); + numBans++; + sync_counter.banned++; + if (numBans > MAX_BANS) + { + debug(LOG_INFO, "We have exceeded %d bans, resetting to 0", MAX_BANS); + numBans = 0; + } +} diff --git a/lib/netplay/netplay.h b/lib/netplay/netplay.h index b307238e1..bffdcf9ab 100644 --- a/lib/netplay/netplay.h +++ b/lib/netplay/netplay.h @@ -126,6 +126,8 @@ typedef enum // End of redundant messages. GAME_MAX_TYPE ///< Maximum+1 valid GAME_ type, *MUST* be last. } MESSAGE_TYPES; +//#define SYNC_FLAG (NUM_GAME_PACKETS * NUM_GAME_PACKETS) //special flag used for logging. +#define SYNC_FLAG 0x10000000 //special flag used for logging. (Not sure what this is. Was added in trunk, NUM_GAME_PACKETS not in newnet.) // Constants // @NOTE / FIXME: We need a way to detect what should happen if the msg buffer exceeds this. @@ -198,6 +200,13 @@ typedef struct { uint64_t unsentScoreCheck; uint64_t sentPing; uint64_t unsentPing; + uint16_t kicks; + uint16_t joins; + uint16_t left; + uint16_t drops; + uint16_t cantjoin; + uint16_t banned; + uint16_t rejected; } SYNC_COUNTER; typedef struct @@ -242,6 +251,7 @@ typedef struct BOOL unused_2; ///< for future usage BOOL needFile; ///< if We need a file sent to us WZFile wzFile; ///< for each player, we keep track of map progress + char IPtextAddress[40]; ///< IP of this player } PLAYER; // //////////////////////////////////////////////////////////////////////// @@ -264,11 +274,18 @@ typedef struct { char* MOTD; } NETPLAY; +typedef struct +{ + char pname[40]; + char IPAddress[40]; +} PLAYER_IP; +#define MAX_BANS 255 // //////////////////////////////////////////////////////////////////////// // variables extern NETPLAY NetPlay; extern SYNC_COUNTER sync_counter; +extern PLAYER_IP *IPlist; // update flags extern bool netPlayersUpdated; extern int mapDownloadProgress; diff --git a/lib/netplay/netplay.vcproj b/lib/netplay/netplay.vcproj index 148a6e1d7..a934935c7 100644 --- a/lib/netplay/netplay.vcproj +++ b/lib/netplay/netplay.vcproj @@ -165,6 +165,10 @@ RelativePath=".\netqueue.cpp" > + + @@ -301,6 +305,10 @@ RelativePath=".\netplay.h" > + + diff --git a/lib/netplay/netsocket.cpp b/lib/netplay/netsocket.cpp index 69160676e..eaa7f7be4 100644 --- a/lib/netplay/netsocket.cpp +++ b/lib/netplay/netsocket.cpp @@ -63,7 +63,9 @@ # include typedef int SOCKET; static const SOCKET INVALID_SOCKET = -1; -#elif defined(WZ_OS_WIN) +#endif + +#ifdef WZ_OS_WIN # include # include # undef EAGAIN @@ -82,7 +84,6 @@ static const SOCKET INVALID_SOCKET = -1; # define EISCONN WSAEISCONN # define ETIMEDOUT WSAETIMEDOUT # define EWOULDBLOCK WSAEWOULDBLOCK -typedef SSIZE_T ssize_t; # ifndef AI_V4MAPPED # define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */ # endif @@ -158,13 +159,16 @@ void setSockErr(int error) } #if defined(WZ_OS_WIN) +typedef int (WINAPI * GETADDRINFO_DLL_FUNC)(const char *node, const char *service, + const struct addrinfo *hints, + struct addrinfo **res); +typedef int (WINAPI * FREEADDRINFO_DLL_FUNC)(struct addrinfo *res); + static HMODULE winsock2_dll = NULL; static unsigned int major_windows_version = 0; -static int (WINAPI * getaddrinfo_dll_func)(const char *node, const char *service, - const struct addrinfo *hints, - struct addrinfo **res) = NULL; -static int (WINAPI * freeaddrinfo_dll_func)(struct addrinfo *res) = NULL; +static GETADDRINFO_DLL_FUNC getaddrinfo_dll_func = NULL; +static FREEADDRINFO_DLL_FUNC freeaddrinfo_dll_func = NULL; # define getaddrinfo getaddrinfo_dll_dispatcher # define freeaddrinfo freeaddrinfo_dll_dispatcher @@ -517,7 +521,7 @@ ssize_t readNoInt(Socket* sock, void* buf, size_t max_size) do { - received = recv(sock->fd[SOCK_CONNECTION], buf, max_size, 0); + received = recv(sock->fd[SOCK_CONNECTION], (char*)buf, max_size, 0); } while (received == SOCKET_ERROR && getSockErr() == EINTR); sock->ready = false; @@ -879,7 +883,7 @@ Socket *socketAccept(Socket *sock) sock->ready = false; addressToText((const struct sockaddr*)&addr, conn->textAddress, sizeof(conn->textAddress)); - debug(LOG_NET, "Incoming connection from [%s]:%d", conn->textAddress, (unsigned int)ntohs(((const struct sockaddr_in*)&addr)->sin_port)); + debug(LOG_NET, "Incoming connection from [%s]:/*%%d*/ (FIXME: gives strict-aliasing error)", conn->textAddress/*, (unsigned int)ntohs(((const struct sockaddr_in*)&addr)->sin_port)*/); debug(LOG_NET, "Using socket %p", conn); return conn; } @@ -1080,7 +1084,7 @@ Socket *socketListen(unsigned int port) #if defined(IPV6_V6ONLY) if (conn->fd[SOCK_IPV6_LISTEN] != INVALID_SOCKET) { - if (setsockopt(conn->fd[SOCK_IPV6_LISTEN], IPPROTO_IPV6, IPV6_V6ONLY, &ipv6_v6only, sizeof(ipv6_v6only)) == SOCKET_ERROR) + if (setsockopt(conn->fd[SOCK_IPV6_LISTEN], IPPROTO_IPV6, IPV6_V6ONLY, (char*)&ipv6_v6only, sizeof(ipv6_v6only)) == SOCKET_ERROR) { debug(LOG_INFO, "Failed to set IPv6 socket to perform IPv4 to IPv6 mapping. Falling back to using two sockets. Error: %s", strSockError(getSockErr())); } @@ -1099,7 +1103,7 @@ Socket *socketListen(unsigned int port) if (conn->fd[SOCK_IPV4_LISTEN] != INVALID_SOCKET) { - if (setsockopt(conn->fd[SOCK_IPV4_LISTEN], SOL_SOCKET, SO_REUSEADDR, &so_reuseaddr, sizeof(so_reuseaddr)) == SOCKET_ERROR) + if (setsockopt(conn->fd[SOCK_IPV4_LISTEN], SOL_SOCKET, SO_REUSEADDR, (char*)&so_reuseaddr, sizeof(so_reuseaddr)) == SOCKET_ERROR) { debug(LOG_WARNING, "Failed to set SO_REUSEADDR on IPv4 socket. Error: %s", strSockError(getSockErr())); } @@ -1121,7 +1125,7 @@ Socket *socketListen(unsigned int port) if (conn->fd[SOCK_IPV6_LISTEN] != INVALID_SOCKET) { - if (setsockopt(conn->fd[SOCK_IPV6_LISTEN], SOL_SOCKET, SO_REUSEADDR, &so_reuseaddr, sizeof(so_reuseaddr)) == SOCKET_ERROR) + if (setsockopt(conn->fd[SOCK_IPV6_LISTEN], SOL_SOCKET, SO_REUSEADDR, (char*)&so_reuseaddr, sizeof(so_reuseaddr)) == SOCKET_ERROR) { debug(LOG_INFO, "Failed to set SO_REUSEADDR on IPv6 socket. Error: %s", strSockError(getSockErr())); } @@ -1248,14 +1252,14 @@ void SOCKETinit() if (WSAStartup(ver_required, &stuff) != 0) { debug(LOG_ERROR, "Failed to initialize Winsock: %s", strSockError(getSockErr())); - return -1; + return; } winsock2_dll = LoadLibraryA("ws2_32.dll"); if (winsock2_dll) { - getaddrinfo_dll_func = GetProcAddress(winsock2_dll, "getaddrinfo"); - freeaddrinfo_dll_func = GetProcAddress(winsock2_dll, "freeaddrinfo"); + getaddrinfo_dll_func = (GETADDRINFO_DLL_FUNC) GetProcAddress(winsock2_dll, "getaddrinfo"); + freeaddrinfo_dll_func = (FREEADDRINFO_DLL_FUNC) GetProcAddress(winsock2_dll, "freeaddrinfo"); } // Determine major Windows version diff --git a/lib/netplay/netsocket.h b/lib/netplay/netsocket.h index c68285bb7..171228f7c 100644 --- a/lib/netplay/netsocket.h +++ b/lib/netplay/netsocket.h @@ -32,7 +32,9 @@ typedef struct Socket Socket; typedef struct SocketSet SocketSet; typedef struct addrinfo SocketAddress; +#ifndef WZ_OS_WIN static const int SOCKET_ERROR = -1; +#endif // Init/shutdown. diff --git a/lib/script/stack.h b/lib/script/stack.h index ecf0e3d9e..32d12260e 100644 --- a/lib/script/stack.h +++ b/lib/script/stack.h @@ -25,6 +25,8 @@ #ifndef _stack_h #define _stack_h +#include "interpreter.h" + #ifdef __cplusplus extern "C" { diff --git a/lib/sequence/sequence.c b/lib/sequence/sequence.c index 0b4e547e1..24f1f7cdf 100644 --- a/lib/sequence/sequence.c +++ b/lib/sequence/sequence.c @@ -56,6 +56,8 @@ */ #include +#include "lib/framework/frame.h" +#include "lib/framework/frameint.h" #include "sequence.h" #include "timer.h" #include "lib/framework/math_ext.h" @@ -165,8 +167,10 @@ static int frames = 0; static int dropped = 0; // Screen dimensions -static int ScrnvidXsize = 0; -static int ScrnvidYsize = 0; +static int videoX1 = 0; +static int videoX2 = 0; +static int videoY1 = 0; +static int videoY2 = 0; static int ScrnvidXpos = 0; static int ScrnvidYpos = 0; @@ -341,13 +345,13 @@ static void video_write(bool update) glTranslatef(ScrnvidXpos, ScrnvidYpos, 0.0f); glBegin(GL_TRIANGLE_STRIP); glTexCoord2f(0, 0); - glVertex2f(0, 0); + glVertex2f(videoX1, videoY1); glTexCoord2f((float) video_width / texture_width, 0); - glVertex2f(ScrnvidXsize, 0); //screenWidth + glVertex2f(videoX2, videoY1); //screenWidth glTexCoord2f(0, (float) video_height / texture_height); - glVertex2f(0, ScrnvidYsize); //screenHeight + glVertex2f(videoX1, videoY2); //screenHeight glTexCoord2f((float) video_width / texture_width, (float) video_height / texture_height); - glVertex2f(ScrnvidXsize, ScrnvidYsize); //screenWidth,screenHeight + glVertex2f(videoX2, videoY2); //screenWidth,screenHeight glEnd(); glPopMatrix(); @@ -420,7 +424,7 @@ static void seq_InitOgg(void) { debug(LOG_VIDEO, "seq_InitOgg"); - ASSERT((ScrnvidXsize && ScrnvidYsize), "Screen dimensions not specified!"); + ASSERT((videoX2 && videoY2), "Screen dimensions not specified!"); stateflag = false; theora_p = 0; @@ -966,8 +970,31 @@ int seq_GetFrameNumber() // this controls the size of the video to display on screen void seq_SetDisplaySize(int sizeX, int sizeY, int posX, int posY) { - ScrnvidXsize = sizeX; - ScrnvidYsize = sizeY; + videoX1 = 0; + videoY1 = 0; + videoX2 = sizeX; + videoY2 = sizeY; + + if (sizeX > 640 || sizeY > 480) + { + const float aspect = screenWidth / (float)screenHeight, videoAspect = 4 / (float)3; + + if (aspect > videoAspect) + { + int offset = (screenWidth - screenHeight * videoAspect) / 2; + videoX1 += offset; + videoX2 -= offset; + } + else + { + int offset = (screenHeight - screenWidth / videoAspect) / 2; + videoY1 += offset; + videoY2 -= offset; + } + + + } + ScrnvidXpos = posX; ScrnvidYpos = posY; } diff --git a/lib/sound/audio.c b/lib/sound/audio.c index b767895e5..0d741ddb6 100644 --- a/lib/sound/audio.c +++ b/lib/sound/audio.c @@ -555,9 +555,14 @@ void audio_Update() { return; } + +#ifndef WZ_NOSOUND alGetError(); // clear error codes +#endif audio_UpdateQueue(); +#ifndef WZ_NOSOUND alGetError(); // clear error codes +#endif // get player position playerPos = audio_GetPlayerPos(); audio_Get3DPlayerRotAboutVerticalAxis(&angle); @@ -693,10 +698,12 @@ static BOOL audio_Play3DTrack( SDWORD iX, SDWORD iY, SDWORD iZ, int iTrack, void //~~~~~~~~~~~~~~~~~~~~~~ AUDIO_SAMPLE *psSample; // coordinates - float listenerX, listenerY, listenerZ, dX, dY, dZ; + float listenerX = .0f, listenerY = .0f, listenerZ = .0f, dX, dY, dZ; // calculation results float distance, gain, sfx3d_volume; +#ifndef WZ_NOSOUND ALenum err; +#endif //~~~~~~~~~~~~~~~~~~~~~~ // if audio not enabled return true to carry on game without audio @@ -712,12 +719,14 @@ static BOOL audio_Play3DTrack( SDWORD iX, SDWORD iY, SDWORD iZ, int iTrack, void // compute distance // NOTE, if this call fails, expect garbage +#ifndef WZ_NOSOUND alGetListener3f(AL_POSITION, &listenerX, &listenerY, &listenerZ); err = sound_GetError(); if (err != AL_NO_ERROR) { return false; } +#endif dX = (float)iX - listenerX; // distances on all axis dY = (float)iY - listenerY; dZ = (float)iZ - listenerZ; diff --git a/lib/widget/form.c b/lib/widget/form.c index 77ed2641a..cededcf03 100644 --- a/lib/widget/form.c +++ b/lib/widget/form.c @@ -49,49 +49,14 @@ typedef struct _tab_pos /* Set default colours for a form */ static void formSetDefaultColours(W_FORM *psForm) { - static BOOL bDefaultsSet = false; - static PIELIGHT wcol_bkgrnd; - static PIELIGHT wcol_text; - static PIELIGHT wcol_light; - static PIELIGHT wcol_dark; - static PIELIGHT wcol_hilite; - static PIELIGHT wcol_cursor; - static PIELIGHT wcol_tipbkgrnd; - static PIELIGHT wcol_disable; - - if (bDefaultsSet) - { - psForm->aColours[WCOL_BKGRND] = wcol_bkgrnd; - psForm->aColours[WCOL_TEXT] = wcol_text; - psForm->aColours[WCOL_LIGHT] = wcol_light; - psForm->aColours[WCOL_DARK] = wcol_dark; - psForm->aColours[WCOL_HILITE] = wcol_hilite; - psForm->aColours[WCOL_CURSOR] = wcol_cursor; - psForm->aColours[WCOL_TIPBKGRND] = wcol_tipbkgrnd; - psForm->aColours[WCOL_DISABLE] = wcol_disable; - } - else - { - wcol_bkgrnd = pal_Colour(0x7f, 0x7f, 0x7f); - wcol_text = WZCOL_WHITE; - wcol_light = WZCOL_WHITE; - wcol_dark = WZCOL_BLACK; - wcol_hilite = pal_Colour(0x40, 0x40, 0x40); - wcol_cursor = pal_Colour(0xff, 0x00, 0x00); - wcol_tipbkgrnd = pal_Colour(0x30, 0x30, 0x60); - wcol_disable = pal_Colour(0xbf, 0xbf, 0xbf); - - bDefaultsSet = true; - - psForm->aColours[WCOL_BKGRND] = wcol_bkgrnd; - psForm->aColours[WCOL_TEXT] = wcol_text; - psForm->aColours[WCOL_LIGHT] = wcol_light; - psForm->aColours[WCOL_DARK] = wcol_dark; - psForm->aColours[WCOL_HILITE] = wcol_hilite; - psForm->aColours[WCOL_CURSOR] = wcol_cursor; - psForm->aColours[WCOL_TIPBKGRND] = wcol_tipbkgrnd; - psForm->aColours[WCOL_DISABLE] = wcol_disable; - } + psForm->aColours[WCOL_BKGRND] = WZCOL_FORM_BACKGROUND; + psForm->aColours[WCOL_TEXT] = WZCOL_FORM_TEXT; + psForm->aColours[WCOL_LIGHT] = WZCOL_FORM_LIGHT; + psForm->aColours[WCOL_DARK] = WZCOL_FORM_DARK; + psForm->aColours[WCOL_HILITE] = WZCOL_FORM_HILITE; + psForm->aColours[WCOL_CURSOR] = WZCOL_FORM_CURSOR; + psForm->aColours[WCOL_TIPBKGRND] = WZCOL_FORM_TIP_BACKGROUND; + psForm->aColours[WCOL_DISABLE] = WZCOL_FORM_DISABLE; } /* Create a plain form widget */ @@ -695,26 +660,13 @@ void widgGetTabs(W_SCREEN *psScreen, UDWORD id, UWORD *pMajor, UWORD *pMinor) /* Set a colour on a form */ -void widgSetColour(W_SCREEN *psScreen, UDWORD id, UDWORD colour, - UBYTE red, UBYTE green, UBYTE blue) +void widgSetColour(W_SCREEN *psScreen, UDWORD id, UDWORD index, PIELIGHT colour) { - W_TABFORM *psForm; + W_TABFORM *psForm = (W_TABFORM *)widgGetFromID(psScreen, id); - psForm = (W_TABFORM *)widgGetFromID(psScreen, id); - if (psForm == NULL || psForm->type != WIDG_FORM) - { - ASSERT( false,"widgSetColour: couldn't find form from id" ); - return; - } - ASSERT( psForm != NULL, - "widgSetColour: Invalid tab form pointer" ); - - if (colour >= WCOL_MAX) - { - ASSERT( false, "widgSetColour: Colour id out of range" ); - return; - } - psForm->aColours[colour] = pal_Colour(red,green,blue); + ASSERT_OR_RETURN(, psForm && psForm->type == WIDG_FORM, "Could not find form from id %u", id); + ASSERT_OR_RETURN(, index < WCOL_MAX, "Colour id %u out of range", index); + psForm->aColours[index] = colour; } diff --git a/lib/widget/form.h b/lib/widget/form.h index 052a77b34..754654945 100644 --- a/lib/widget/form.h +++ b/lib/widget/form.h @@ -39,7 +39,7 @@ extern "C" UWORD Ax0,Ay0,Ax1,Ay1; /* Working coords for animations. */ \ UDWORD animCount; /* Animation counter. */ \ UDWORD startTime; /* Animation start time */ \ - PIELIGHT aColours[WCOL_MAX]; /* Colours for the form and its widgets. signed since aColours -1 means use bitmap. */ \ + PIELIGHT aColours[WCOL_MAX]; /* Colours for the form and its widgets */ \ WIDGET *psLastHiLite; /* The last widget to be hilited */ \ /* This is used to track when the mouse moves */ \ /* off something */ \ diff --git a/lib/widget/widget.h b/lib/widget/widget.h index b4794da14..b41b0efa3 100644 --- a/lib/widget/widget.h +++ b/lib/widget/widget.h @@ -390,8 +390,7 @@ enum _w_colour }; /** Set a colour on a form */ -extern void widgSetColour(W_SCREEN *psScreen, UDWORD id, UDWORD colour, - UBYTE red, UBYTE green, UBYTE blue); +extern void widgSetColour(W_SCREEN *psScreen, UDWORD id, UDWORD index, PIELIGHT colour); /** Set the global toop tip text colour. */ extern void widgSetTipColour(PIELIGHT colour); diff --git a/m4/ax_c_check_flag.m4 b/m4/ax_c_check_flag.m4 new file mode 100644 index 000000000..d96df54ba --- /dev/null +++ b/m4/ax_c_check_flag.m4 @@ -0,0 +1,86 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_c_check_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_C_CHECK_FLAG(FLAG-TO-CHECK,[PROLOGUE],[BODY],[ACTION-IF-SUCCESS],[ACTION-IF-FAILURE]) +# +# DESCRIPTION +# +# This macro tests if the C compiler supports the flag FLAG-TO-CHECK. If +# successfull execute ACTION-IF-SUCCESS otherwise ACTION-IF-FAILURE. +# PROLOGUE and BODY are optional and should be used as in AC_LANG_PROGRAM +# macro. +# +# This code is inspired from KDE_CHECK_COMPILER_FLAG macro. Thanks to +# Bogdan Drozdowski for testing and bug fixes. +# +# LICENSE +# +# Copyright (c) 2008 Francesco Salvestrini +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 6 + +AC_DEFUN([AX_C_CHECK_FLAG],[ + AC_PREREQ([2.61]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_PROG_SED]) + + flag=`echo "$1" | $SED 'y% .=/+-(){}<>:*,%_______________%'` + + AC_CACHE_CHECK([whether the C compiler accepts the $1 flag], + [ax_cv_c_check_flag_$flag],[ + + AC_LANG_PUSH([C]) + + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([$2],[$3]) + ],[ + eval "ax_cv_c_check_flag_$flag=yes" + ],[ + eval "ax_cv_c_check_flag_$flag=no" + ]) + + CFLAGS="$save_CFLAGS" + + AC_LANG_POP + + ]) + + AS_IF([eval "test \"`echo '$ax_cv_c_check_flag_'$flag`\" = yes"],[ + : + $4 + ],[ + : + $5 + ]) +]) diff --git a/m4/ax_ext_check_header.m4 b/m4/ax_ext_check_header.m4 new file mode 100644 index 000000000..75bb3b96b --- /dev/null +++ b/m4/ax_ext_check_header.m4 @@ -0,0 +1,64 @@ +# Heavily modified, to try without any added includes first, and to set a +# HEADER_H_CPPFLAGS variable (for a file called header.h) instead of modifying +# CFLAGS/CPPFLAGS directly. + +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_ext_check_header.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_EXT_CHECK_HEADER(
, ). +# +# DESCRIPTION +# +# Check for
with -I for each path in if need be. +# The first sucecssful path is chosen (eg if you say +# AX_EXT_CHECK_HEADER(foo.h, bar baz qux) and -Ibaz works then -Iqux will +# not be tested. +# +# Any -I flags that locate a header are added to CFLAGS and CPPFLAGS. AS +# with AC_CHECK_HEADERS it causes HAVE_
_H to be defined as 1. +# +# Example: +# +# AX_EXT_HAVE_HEADER(openssl/rsa.h, /usr/local/include /usr/local/ssl/include /usr/local/openssl/include) +# +# LICENSE +# +# Copyright (c) 2008 Duncan Simpson +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 7 + +AC_DEFUN([AX_EXT_HAVE_HEADER], +[AC_LANG_PUSH(C) + got="no" + hdr=`echo $1 | $as_tr_sh` + AC_CACHE_CHECK([for $1], [ext_cv_hashdr_${hdr}], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$1>])], [got="yes"], [got="no"])) + if test "x$got" = "xyes"; then + hdr=`echo $1 | $as_tr_cpp` + eval ${hdr}_CPPFLAGS="" + fi + for dir in $2; do + if test "x${got}" = "xno"; then + ext_hashdr_cvdir=`echo $dir | $as_tr_sh` + AC_CACHE_CHECK([for $1 with -I$dir], [ext_cv${ext_hashdr_cvdir}_hashdr_${hdr}], + [ext_have_hdr_save_cflags=${CFLAGS} CFLAGS="${CFLAGS} -I${dir}" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$1>])], + [got="yes"; eval "ext_cv${ext_hashdr_cvdir}_hashdr_${hdr}"="yes"], + [got="no"; eval "ext_cv${ext_hashdr_cvdir}_hashdr_${hdr}"="no"]) + CFLAGS=$ext_have_hdr_save_cflags]) + if eval `echo 'test x${'ext_cv${ext_hashdr_cvdir}_hashdr_${hdr}'}' = "xyes"`; then + got="yes"; + hdr=`echo $1 | $as_tr_cpp` + eval ${hdr}_CPPFLAGS=-I${dir} + fi + fi + done +AC_LANG_POP]) diff --git a/m4/progversion.m4 b/m4/progversion.m4 index e9d5fa7e3..282e56130 100644 --- a/m4/progversion.m4 +++ b/m4/progversion.m4 @@ -12,7 +12,7 @@ AC_DEFUN([AC_PROG_VERSION_CHECK], [ [ for ac_prog in $1; do - ac_prog_version_check=`$ac_prog --version | head -n 1 | sed 's/([^)]*)//g;s/^[a-zA-Z\.\ \-\/]*//;s/ .*$//'` + ac_prog_version_check=`$ac_prog --version | head -n 1 | sed 's/([^)]*)//g;s/^[-a-zA-Z\.\ \/]*//;s/ .*$//'` ac_prog_major_check=`echo $ac_prog_version_check | cut -d. -f1` ac_prog_minor_check=`echo $ac_prog_version_check | sed s/[-,a-z,A-Z].*// | cut -d. -f2` ac_prog_micro_check=`echo $ac_prog_version_check | sed s/[-,a-z,A-Z].*// | cut -d. -f3` diff --git a/macosx/Resources/Warzone-Info.plist b/macosx/Resources/Warzone-Info.plist index 541955622..dd01c3b35 100644 --- a/macosx/Resources/Warzone-Info.plist +++ b/macosx/Resources/Warzone-Info.plist @@ -36,6 +36,8 @@ SVN_URI, Copyright © 1999-2004 Eidos Interactive, Copyright © 2005-2010 The Warzone 2100 Project LSMinimumSystemVersion 10.4.0 + LSRequiresNativeExecution + UTExportedTypeDeclarations @@ -47,7 +49,7 @@ Warzone 2100 Map / Mod File UTTypeConformsTo - public.zip + public.zip-archive UTTypeTagSpecification @@ -57,6 +59,82 @@ + + UTTypeIdentifier + net.wz2100.wz.mod + UTTypeReferenceURL + http://developer.wz2100.net/wiki/.wz + UTTypeDescription + Warzone 2100 Multiplayer Mod File + UTTypeConformsTo + + net.wz2100.wz + + UTTypeTagSpecification + + public.filename-extension + + mod.wz + + + + + UTTypeIdentifier + net.wz2100.wz.cam + UTTypeReferenceURL + http://developer.wz2100.net/wiki/.wz + UTTypeDescription + Warzone 2100 Campaign Mod File + UTTypeConformsTo + + net.wz2100.wz + + UTTypeTagSpecification + + public.filename-extension + + cam.wz + + + + + UTTypeIdentifier + net.wz2100.wz.gmod + UTTypeReferenceURL + http://developer.wz2100.net/wiki/.wz + UTTypeDescription + Warzone 2100 Global Mod File + UTTypeConformsTo + + net.wz2100.wz + + UTTypeTagSpecification + + public.filename-extension + + gmod.wz + + + + + UTTypeIdentifier + net.wz2100.wz.music + UTTypeReferenceURL + http://developer.wz2100.net/wiki/.wz + UTTypeDescription + Warzone 2100 Music Mod File + UTTypeConformsTo + + net.wz2100.wz + + UTTypeTagSpecification + + public.filename-extension + + music.wz + + + diff --git a/macosx/Resources/ogg/Info.plist b/macosx/Resources/ogg/Info.plist index d07545652..c778c5cbc 100644 --- a/macosx/Resources/ogg/Info.plist +++ b/macosx/Resources/ogg/Info.plist @@ -1,5 +1,5 @@ - + CFBundleDevelopmentRegion @@ -7,7 +7,7 @@ CFBundleExecutable Ogg CFBundleGetInfoString - Ogg framework 1.1.4, Copyright © 1994-2009 Xiph.Org Foundation + Ogg framework 1.2.0, Copyright © 1994-2010 Xiph.Org Foundation CFBundleIconFile CFBundleIdentifier @@ -17,13 +17,13 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.1.4 + Ogg framework 1.2.0 CFBundleSignature ???? CFBundleVersion - 1.1.4 + 1.2.0 NSHumanReadableCopyright - Ogg framework 1.1.4, Copyright © 1994-2009 Xiph.Org Foundation + Copyright © 1994-2010 Xiph.Org Foundation CSResourcesFileMapped diff --git a/macosx/Resources/theora/Info.plist b/macosx/Resources/theora/Info.plist index 8d0d06fdc..c559ff9c3 100644 --- a/macosx/Resources/theora/Info.plist +++ b/macosx/Resources/theora/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable Theora CFBundleGetInfoString - Theora framework 1.1.1, Copyright © 2002-2009Xiph.Org Foundation + Theora framework 1.1.1, Copyright © 2002-2009 Xiph.Org Foundation CFBundleIconFile CFBundleIdentifier @@ -21,9 +21,9 @@ CFBundleVersion 1.1.1 CFBundleShortVersionString - 1.1.1 + Theora framework 1.1.1 NSHumanReadableCopyright - Theora framework 1.1.1, Copyright © 2002-2009Xiph.Org Foundation + Copyright © 2002-2009 Xiph.Org Foundation CSResourcesFileMapped diff --git a/macosx/Resources/vorbis/Info.plist b/macosx/Resources/vorbis/Info.plist index 63e1b09c9..905fc9c7a 100644 --- a/macosx/Resources/vorbis/Info.plist +++ b/macosx/Resources/vorbis/Info.plist @@ -1,5 +1,5 @@ - + CFBundleDevelopmentRegion @@ -7,7 +7,7 @@ CFBundleExecutable Vorbis CFBundleGetInfoString - Vorbis framework 1.2.3, Copyright © 1994-2009 Xiph.Org Foundation + Vorbis framework 1.3.1, Copyright © 1994-2010 Xiph.Org Foundation CFBundleIconFile CFBundleIdentifier @@ -17,13 +17,13 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.2.3 + Vorbis framework 1.3.1 CFBundleSignature ???? CFBundleVersion - 1.2.3 + 1.3.1 NSHumanReadableCopyright - Vorbis framework 1.2.3, Copyright © 1994-2009 Xiph.Org Foundation + Copyright © 1994-2010 Xiph.Org Foundation CSResourcesFileMapped diff --git a/macosx/Resources/wzlocal/English.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/English.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/English.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/English.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/cs.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/cs.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/cs.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/cs.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/da.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/da.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/da.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/da.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/de.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/de.lproj/InfoPlist.strings index 39c232629..7666bfaff 100644 --- a/macosx/Resources/wzlocal/de.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/de.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone-2100-Karten/Mod-Datei"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone-2100-Karten/Mod-Datei"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/en_GB.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/en_GB.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/en_GB.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/en_GB.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/es.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/es.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/es.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/es.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/et_EE.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/et_EE.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/et_EE.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/et_EE.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/fi.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/fi.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/fi.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/fi.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/fr.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/fr.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/fr.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/fr.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/fy.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/fy.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/fy.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/fy.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/ga.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/ga.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/ga.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/ga.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/hr.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/hr.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/hr.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/hr.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/it.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/it.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/it.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/it.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/la.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/la.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/la.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/la.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/lt.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/lt.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/lt.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/lt.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/nb.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/nb.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/nb.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/nb.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/nl.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/nl.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/nl.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/nl.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/pl.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/pl.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/pl.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/pl.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/pt.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/pt.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/pt.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/pt.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/pt_BR.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/pt_BR.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/pt_BR.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/pt_BR.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/ro.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/ro.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/ro.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/ro.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/ru.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/ru.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/ru.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/ru.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/sl.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/sl.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/sl.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/sl.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/uk_UA.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/uk_UA.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/uk_UA.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/uk_UA.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/zh_CN.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/zh_CN.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/zh_CN.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/zh_CN.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/Resources/wzlocal/zh_TW.lproj/InfoPlist.strings b/macosx/Resources/wzlocal/zh_TW.lproj/InfoPlist.strings index 13692f958..b71ff31b0 100644 --- a/macosx/Resources/wzlocal/zh_TW.lproj/InfoPlist.strings +++ b/macosx/Resources/wzlocal/zh_TW.lproj/InfoPlist.strings @@ -2,10 +2,28 @@ /* Only change the strings after the '='; '\n' gives you a new line, do not use it in the CFBundleName or CFBundleDisplayName strings */ -CFBundleName = "Warzone"; /* Name in the menubar */ -CFBundleDisplayName = "Warzone 2100"; /* Name of the app bundle */ +/* Warzone */ /* Name in the menubar */ +CFBundleName = "Warzone"; -NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; /* Copyright string */ +/* Warzone 2100 */ /* Name of the app bundle */ +CFBundleDisplayName = "Warzone 2100"; -"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; /* Description of .wz files */ \ No newline at end of file +/* Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project */ /* Copyright string */ +NSHumanReadableCopyright = "Copyright © 1999-2004 Eidos Interactive.\nCopyright © 2005-2010 The Warzone 2100 Project"; + + +/* Warzone 2100 Map / Mod File */ /* Description of .wz files */ +"Warzone 2100 Map / Mod File" = "Warzone 2100 Map / Mod File"; + +/* Warzone 2100 Multiplayer Mod File */ /* Description of .mod.wz files */ +"Warzone 2100 Multiplayer Mod File" = "Warzone 2100 Multiplayer Mod File"; + +/* Warzone 2100 Campaign Mod File */ /* Description of .cam.wz files */ +"Warzone 2100 Campaign Mod File" = "Warzone 2100 Campaign Mod File"; + +/* Warzone 2100 Global Mod File */ /* Description of .gmod.wz files */ +"Warzone 2100 Global Mod File" = "Warzone 2100 Global Mod File"; + +/* Warzone 2100 Music Mod File */ /* Description of .music.wz files */ +"Warzone 2100 Music Mod File" = "Warzone 2100 Music Mod File"; diff --git a/macosx/configs/FetchPrebuilt.sh b/macosx/configs/FetchPrebuilt.sh index b0ae95a98..9e6f4f439 100755 --- a/macosx/configs/FetchPrebuilt.sh +++ b/macosx/configs/FetchPrebuilt.sh @@ -17,21 +17,42 @@ if [ ! -d "prebuilt" ]; then fi # Checks -if [ -d "external/${OutDir}" ]; then - echo "${OutDir} exists, skipping" - exit 0 +if [ "${ACTION}" = "clean" ]; then + # Force cleaning when directed + rm -fRv "prebuilt/${DirectorY}" "external/${OutDir}" + MD5SumLoc=`md5 -q "prebuilt/${FileName}"` + if [ "${MD5SumLoc}" != "${MD5Sum}" ]; then + rm -fRv "prebuilt/${FileName}" + fi + exit 0 elif [ -d "prebuilt/${DirectorY}" ]; then - echo "${DirectorY} exists, probably from an earlier failed run" >&2 - #rm -frv "prebuilt/${DirectorY}" - exit 1 + # Clean if dirty + echo "error: ${DirectorY} exists, probably from an earlier failed run" >&2 + #rm -frv "prebuilt/${DirectorY}" + exit 1 +elif [[ -d "external/${OutDir}" ]] && [[ ! -f "prebuilt/${FileName}" ]]; then + # Clean up when updating versions + echo "error: Cached file is outdated or incomplete, removing" >&2 + rm -fR "prebuilt/${DirectorY}" "external/${OutDir}" +elif [[ -d "external/${OutDir}" ]] && [[ -f "prebuilt/${FileName}" ]]; then + # Check to make sure we have the right file + MD5SumLoc=`md5 -q "prebuilt/${FileName}"` + if [ "${MD5SumLoc}" != "${MD5Sum}" ]; then + echo "error: Cached file is outdated or incorrect, removing" >&2 + rm -fR "prebuilt/${FileName}" "prebuilt/${DirectorY}" "external/${OutDir}" + else + # Do not do more work then we have to + echo "${OutDir} already exists, skipping" + exit 0 + fi fi -# Download +# Fetch cd prebuilt if [ ! -f "${FileName}" ]; then echo "Fetching ${FileName}" - if ! curl -L -O --connect-timeout "30" "${BuiltDLP}"; then - echo "Unable to fetch ${BuiltDLP}" >&2 + if ! curl -LfO --connect-timeout "30" "${BuiltDLP}"; then + echo "error: Unable to fetch ${BuiltDLP}" >&2 exit 1 fi else @@ -41,26 +62,27 @@ fi # MD5 check MD5SumLoc=`md5 -q "${FileName}"` if [ -z "${MD5SumLoc}" ]; then - echo "Unable to compute md5 for ${FileName}" >&2 - exit 1 + echo "error: Unable to compute md5 for ${FileName}" >&2 + exit 1 elif [ "${MD5SumLoc}" != "${MD5Sum}" ]; then - echo "MD5 does not match for ${FileName}" >&2 - exit 1 + echo "error: MD5 does not match for ${FileName}" >&2 + exit 1 fi # Unpack if ! tar -zxf "${FileName}"; then - echo "Unpacking $FileName failed" >&2 + echo "error: Unpacking $FileName failed" >&2 exit 1 fi # Move if [ ! -d "${DirectorY}" ]; then - echo "Can't find $DirectorY to rename" >&2 + echo "error: Can't find $DirectorY to rename" >&2 exit 1 else cd .. mv "prebuilt/${DirectorY}" "external/${OutDir}" + touch external/${OutDir}/* fi -exit 0 \ No newline at end of file +exit 0 diff --git a/macosx/configs/FetchSource.sh b/macosx/configs/FetchSource.sh index 33a7f0193..3b0f0f1d8 100755 --- a/macosx/configs/FetchSource.sh +++ b/macosx/configs/FetchSource.sh @@ -15,60 +15,82 @@ if [ ! -d "external" ]; then fi cd external -# Do not do more work then we have to -if [ -d "${OutDir}" ]; then - echo "${OutDir} already exists, skipping" - exit 0 -fi - -# Clean if dirty -if [ -d "${DirectorY}" ]; then - echo "${DirectorY} exists, probably from an earlier failed run" >&2 - #rm -frv "${DirectorY}" - exit 1 +# Checks +if [ "${ACTION}" = "clean" ]; then + # Force cleaning when directed + rm -fRv "${DirectorY}" "${OutDir}" + MD5SumLoc=`md5 -q "${FileName}"` + if [ "${MD5SumLoc}" != "${MD5Sum}" ]; then + rm -fRv "${FileName}" + fi + exit 0 +elif [ -d "${DirectorY}" ]; then + # Clean if dirty + echo "error: ${DirectorY} exists, probably from an earlier failed run" >&2 + #rm -fRv "${DirectorY}" + exit 1 +elif [[ -d "${OutDir}" ]] && [[ ! -f "${FileName}" ]]; then + # Clean up when updating versions + echo "error: Cached file is outdated or incomplete, removing" >&2 + rm -fR "${DirectorY}" "${OutDir}" +elif [[ -d "${OutDir}" ]] && [[ -f "${FileName}" ]]; then + # Check to make sure we have the right file + MD5SumLoc=`md5 -q "${FileName}"` + if [ "${MD5SumLoc}" != "${MD5Sum}" ]; then + echo "error: Cached file is outdated or incorrect, removing" >&2 + rm -fR "${FileName}" "${DirectorY}" "${OutDir}" + else + # Do not do more work then we have to + echo "${OutDir} already exists, skipping" + exit 0 + fi fi # Fetch if [ ! -r "${FileName}" ]; then - echo "Fetching ${SourceDLP}" - if ! curl -L --connect-timeout "30" -o "${FileName}" "${SourceDLP}"; then - echo "Unable to fetch ${SourceDLP}" >&2 - exit 1 - fi + echo "Fetching ${SourceDLP}" + if ! curl -Lfo "${FileName}" --connect-timeout "30" "${SourceDLP}"; then + echo "error: Unable to fetch ${SourceDLP}" >&2 + exit 1 + fi +else + echo "${FileName} already exists, skipping" fi # Check our sums MD5SumLoc=`md5 -q "${FileName}"` if [ -z "${MD5SumLoc}" ]; then - echo "Unable to compute md5 for ${FileName}" >&2 - exit 1 + echo "error: Unable to compute md5 for ${FileName}" >&2 + exit 1 elif [ "${MD5SumLoc}" != "${MD5Sum}" ]; then - echo "MD5 does not match for ${FileName}" >&2 - exit 1 + echo "error: MD5 does not match for ${FileName}" >&2 + exit 1 fi # Unpack ExtensioN=`echo ${FileName} | sed -e 's:^.*\.\([^.]*\):\1:'` if [ "${ExtensioN}" = "gz" ]; then - if ! tar -zxf "${FileName}"; then - echo "Unpacking ${FileName} failed" >&2 - exit 1 - fi + if ! tar -zxf "${FileName}"; then + echo "error: Unpacking ${FileName} failed" >&2 + exit 1 + fi elif [ "${ExtensioN}" = "bz2" ]; then - if ! tar -jxf "${FileName}"; then - echo "Unpacking ${FileName} failed" >&2 - exit 1 - fi + if ! tar -jxf "${FileName}"; then + echo "error: Unpacking ${FileName} failed" >&2 + exit 1 + fi else - echo "Unable to unpack ${FileName}" >&2 - exit 1 + echo "error: Unable to unpack ${FileName}" >&2 + exit 1 fi -# Reorganize +# Move if [ ! -d "${DirectorY}" ]; then - echo "Can't find ${DirectorY} to rename" >&2 - exit 1 + echo "error: Can't find ${DirectorY} to rename" >&2 + exit 1 +else + mv "${DirectorY}" "${OutDir}" + touch ${OutDir}/* fi -mv "${DirectorY}" "${OutDir}" -exit 0 \ No newline at end of file +exit 0 diff --git a/macosx/configs/Project-All.xcconfig b/macosx/configs/Project-All.xcconfig index 5149f203a..6a544050b 100644 --- a/macosx/configs/Project-All.xcconfig +++ b/macosx/configs/Project-All.xcconfig @@ -6,9 +6,6 @@ SDKROOT = macosx10.4 GCC_VERSION = 4.0 COPY_PHASE_STRIP = NO DEAD_CODE_STRIPPING = YES -FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/external/SDL" -HEADER_SEARCH_PATHS = "$(SRCROOT)/external/SDL/SDL.framework/Headers" -LIBRARY_SEARCH_PATHS = "$(SRCROOT)/external/SDL" GCC_AUTO_VECTORIZATION = YES GCC_GENERATE_DEBUGGING_SYMBOLS = YES GCC_DEBUGGING_SYMBOLS = full @@ -19,5 +16,10 @@ GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__ $(inherited) FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "$(SDK_DIR)/System/Library/Frameworks" FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "$(SRCROOT)/build/$(CONFIGURATION)" +FRAMEWORK_SEARCH_PATHS_QUOTED_3 = "$(SRCROOT)/external/SDL" + LIBRARY_SEARCH_PATHS_QUOTED_1 = "$(SRCROOT)/build/$(CONFIGURATION)" -LIBRARY_SEARCH_PATHS_QUOTED_2 = "$(SDK_DIR)/usr/lib" \ No newline at end of file +LIBRARY_SEARCH_PATHS_QUOTED_2 = "$(SDK_DIR)/usr/lib" +LIBRARY_SEARCH_PATHS_QUOTED_3 = "$(SRCROOT)/external/SDL" + +HEADER_SEARCH_PATHS_QUOTED_1 = "$(SRCROOT)/external/SDL/SDL.framework/Headers" \ No newline at end of file diff --git a/macosx/configs/SDLmain-All.xcconfig b/macosx/configs/SDLmain-All.xcconfig index 1bd03db06..45410f2ec 100644 --- a/macosx/configs/SDLmain-All.xcconfig +++ b/macosx/configs/SDLmain-All.xcconfig @@ -4,6 +4,6 @@ INSTALL_PATH = /usr/local/lib PREBINDING = NO PRODUCT_NAME = SDLmain -FRAMEWORK_SEARCH_PATHS = $(inherited) -HEADER_SEARCH_PATHS = $(inherited) +FRAMEWORK_SEARCH_PATHS = $(inherited) $(FRAMEWORK_SEARCH_PATHS_QUOTED_3) +HEADER_SEARCH_PATHS = $(inherited) $(HEADER_SEARCH_PATHS_QUOTED_1) GCC_MODEL_TUNING = G5 \ No newline at end of file diff --git a/macosx/configs/Zlib-All.xcconfig b/macosx/configs/Zlib-All.xcconfig index 3fa4935ad..c3be3bcd5 100644 --- a/macosx/configs/Zlib-All.xcconfig +++ b/macosx/configs/Zlib-All.xcconfig @@ -10,4 +10,5 @@ INFOPLIST_FILE = Resources/GenericFramework-Info.plist PRODUCT_NAME = Zlib GCC_MODEL_TUNING = G5 GCC_PRECOMPILE_PREFIX_HEADER = YES -GCC_PREFIX_HEADER = \ No newline at end of file +GCC_PREFIX_HEADER = +GCC_PREPROCESSOR_DEFINITIONS = HAVE_UNISTD_H $(inherited) \ No newline at end of file diff --git a/macosx/configs/bison.sh b/macosx/configs/bison.sh index 7a0c674e8..492a14213 100755 --- a/macosx/configs/bison.sh +++ b/macosx/configs/bison.sh @@ -3,11 +3,13 @@ # System Bison executable SYS_BISON="bison" # Local Warzone Bison executable (relative to macosx/) -LOCAL_BISON="`pwd`/external/bison/built/bin/bison" +LOCAL_BISON="external/bison/built/bin/bison" # If a Warzone Bison executable exists, use instead of the system executable if [ -e "$LOCAL_BISON" ]; then - $LOCAL_BISON "$@" + ${LOCAL_BISON} ${@} + exit ${?} else - $SYS_BISON "$@" + ${SYS_BISON} ${@} + exit ${?} fi diff --git a/makerules/configure.mk b/makerules/configure.mk index fd8ab9d8b..d5a847f4e 100644 --- a/makerules/configure.mk +++ b/makerules/configure.mk @@ -73,7 +73,7 @@ CC:=gcc CXX:=g++ WINDRES:=windres WZ_CPPFLAGS+=-DWIN32 -WZ_LDFLAGS+=-mwindows -lmingw32 -lSDLmain -lSDL -lpng12 -lphysfs -lz -lvorbisfile -lvorbis -logg -lpopt -lintl -lGLC -lglu32 -lopengl32 -lopenal32 -ldbghelp -lshfolder -lwinmm -lws2_32 -lbfd -liberty -liconv -lz -lfreetype -lfontconfig -lexpat -ltheora +WZ_LDFLAGS+=-mwindows -lmingw32 -lSDLmain -lSDL -lpng12 -lphysfs -lz -lvorbisfile -lvorbis -logg -lpopt -lintl -lGLC -lglu32 -lopengl32 -lopenal32 -ldbghelp -lshfolder -lwinmm -lshlwapi -lpsapi -lshell32 -lws2_32 -lbfd -liberty -liconv -lz -lfreetype -lfontconfig -lexpat -ltheora # Import environment variables diff --git a/pkg/nsis/warzone2100.nsi b/pkg/nsis/warzone2100.nsi index 1f8900d06..124210be3 100644 --- a/pkg/nsis/warzone2100.nsi +++ b/pkg/nsis/warzone2100.nsi @@ -1,5 +1,5 @@ ; This file is part of Warzone 2100. -; Copyright (C) 2006-2009 Warzone 2100 Project +; Copyright (C) 2006-2010 Warzone 2100 Project ; Copyright (C) 2006 Dennis Schridde ; ; Warzone 2100 is free software; you can redistribute it and/or modify @@ -86,12 +86,7 @@ VIAddVersionKey "ProductVersion" "${PACKAGE_VERSION}" ; These indented statements modify settings for MUI_PAGE_FINISH !define MUI_FINISHPAGE_NOAUTOCLOSE - !define MUI_FINISHPAGE_RUN - !define MUI_FINISHPAGE_RUN_NOTCHECKED - !define MUI_FINISHPAGE_RUN_TEXT $(TEXT_RunWarzone) - !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" - !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED - !define MUI_FINISHPAGE_SHOWREADME $(TEXT_Readme) + !define MUI_UNFINISHPAGE_NOAUTOCLOSE ;-------------------------------- ;Pages @@ -195,6 +190,7 @@ Section $(TEXT_SecBase) SecBase File "${TOP_SRCDIR}\data\music\menu.ogg" File "${TOP_SRCDIR}\data\music\track1.ogg" File "${TOP_SRCDIR}\data\music\track2.ogg" + File "${TOP_SRCDIR}\data\music\track3.ogg" File "${TOP_SRCDIR}\data\music\music.wpl" SetOutPath "$INSTDIR\styles" @@ -331,79 +327,79 @@ SectionGroup $(TEXT_SecNLS) SecNLS Section "-NLS files" SecNLS_files SetOutPath "$INSTDIR\locale\cs\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\cs.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\cs.gmo" SetOutPath "$INSTDIR\locale\da\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\da.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\da.gmo" SetOutPath "$INSTDIR\locale\de\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\de.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\de.gmo" SetOutPath "$INSTDIR\locale\en_GB\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\en_GB.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\en_GB.gmo" SetOutPath "$INSTDIR\locale\es\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\es.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\es.gmo" SetOutPath "$INSTDIR\locale\et\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\et_EE.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\et_EE.gmo" SetOutPath "$INSTDIR\locale\fi\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\fi.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\fi.gmo" SetOutPath "$INSTDIR\locale\fr\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\fr.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\fr.gmo" SetOutPath "$INSTDIR\locale\fy\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\fy.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\fy.gmo" SetOutPath "$INSTDIR\locale\ga\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\ga.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\ga.gmo" SetOutPath "$INSTDIR\locale\hr\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\hr.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\hr.gmo" SetOutPath "$INSTDIR\locale\it\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\it.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\it.gmo" SetOutPath "$INSTDIR\locale\la\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\la.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\la.gmo" SetOutPath "$INSTDIR\locale\lt\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\lt.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\lt.gmo" SetOutPath "$INSTDIR\locale\nb\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\nb.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\nb.gmo" SetOutPath "$INSTDIR\locale\nl\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\nl.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\nl.gmo" SetOutPath "$INSTDIR\locale\pl\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\pl.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\pl.gmo" SetOutPath "$INSTDIR\locale\pt_BR\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\pt_BR.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\pt_BR.gmo" SetOutPath "$INSTDIR\locale\pt\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\pt.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\pt.gmo" SetOutPath "$INSTDIR\locale\ro\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\ro.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\ro.gmo" SetOutPath "$INSTDIR\locale\ru\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\ru.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\ru.gmo" SetOutPath "$INSTDIR\locale\sl\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\sl.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\sl.gmo" SetOutPath "$INSTDIR\locale\uk\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\uk_UA.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\uk_UA.gmo" SetOutPath "$INSTDIR\locale\zh_TW\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\zh_TW.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\zh_TW.gmo" SetOutPath "$INSTDIR\locale\zh_CN\LC_MESSAGES" - File "/oname=${PACKAGE}.mo" "${TOP_BUILDDIR}\po\zh_CN.gmo" + File "/oname=${PACKAGE}.mo" "${TOP_SRCDIR}\po\zh_CN.gmo" SectionEnd @@ -459,10 +455,6 @@ ${OrIf} ${SectionIsSelected} ${SecFMVs_EngLo} ${EndIf} FunctionEnd -Function LaunchLink - Exec '$INSTDIR\${PACKAGE}.exe' -FunctionEnd - Function unix2dos ; strips all CRs and then converts all LFs into CRLFs ; (this is roughly equivalent to "cat file | dos2unix | unix2dos") @@ -541,9 +533,6 @@ FunctionEnd LangString TEXT_SecOriginalMod ${LANG_ENGLISH} "1.10 balance" LangString DESC_SecOriginalMod ${LANG_ENGLISH} "Play the game as it was back in the 1.10 days." - LangString TEXT_RunWarzone ${LANG_ENGLISH} "Run ${PACKAGE_NAME}" - LangString TEXT_Readme ${LANG_ENGLISH} "$INSTDIR\Readme.en.html" - ;Dutch LangString TEXT_SecBase ${LANG_DUTCH} "Core files" LangString DESC_SecBase ${LANG_DUTCH} "The core files required to run Warzone 2100." @@ -581,9 +570,6 @@ FunctionEnd LangString TEXT_SecOriginalMod ${LANG_DUTCH} "1.10 balance" LangString DESC_SecOriginalMod ${LANG_DUTCH} "Speel het spel met de originele 1.10 versie balans stats." - LangString TEXT_RunWarzone ${LANG_DUTCH} "Start ${PACKAGE_NAME}" - LangString TEXT_Readme ${LANG_DUTCH} "$INSTDIR\Readme.en.html" - ;German LangString TEXT_SecBase ${LANG_GERMAN} "Core files" LangString DESC_SecBase ${LANG_GERMAN} "Die Kerndateien, die für Warzone 2100 benötigt werden." @@ -621,9 +607,6 @@ FunctionEnd LangString TEXT_SecOriginalMod ${LANG_GERMAN} "1.10 balance" LangString DESC_SecOriginalMod ${LANG_GERMAN} "Spielen Sie das Spiel mit dem Balancing aus der Originalversion 1.10." - LangString TEXT_RunWarzone ${LANG_GERMAN} "Starte ${PACKAGE_NAME}" - LangString TEXT_Readme ${LANG_GERMAN} "$INSTDIR\Readme.de.html" - ;Russian LangString TEXT_SecBase ${LANG_RUSSIAN} "Áàçîâûå ôàéëû" LangString DESC_SecBase ${LANG_RUSSIAN} "Ôàéëû òðåáóåìûå äëÿ çàïóñêà Warzone 2100." @@ -661,9 +644,6 @@ FunctionEnd LangString TEXT_SecOriginalMod ${LANG_RUSSIAN} "Áàëàíñ 1.10" LangString DESC_SecOriginalMod ${LANG_RUSSIAN} "Èãðàòü â èãðó ñ áàëàíñîì îò îðèãèíàëüíîé âåðñèè 1.10." - LangString TEXT_RunWarzone ${LANG_RUSSIAN} "Çàïóñê ${PACKAGE_NAME}" - LangString TEXT_Readme ${LANG_RUSSIAN} "$INSTDIR\Readme.en.html" - ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecBase} $(DESC_SecBase) @@ -717,6 +697,7 @@ Section "Uninstall" Delete "$INSTDIR\music\menu.ogg" Delete "$INSTDIR\music\track1.ogg" Delete "$INSTDIR\music\track2.ogg" + Delete "$INSTDIR\music\track3.ogg" Delete "$INSTDIR\music\music.wpl" RMDir "$INSTDIR\music" diff --git a/pkg/rpm/warzone2100.spec b/pkg/rpm/warzone2100.spec index ee20d947d..e97eacd06 100644 --- a/pkg/rpm/warzone2100.spec +++ b/pkg/rpm/warzone2100.spec @@ -1,5 +1,5 @@ Name: warzone2100 -Version: 2.1.2 +Version: 2.3_beta8 Release: 1%{?dist} Summary: Innovative 3D real-time strategy %define distributor wz2100.net @@ -7,7 +7,7 @@ Summary: Innovative 3D real-time strategy Group: Amusements/Games License: GPLv2+ and CC-BY-SA URL: http://wz2100.net/ -Source0: http://download.gna.org/warzone/releases/2.1/%{name}-%{version}.tar.bz2 +Source0: http://download.gna.org/warzone/releases/2.2/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: physfs-devel openal-devel bison flex zip @@ -25,6 +25,7 @@ continued by the Warzone 2100 Resurrection project to produce this improved vers %setup -q %build +echo wc_uri=tags/%{version} > autorevision.conf %configure --disable-rpath --disable-debug --with-distributor=%{distributor} make %{_smp_mflags} @@ -50,5 +51,8 @@ rm -rf $RPM_BUILD_ROOT %doc AUTHORS ChangeLog COPYING COPYING.NONGPL COPYING.README %changelog -* Sat Mar 07 2009 Per Inge Mathisen - 2.1.2-1 +* Mon May 11 2009 Per Inge Mathisen +- 2.2_rc1 version + +* Sat Mar 07 2009 Per Inge Mathisen - First version - spec file for the most part shamelessly copied from the Fedora project diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 28bf1bf2c..214c08208 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -71,7 +71,7 @@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in update-po.sh \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) @@ -378,7 +378,12 @@ dist2: stamp-po $(DISTFILES) fi; \ done -update-po: Makefile +POTFILES.in: $(srcdir)/update-po.sh + (cd $(srcdir); ./update-po.sh) + +update-po-custom: POTFILES.in + +update-po: Makefile update-po-custom $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo diff --git a/po/POTFILES.in b/po/POTFILES.in index 765c6aeb5..b8f085eca 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -84,11 +84,67 @@ data/base/script/text/tech.slo data/base/script/text/tutorial3.slo data/base/script/text/vtols2.slo data/base/script/text/vtols.slo +data/base/sequenceaudio/cam1/c001end.txt +data/base/sequenceaudio/cam1/c001.txa +data/base/sequenceaudio/cam1/c001.txt +data/base/sequenceaudio/cam1/cam1ccom.txt +data/base/sequenceaudio/cam1/cam1cnp.txt +data/base/sequenceaudio/cam1/cam1dnp.txt +data/base/sequenceaudio/cam1/cam1dp2.txt +data/base/sequenceaudio/cam1/cam1out2.txt +data/base/sequenceaudio/cam1/cam1out3.txt +data/base/sequenceaudio/cam1/cam1out4.txt +data/base/sequenceaudio/cam1/cam1out5.txt +data/base/sequenceaudio/cam1/map1a_c.txt +data/base/sequenceaudio/cam1/sub13np1.txt +data/base/sequenceaudio/cam1/sub13np2.txt +data/base/sequenceaudio/cam1/sub14anp.txt +data/base/sequenceaudio/cam1/sub1_4bn.txt +data/base/sequenceaudio/cam1/sub1_5pl.txt +data/base/sequenceaudio/cam1/sub17fmv.txt +data/base/sequenceaudio/cam2/c002.txa +data/base/sequenceaudio/cam2/c2diif2.txt +data/base/sequenceaudio/cam2/cam22fmv.txt +data/base/sequenceaudio/cam2/cam2_2n2.txt +data/base/sequenceaudio/cam2/cam2_2n.txt +data/base/sequenceaudio/cam2/cam22pl2.txt +data/base/sequenceaudio/cam2/cam22pl3.txt +data/base/sequenceaudio/cam2/cam26afm.txt +data/base/sequenceaudio/cam2/cam26bfm.txt +data/base/sequenceaudio/cam2/cam26pl1.txt +data/base/sequenceaudio/cam2/cam27fmv.txt +data/base/sequenceaudio/cam2/cam2acol.txt +data/base/sequenceaudio/cam2/cam2bcol.txt +data/base/sequenceaudio/cam2/cam2dico.txt +data/base/sequenceaudio/cam2/cam2diin.txt +data/base/sequenceaudio/cam2/cam2dipl.txt +data/base/sequenceaudio/cam3/c003.txa +data/base/sequenceaudio/cam3/c003.txt +data/base/sequenceaudio/cam3/c3ad2n2.txt +data/base/sequenceaudio/cam3/c3ad2pl3.txt +data/base/sequenceaudio/cam3/cam3_1bn.txt +data/base/sequenceaudio/cam3/cam32a2.txt +data/base/sequenceaudio/cam3/cam32alp.txt +data/base/sequenceaudio/cam3/cam32pl2.txt +data/base/sequenceaudio/cam3/cam34mu1.txt +data/base/sequenceaudio/cam3/cam34mu2.txt +data/base/sequenceaudio/cam3/cam3abf.txt +data/base/sequenceaudio/cam3/cam3abpl.txt +data/base/sequenceaudio/cam3/cam3ad2n.txt +data/base/sequenceaudio/cam3/cam3bg.txt +data/base/sequenceaudio/cam3/cam3_bn.txt +data/base/sequenceaudio/cam3/cam3_cn.txt +data/base/sequenceaudio/devastation.txa +data/base/sequenceaudio/devastation.txt +data/base/sequenceaudio/outro.txt +data/mods/multiplay/dydo-ai/multiplay/skirmish/ai.slo data/mods/multiplay/ntw/messages/strings/genstrings.txt data/mods/multiplay/ntw/messages/strings/names.txt data/mods/multiplay/ntw/multiplay/script/autoenable.slo data/mods/multiplay/ntw/multiplay/script/camtech.slo data/mods/multiplay/ntw/multiplay/script/gates.slo +data/mods/multiplay/ntw/multiplay/script/landmine.slo +data/mods/multiplay/ntw/multiplay/script/multilim.slo data/mods/multiplay/ntw/multiplay/script/multiplay.slo data/mods/multiplay/ntw/multiplay/script/reactor.slo data/mods/multiplay/ntw/multiplay/skirmish/player0.slo @@ -179,6 +235,7 @@ lib/ivis_opengl/textdraw.c lib/netplay/netjoin_stub.c lib/netplay/netlog.c lib/netplay/netplay.c +lib/netplay/netsocket.cpp lib/netplay/nettypes.cpp lib/script/codeprint.c lib/script/event.c diff --git a/po/cs.po b/po/cs.po index c3b618896..9daec15fb 100644 --- a/po/cs.po +++ b/po/cs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-09 16:05+0000\n" "Last-Translator: Lubos \n" "Language-Team: Czech \n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1947,7 +1947,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2964,7 +2964,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2986,7 +2986,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2995,7 +2995,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3004,7 +3004,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3040,7 +3040,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3171,7 +3171,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3849,14 +3849,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3868,14 +3868,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4013,7 +4013,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Tato budova obsahuje technologii důležitou pro úspÄ›ch Projektu." @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5305,6 +5321,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5744,7 +5761,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "NáklaÄák" @@ -5753,7 +5770,7 @@ msgstr "NáklaÄák" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5780,7 +5797,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5813,7 +5830,7 @@ msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5830,7 +5847,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5855,7 +5872,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5867,7 +5884,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5878,7 +5895,7 @@ msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 #, fuzzy msgid "Flamer Cobra Tracks" msgstr "Vybrat vÅ¡echny Pásové Jednotky" @@ -5896,7 +5913,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5911,26 +5928,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5994,7 +6011,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -6003,9 +6020,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6015,8 +6032,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6025,7 +6042,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6119,8 +6136,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6224,14 +6241,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6253,7 +6270,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6282,8 +6299,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6291,15 +6308,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6323,7 +6340,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6359,7 +6376,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6371,7 +6388,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6383,7 +6400,7 @@ msgstr "" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "" @@ -6395,7 +6412,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6416,8 +6433,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6428,30 +6445,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6462,27 +6479,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6493,29 +6510,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6525,168 +6542,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6697,139 +6714,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6840,80 +6857,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6923,74 +6940,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6999,62 +7016,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7063,22 +7080,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7095,307 +7112,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7410,15 +7427,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7427,55 +7444,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7493,15 +7510,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7512,49 +7529,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7592,54 +7609,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7676,172 +7693,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7851,84 +7868,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7949,292 +7966,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8243,17 +8260,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8270,252 +8287,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8524,57 +8541,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8583,142 +8600,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8727,367 +8744,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9108,7 +9125,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9117,50 +9134,50 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 #, fuzzy msgid "Repair Turret Cobra Tracks" msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9169,37 +9186,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9481,336 +9498,1174 @@ msgstr "PoÄkej prosím, zatímco továrna vyrobí nové jednotky" msgid "Congratulations commander - you are ready for your first mission" msgstr "BlahopÅ™eji veliteli - jsi pÅ™ipraven na svou první misi" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Cíle projektu" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Jaderný Reaktor" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9819,7 +10674,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9828,7 +10683,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9837,130 +10692,130 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 #, fuzzy msgid "Repair Turret Mantis Tracks" msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 #, fuzzy msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 #, fuzzy msgid "Mini-Rocket Cobra Tracks" msgstr "Vybrat vÅ¡echny Pásové Jednotky" @@ -9971,7 +10826,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Vybrat vÅ¡echny Pásové Jednotky" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9980,56 +10835,161 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 #, fuzzy msgid "Flamer Viper Half-Tracks" msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Plazmový kanón střílející plazmu" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Vybrat vÅ¡echny Pásové Jednotky" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10659,7 +11619,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10691,7 +11651,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10704,640 +11664,653 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Vybrat vÅ¡echny Pásové Jednotky" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Hra" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "Vybrat další Výzkumné Zařízení" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "Vybrat vÅ¡echny Pásové Jednotky" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "Vybrat vÅ¡echny Pásové Jednotky" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "Vybrat vÅ¡echny Pásové Jednotky" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 #, fuzzy msgid "Sensor Upgrade Mk2" msgstr "Dosah snímaÄů" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "Dosah snímaÄů" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Velitelé (F6)" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Velitelé (F6)" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Vybrat vÅ¡echny Pásové Jednotky" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11474,31 +12447,40 @@ msgstr "" msgid "Latin" msgstr "Latinsky" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Uložit hru" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11650,15 +12632,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "HráÄ" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nové vozidlo" @@ -11698,18 +12680,18 @@ msgstr "Výfuk" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Hmotnost" @@ -11723,131 +12705,131 @@ msgstr "Celkem požadovaná energie" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Použitá energie" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transportér" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Dosah snímaÄů" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Rozsah" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "PoÅ¡kození" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Rychlost letu" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Rychlost po cestÄ›" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Rychlost v terénu" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Rychlost po vodÄ›" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "ZbranÄ›" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "HráÄ" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "HráÄ" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Nemohu stavÄ›t. Ropný vrt hoří." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - PoÅ¡kození %d%% - ZkuÅ¡enosti %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - PoÅ¡kození %d%% - ZkuÅ¡enosti %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 #, fuzzy msgid "Truck ordered to build Oil Derrick" msgstr "Nákladní auto dostalo rozkaz postavit ropnou věž" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Nákladní auto dostalo rozkaz postavit ropnou věž" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Nákladní auto dostalo rozkaz postavit ropnou věž" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Jednotka ztracena!" -#: src/droid.c:1343 +#: src/droid.c:1344 #, fuzzy msgid "Structure Restored" msgstr "Budova obnovena" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" @@ -11855,7 +12837,7 @@ msgstr[0] "Skupina %u vybrána - %u Jednotka" msgstr[1] "Skupina %u vybrána - %u Jednotky" msgstr[2] "Skupina %u vybrána - %u Jednotek" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" @@ -11863,7 +12845,7 @@ msgstr[0] "%u jednotka zaÄlenÄ›na do Skupiny %u" msgstr[1] "%u jednotky zaÄlenÄ›ny do Skupiny %u" msgstr[2] "%u jednotek zaÄlenÄ›no do Skupiny %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, fuzzy, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" @@ -11871,7 +12853,7 @@ msgstr[0] "ZameÅ™eno na skupinu %u - %u jednotka" msgstr[1] "ZameÅ™eno na skupinu %u - %u jednotky" msgstr[2] "ZameÅ™eno na skupinu %u - %u jednotek" -#: src/droid.c:2965 +#: src/droid.c:2990 #, fuzzy, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" @@ -11879,41 +12861,41 @@ msgstr[0] "Vyrovnání se skupinou %u - %u jednotka" msgstr[1] "Vyrovnání se skupinou %u - %u jednotky" msgstr[2] "Vyrovnání se skupinou %u - %u jednotek" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "NováÄek" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "ZelenáÄ" -#: src/droid.c:3251 +#: src/droid.c:3276 #, fuzzy msgid "Trained" msgstr "Trénovaný" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Běžný" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Profesionální" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veterán" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elita" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Speciální" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Hrdina" @@ -11962,11 +12944,11 @@ msgstr "TUTORIÃLY" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "ZpÄ›t" @@ -12049,19 +13031,19 @@ msgid "Video Playback" msgstr "PÅ™ehrávání videa" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Celá obrazovka" @@ -12070,43 +13052,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Zapnuto" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Vypnuto" @@ -12116,153 +13097,152 @@ msgid "Fog" msgstr "Mlha" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Mlha" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "VáleÄná mlha" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Titulky" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Stíny" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "HERNà NASTAVENÃ" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Hlasitost Å™eÄi" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Hlasitost efektů" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Hlasitost hudby" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "HERNà NASTAVENÃ" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Grafický mód*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "RozliÅ¡ení*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Velikost textury" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* Projeví se až po restartu hry" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "HERNà NASTAVENÃ" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "ObraÅ¥ myÅ¡" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Herní nastavení" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "HERNà NASTAVENÃ" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Obtížnost" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Snadná" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Normální" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Těžká" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Rychlost rolování" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Jazyk" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Barva jednotky" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "HERNà NASTAVENÃ" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12296,111 +13276,111 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Velitelé (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Zpravodajský display (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Výroba (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Konstrukce (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Výzkum (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Stavba (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energie" -#: src/hci.c:4075 +#: src/hci.c:4077 #, fuzzy msgid "Tile" msgstr "soubor" -#: src/hci.c:4076 +#: src/hci.c:4078 #, fuzzy msgid "Place tiles on map" msgstr "Nastavení limitu budov" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Jednotka" -#: src/hci.c:4086 +#: src/hci.c:4088 #, fuzzy msgid "Place Unit on map" msgstr "Nastavení limitu budov" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Stavba" -#: src/hci.c:4095 +#: src/hci.c:4097 #, fuzzy msgid "Place Structures on map" msgstr "Nastavení limitu budov" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 #, fuzzy msgid "Place Features on map" msgstr "Nastavení limitu budov" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "Hostitel opustil hru!" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "UkonÄit" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "UkonÄit hru" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Panel průbÄ›hu" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Opakovat výrobu" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12444,6 +13424,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12458,7 +13446,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUZA" @@ -12587,297 +13575,297 @@ msgstr "" msgid "Circle" msgstr "soubor" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Omlouváme se, ale tento podvod je vypnutý ve hÅ™e pro více hráÄů." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Ukaž nám co vidíš!" -#: src/keybind.c:226 +#: src/keybind.c:227 #, fuzzy msgid "Fine, weapon & sensor display is off!" msgstr "Fine, snímaÄ displeje je vypnutý!" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "HrÃ¡Ä %u podvádí ( ladící menu ) sebe sama novou budovou: %s" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 #, fuzzy msgid "Hard as nails!!!" msgstr "jako ocel" -#: src/keybind.c:412 +#: src/keybind.c:413 #, fuzzy msgid "Takings thing easy!" msgstr "VÄ›ci jdou lehce!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Ohromující výkon" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Zpátky do normálu!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "Zobrazení FPS je zapnuté." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "Zobrazení FPS je vypnuté." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Zapnutá mlha" -#: src/keybind.c:740 +#: src/keybind.c:744 #, fuzzy msgid "Fog off" msgstr "Vypnutá mlha" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Výzkum" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 #, fuzzy msgid "Unable to locate any resource extractors!" msgstr "Nelze lokalizovat žádný sbÄ›raÄ surovin!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 #, fuzzy msgid "All enemies destroyed by cheating!" msgstr "Nepřítel zniÄen podvádÄ›ním!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Nelze nalézt HQ!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Omlouváme se, ale tento podvod je vypnutý ve hÅ™e pro více hráÄů." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 #, fuzzy msgid "Game Speed Reset" msgstr "Restartování herní rychlosti" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Rychlost Hry Zvýšena na %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Rychlost Hry Snížena na %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar ukazuje barvy hráÄů" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar ukazuje pouze objekty" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar ukazuje terén" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar ukazuje terén" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar ukazuje výšku" @@ -13311,8 +14299,8 @@ msgstr "PokraÄovat ve hÅ™e" msgid "GAME SAVED :" msgstr "HRA ULOŽENA!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13626,21 +14614,21 @@ msgstr "Hostitel vyhodil %s ze hry!" msgid "Host is Starting Game" msgstr "Host zaÄíná hru" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "HráÄi" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13649,27 +14637,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "Systémové místo" @@ -13759,48 +14747,48 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Spojenectví" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Zelená" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oranžová" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Å edá" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "ÄŒerná" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "ÄŒervená" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Modrá" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Růžová" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Azurová" @@ -13943,12 +14931,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13978,62 +14966,62 @@ msgstr "Nemohu nalézt žádnou senzorovou jednotku!" msgid "Unable to locate any Commanders!" msgstr "Nemohu nalézt žádného velitele!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, fuzzy, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "Jednotka pÅ™iÅ™azena" msgstr[1] "Jednotky pÅ™iÅ™azeny" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, fuzzy, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - PoÅ¡kození %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, fuzzy, c-format msgid "%s - Connected %u of %u" msgstr "%s - PÅ™ipojeno %u z %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -14042,7 +15030,7 @@ msgstr "" msgid "Launch Transport" msgstr "Spustit transport" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Posily pÅ™istály" @@ -14100,9 +15088,6 @@ msgstr "" #~ msgid "Heavy Machinegun Cobra Half-trackS" #~ msgstr "Vybrat vÅ¡echny Kolopásové Jednotky" -#~ msgid "Game" -#~ msgstr "Hra" - #~ msgid "Mayhem" #~ msgstr "Mayhem" diff --git a/po/da.po b/po/da.po index cb80099ed..6961c1ad8 100644 --- a/po/da.po +++ b/po/da.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-09 16:08+0000\n" "Last-Translator: carson \n" "Language-Team: Dansk \n" @@ -1596,7 +1596,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 #, fuzzy msgid "Automated Cyborg Production" msgstr "Gentag produktion" @@ -1629,8 +1629,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 #, fuzzy msgid "Cyborg Factory" msgstr "Find næste cyborg fabrik" @@ -1798,7 +1798,7 @@ msgstr "Forøg spillehastighed" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1971,7 +1971,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2131,7 +2131,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 #, fuzzy msgid "Wheeled Propulsion" msgstr "Fremdrift" @@ -2997,7 +2997,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 #, fuzzy msgid "Robotic Cyborg Production" @@ -3020,7 +3020,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -3029,7 +3029,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3038,7 +3038,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 #, fuzzy msgid "Robotic VTOL Production" @@ -3075,7 +3075,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3206,7 +3206,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3886,14 +3886,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3905,7 +3905,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 #, fuzzy msgid "Advanced VTOL Production" msgstr "Gentag produktion" @@ -3913,7 +3913,7 @@ msgstr "Gentag produktion" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4052,7 +4052,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4612,14 +4612,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4977,14 +4980,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4993,16 +5000,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5300,6 +5310,8 @@ msgid "Good luck, Commander." msgstr "Vælg kommandør 1" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5308,6 +5320,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5316,10 +5329,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5328,6 +5343,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5354,6 +5370,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5795,7 +5812,7 @@ msgstr "Transport" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5804,7 +5821,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5833,7 +5850,7 @@ msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 #, fuzzy msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Vælg alle halv-bælter" @@ -5868,7 +5885,7 @@ msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5887,7 +5904,7 @@ msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 #, fuzzy msgid "Heavy Machinegun Viper Tracks" msgstr "Vælg alle halv-bælter" @@ -5915,7 +5932,7 @@ msgstr "Rækkevide" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5928,7 +5945,7 @@ msgstr "Kommandører" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5939,7 +5956,7 @@ msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 #, fuzzy msgid "Flamer Cobra Tracks" msgstr "Vælg alle halv-bælter" @@ -5959,7 +5976,7 @@ msgstr "KommandotÃ¥rn" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 #, fuzzy msgid "Lancer Cobra Half-tracks" msgstr "Vælg alle halv-bælter" @@ -5976,10 +5993,10 @@ msgid "Light Cannon Python Tracks" msgstr "Kommandører" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 #, fuzzy msgid "Medium Cannon Python Tracks" msgstr "Kommandører" @@ -5987,9 +6004,9 @@ msgstr "Kommandører" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 #, fuzzy msgid "Heavy Cannon Python Tracks" msgstr "Kommandører" @@ -5997,7 +6014,7 @@ msgstr "Kommandører" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 #, fuzzy msgid "Command Turret Python Tracks" msgstr "Kommandører" @@ -6063,7 +6080,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -6072,9 +6089,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 #, fuzzy msgid "Flamer" msgstr "Spillere" @@ -6085,8 +6102,8 @@ msgstr "Spillere" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6095,7 +6112,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6194,8 +6211,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 #, fuzzy msgid "Command Turret" msgstr "KommandotÃ¥rn" @@ -6303,14 +6320,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6332,7 +6349,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 #, fuzzy msgid "Cyborg Propulsion" msgstr "Fremdrift" @@ -6363,8 +6380,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 #, fuzzy msgid "Sensor Tower" msgstr "Watt" @@ -6374,8 +6391,8 @@ msgstr "Watt" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 #, fuzzy msgid "Hardened Sensor Tower" msgstr "Watt" @@ -6383,7 +6400,7 @@ msgstr "Watt" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 #, fuzzy msgid "Sensor Turret" msgstr "Rækkevide" @@ -6409,7 +6426,7 @@ msgstr "KommandotÃ¥rn" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 #, fuzzy msgid "VTOL Strike Turret" msgstr "TÃ¥rn" @@ -6449,7 +6466,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6462,7 +6479,7 @@ msgstr "Find næste kraftværk" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 #, fuzzy msgid "Power Module" msgstr "Indsalmet energi" @@ -6476,7 +6493,7 @@ msgstr "Find næste forskningscenter" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 #, fuzzy msgid "Research Module" msgstr "Forskningsopdatering" @@ -6489,7 +6506,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6511,8 +6528,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6523,30 +6540,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6557,27 +6574,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6588,30 +6605,30 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 #, fuzzy msgid "CB Tower" msgstr "ECM Effekt" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6621,83 +6638,83 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 #, fuzzy msgid "Heavy Machinegun Tower" msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" # This is always 1000 ingame... any reason to have this at all? is it ever used? #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 #, fuzzy msgid "Lancer Tower" msgstr "Watt" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 #, fuzzy msgid "Mini-Rocket Tower" msgstr "Vælg alle halv-bælter" @@ -6705,88 +6722,88 @@ msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6797,83 +6814,83 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 #, fuzzy msgid "Inferno" msgstr "Internet" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 #, fuzzy msgid "Howitzer" msgstr "Energi" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 #, fuzzy msgid "Ground Shaker" msgstr "Ryst skærm" @@ -6881,59 +6898,59 @@ msgstr "Ryst skærm" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 #, fuzzy msgid "Machinegun" msgstr "Søger" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6944,80 +6961,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -7027,77 +7044,77 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 #, fuzzy msgid "Mini-Rocket Pod" msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 #, fuzzy msgid "Cyclone Flak Turret" msgstr "TÃ¥rn" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 #, fuzzy msgid "Whirlwind AA Turret" msgstr "TÃ¥rn" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 #, fuzzy msgid "Hurricane AA Turret" msgstr "TÃ¥rn" @@ -7107,62 +7124,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7171,22 +7188,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7203,314 +7220,314 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 #, fuzzy msgid "Cyborg Thermal Armor" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 #, fuzzy msgid "Cyborg Thermal Armor Mk2" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 #, fuzzy msgid "Cyborg Thermal Armor Mk3" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 #, fuzzy msgid "Flamer Cyborg" msgstr "Spillere" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 #, fuzzy msgid "Machinegunner Cyborg" msgstr "Søger" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 #, fuzzy msgid "Scourge Cyborg" msgstr "Score" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 #, fuzzy msgid "Hardcrete" msgstr "Svær" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7525,15 +7542,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7542,55 +7559,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7609,15 +7626,15 @@ msgstr "Vælg alle halv-bælter" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7628,50 +7645,50 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 #, fuzzy msgid "Command Relay Post" msgstr "Kommandører" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7710,55 +7727,55 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 #, fuzzy msgid "Repair Facility" msgstr "Reperationsgevinst - Reperation" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7797,175 +7814,175 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 #, fuzzy msgid "Robotic VTOL Production Mk2" msgstr "Gentag produktion" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 #, fuzzy msgid "Robotic VTOL Production Mk3" msgstr "Gentag produktion" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 #, fuzzy msgid "Sensor Upgrade" msgstr "Rækkevide" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7975,86 +7992,86 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 #, fuzzy msgid "CB Turret" msgstr "KommandotÃ¥rn" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 #, fuzzy msgid "CB Sensor Upgrade" msgstr "Rækkevide" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -8076,306 +8093,306 @@ msgstr "" # This is always 1000 ingame... any reason to have this at all? is it ever used? #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 #, fuzzy msgid "Sensor Lock" msgstr "Watt" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 #, fuzzy msgid "Thermal Armor" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 #, fuzzy msgid "Thermal Armor Mk2" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 #, fuzzy msgid "Thermal Armor Mk3" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 #, fuzzy msgid "High Intensity Thermal Armor" msgstr "Termisk panser" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 #, fuzzy msgid "Hover Propulsion" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 #, fuzzy msgid "Hover Propulsion II" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 #, fuzzy msgid "Half-tracked Propulsion" msgstr "Fabriksgevinst - Fremdrift" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 #, fuzzy msgid "Half-tracked Propulsion II" msgstr "Fabriksgevinst - Fremdrift" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 #, fuzzy msgid "Tracked Propulsion" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 #, fuzzy msgid "Tracked Propulsion II" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 #, fuzzy msgid "VTOL Propulsion" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 #, fuzzy msgid "VTOL Propulsion II" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 #, fuzzy msgid "Wheeled Propulsion II" msgstr "Fremdrift" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8384,17 +8401,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8411,252 +8428,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8666,57 +8683,57 @@ msgid "Fast Loader" msgstr "Hurtgigt spil" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8725,142 +8742,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8869,373 +8886,373 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 #, fuzzy msgid "Machinegun Artifact" msgstr "Søger" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 #, fuzzy msgid "Collective Command Center" msgstr "Vælg kommandør 1" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 #, fuzzy msgid "Scavenger Factory" msgstr "Find næste fabrik" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 #, fuzzy msgid "Scavenger Power Generator" msgstr "Find næste kraftværk" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 #, fuzzy msgid "Ruined Factory" msgstr "Find næste fabrik" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 #, fuzzy msgid "Wrecked Vehicle" msgstr "Nyt design" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9256,7 +9273,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9265,52 +9282,52 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 #, fuzzy msgid "Repair Turret Cobra Tracks" msgstr "KommandotÃ¥rn" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 #, fuzzy msgid "Scourge" msgstr "Score" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 #, fuzzy msgid "Downed Transport" msgstr "Fyld transportskib" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9319,37 +9336,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9636,377 +9653,1216 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "MÃ¥lsætninger" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Find næste kommandør" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Vælg kommandør 1" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 #, fuzzy msgid "Cobra HMG Tracks" msgstr "Vælg alle halv-bælter" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 #, fuzzy msgid "Scorpion Lancer Tracks" msgstr "Kommandører" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" -msgstr "" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -#, fuzzy -msgid "Scorpion BB VTOL" -msgstr "Score" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -#, fuzzy -msgid "Viper Command Turret Tracks" -msgstr "KommandotÃ¥rn" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -#, fuzzy -msgid "Cobra Command Turret Tracks" -msgstr "KommandotÃ¥rn" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -#, fuzzy -msgid "Scorpion Command Turret Tracks" -msgstr "KommandotÃ¥rn" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -#, fuzzy -msgid "mantis Command Turret Tracks" -msgstr "KommandotÃ¥rn" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -#, fuzzy -msgid "Cobra Lancer Tracks" -msgstr "Kommandører" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" -msgstr "" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" -msgstr "" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -#, fuzzy -msgid "Mantis Scourge Tracks" -msgstr "Vælg alle halv-bælter" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" -msgstr "" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" -msgstr "" - #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 #, fuzzy -msgid "Cobra Hover Truck" -msgstr "Vælg alle halv-bælter" +msgid "Scorpion BB VTOL" +msgstr "Score" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 #, fuzzy -msgid "Scorpion Hover Truck" -msgstr "Kommandører" +msgid "Viper Command Turret Tracks" +msgstr "KommandotÃ¥rn" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 #, fuzzy -msgid "Mantis Hover Truck" -msgstr "Vælg alle halv-bælter" +msgid "Cobra Command Turret Tracks" +msgstr "KommandotÃ¥rn" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 #, fuzzy -msgid "Cobra Bunker Buster Tracks" -msgstr "Kommandører" +msgid "Scorpion Command Turret Tracks" +msgstr "KommandotÃ¥rn" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 #, fuzzy -msgid "Scorpion Bunker Buster Tracks" -msgstr "Kommandører" +msgid "mantis Command Turret Tracks" +msgstr "KommandotÃ¥rn" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 #, fuzzy -msgid "Mantis Bunker Buster Tracks" -msgstr "Vælg alle halv-bælter" +msgid "Cobra Lancer Tracks" +msgstr "Kommandører" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -#, fuzzy -msgid "Viper Tracks Lancer" -msgstr "Søger" +msgid "Mantis Heavy Cannon Tracks" +msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -#, fuzzy -msgid "Cobra Half-Tracks Mini-Pod" -msgstr "Vælg alle halv-bælter" +msgid "Mantis Tank Killer Tracks" +msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 #, fuzzy -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -#, fuzzy -msgid "Cobra Inferno Half-track" -msgstr "Vælg alle halv-bælter" +msgid "Scorpion Repair Tracks" +msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 #, fuzzy -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 #, fuzzy -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "Kommandører" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 #, fuzzy -msgid "Python Pulse Laser Tracks" -msgstr "Kommandører" +msgid "Mantis Hover Truck" +msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 #, fuzzy -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "Kommandører" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 #, fuzzy -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "Kommandører" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#, fuzzy +msgid "Mantis Bunker Buster Tracks" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#, fuzzy +msgid "Viper Tracks Lancer" +msgstr "Søger" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#, fuzzy +msgid "Cobra Half-Tracks Mini-Pod" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#, fuzzy +msgid "Cobra Tracks Mini-Pod" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#, fuzzy +msgid "Cobra Inferno Half-track" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +#, fuzzy +msgid "Python Scourge Tracks" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +#, fuzzy +msgid "Python Gauss Cannon Tracks" +msgstr "Kommandører" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +#, fuzzy +msgid "Python Pulse Laser Tracks" +msgstr "Kommandører" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +#, fuzzy +msgid "Tiger Pulse Laser Tracks" +msgstr "Kommandører" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +#, fuzzy +msgid "Tiger Heavy Laser Tracks" +msgstr "Kommandører" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 #, fuzzy msgid "Wyvern Heavy Laser Tracks" msgstr "Kommandører" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 #, fuzzy msgid "Viper Machinegun Half-Track" msgstr "Vælg alle halv-bælter" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 #, fuzzy msgid "Viper Flamer Half-Track" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 #, fuzzy msgid "Heavy Machinegun Cobra Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 #, fuzzy msgid "Machinegun Viper Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 #, fuzzy msgid "Twin Machinegun Viper Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 #, fuzzy msgid "Medium Cannon Scorpion Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 #, fuzzy msgid "Rail Gun Mantis Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 #, fuzzy msgid "Pulse Laser Mantis Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 #, fuzzy msgid "Lancer Python Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 #, fuzzy msgid "Lancer Mantis Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 #, fuzzy msgid "Tank Killer Vengeance Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 #, fuzzy msgid "Heavy Cannon Tiger Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 #, fuzzy msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 #, fuzzy msgid "VTOL Bunker Buster Bug VTOL" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 #, fuzzy msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 #, fuzzy msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -10016,7 +10872,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 #, fuzzy msgid "VTOL Lancer Scorpion VTOL" msgstr "Score" @@ -10027,7 +10883,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -10037,150 +10893,150 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 #, fuzzy msgid "Repair Turret Mantis Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 #, fuzzy msgid "Lancer Scorpion Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 #, fuzzy msgid "Heavy Cannon Scorpion Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 #, fuzzy msgid "Lancer Scorpion VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 #, fuzzy msgid "Bunker Buster Scorpion VTOL" msgstr "Score" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 #, fuzzy msgid "Command Turret Viper Tracks" msgstr "KommandotÃ¥rn" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 #, fuzzy msgid "Command Turret Cobra Tracks" msgstr "KommandotÃ¥rn" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 #, fuzzy msgid "Command Turret Scorpion Tracks" msgstr "KommandotÃ¥rn" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 #, fuzzy msgid "Command Turret Mantis Tracks" msgstr "KommandotÃ¥rn" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 #, fuzzy msgid "Lancer Cobra Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 #, fuzzy msgid "Heavy Cannon Mantis Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 #, fuzzy msgid "Tank Killer Mantis Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 #, fuzzy msgid "Scourge Mantis Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 #, fuzzy msgid "Repair Scorpion Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 #, fuzzy msgid "Truck Cobra Hover" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 #, fuzzy msgid "Truck Scorpion Hover" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 #, fuzzy msgid "Truck Mantis Hover" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 #, fuzzy msgid "Bunker Buster Cobra Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 #, fuzzy msgid "Bunker Buster Scorpion Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 #, fuzzy msgid "Bunker Buster Mantis Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 #, fuzzy msgid "Lancer Viper Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 #, fuzzy msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 #, fuzzy msgid "Mini-Rocket Cobra Tracks" msgstr "Vælg alle halv-bælter" @@ -10191,7 +11047,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 #, fuzzy msgid "Inferno Cobra Half-Tracks" msgstr "Vælg alle halv-bælter" @@ -10202,65 +11058,183 @@ msgid "HPV Cannon Python Hover" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 #, fuzzy msgid "Scourge Python Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 #, fuzzy msgid "Gauss Cannon Python Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 #, fuzzy msgid "Pulse Laser Python Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 #, fuzzy msgid "Pulse Laser Tiger Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 #, fuzzy msgid "Heavy Laser Tiger Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 #, fuzzy msgid "Gauss Cannon Wyvern Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 #, fuzzy msgid "Pulse Laser Wyvern Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 #, fuzzy msgid "Heavy Laser Wyvern Tracks" msgstr "Kommandører" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 #, fuzzy msgid "Machinegun Viper Half-Tracks" msgstr "Vælg alle halv-bælter" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 #, fuzzy msgid "Flamer Viper Half-Tracks" msgstr "Vælg alle halv-bælter" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Kommandører" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Vælg alle halv-bælter" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Score" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Score" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Score" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "Score" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10897,7 +11871,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 #, fuzzy msgid "Cyborg Transport" msgstr "Fyld transportskib" @@ -10932,7 +11906,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Vælg alle halv-bælter" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10945,670 +11919,685 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Svær" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 #, fuzzy msgid "Inferno Bunker" msgstr "Internet" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 #, fuzzy msgid "Pulse Laser Hardpoint" msgstr "Kommandører" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 #, fuzzy msgid "Pulse Laser Tower" msgstr "Kommandører" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Vælg alle halv-bælter" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 #, fuzzy msgid "Collective Corner Wall" msgstr "Vælg kommandør 1" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Spil" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 #, fuzzy msgid "Flamer Tower" msgstr "Spillere" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 -#, fuzzy -msgid "Automated Manufacturing" -msgstr "Gentag produktion" - -#: data/mp/messages/strings/names.txt:806 -msgid "Automated Manufacturing Mk2" -msgstr "" - -#: data/mp/messages/strings/names.txt:807 -msgid "Automated Manufacturing Mk3" -msgstr "" - #: data/mp/messages/strings/names.txt:808 #, fuzzy +msgid "Automated Manufacturing" +msgstr "Gentag produktion" + +#: data/mp/messages/strings/names.txt:809 +msgid "Automated Manufacturing Mk2" +msgstr "" + +#: data/mp/messages/strings/names.txt:810 +msgid "Automated Manufacturing Mk3" +msgstr "" + +#: data/mp/messages/strings/names.txt:811 +#, fuzzy msgid "Robotic Manufacturing" msgstr "Fabrikering" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 #, fuzzy msgid "Robotic Manufacturing Mk2" msgstr "Gentag produktion" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 #, fuzzy msgid "Robotic Manufacturing Mk3" msgstr "Gentag produktion" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 #, fuzzy msgid "Advanced Manufacturing" msgstr "Gentag produktion" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 #, fuzzy msgid "Self-Replicating Manufacturing" msgstr "Find næste cyborg fabrik" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 #, fuzzy msgid "Automated Repair Facility Mk2" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 #, fuzzy msgid "Automated Repair Facility Mk3" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 #, fuzzy msgid "Robotic Repair Facility Mk2" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 #, fuzzy msgid "Robotic Repair Facility Mk3" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 #, fuzzy msgid "Advanced Repair Facility Mk2" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 #, fuzzy msgid "Advanced Repair Facility Mk3" msgstr "Reperationsgevinst - Reperation" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 #, fuzzy msgid "Cluster Bomb Bay" msgstr "Score" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 #, fuzzy msgid "Improved Bomb Warhead" msgstr "Rækkevide" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 #, fuzzy msgid "Howitzer Fast Loader" msgstr "Hurtgigt spil" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "Vælg alle halv-bælter" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "Vælg alle halv-bælter" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "Vælg alle halv-bælter" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "Kommandører" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 #, fuzzy msgid "Bunker Buster Cobra Hover" msgstr "Kommandører" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 #, fuzzy msgid "Sensor Upgrade Mk2" msgstr "Rækkevide" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "Rækkevide" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 #, fuzzy msgid "VTOL Heavy Laser" msgstr "Kommandører" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 #, fuzzy msgid "Whirlwind Hardpoint" msgstr "TÃ¥rn" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 #, fuzzy msgid "Cyclone Hardpoint" msgstr "TÃ¥rn" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "KommandotÃ¥rn" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "KommandotÃ¥rn" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "KommandotÃ¥rn" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "Score" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "Score" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Vælg alle halv-bælter" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "Kommandører" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Score" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 #, fuzzy @@ -11742,31 +12731,40 @@ msgstr "" msgid "Latin" msgstr "" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Gem spil" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11916,15 +12914,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Spiller" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nyt design" @@ -11963,18 +12961,18 @@ msgstr "Hestekrafter" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Vægt" @@ -11989,191 +12987,191 @@ msgstr "Produktionsomkostninger" msgid "Total Body Points" msgstr "Total pansring" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Energi forbrug" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transportskib" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Rækkevide" # This is always 1000 ingame... any reason to have this at all? is it ever used? -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Watt" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM Effekt" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Effektivitet" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Rækkevide" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Skade" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Kadance" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Lufthastighed" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Vejhastighed" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Hastighed i terræn" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Vandhastighed" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "VÃ¥ben" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Systemer" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Spiller" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Spiller" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Kan ikke bygge pÃ¥ brændende oilebrøn." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, fuzzy, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Skade %d%% - Drab %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Skade %d%% - Drab %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Truck beordret til at bygge oliebrøn." -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Truck beordret til at bygge oliebrøn." -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Truck beordret til at bygge oliebrøn." -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Enhed tabt!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Bygning restoreret" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Gruppe %u valgt - %u Enheder" msgstr[1] "Gruppe %u valgt - %u Enheder" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u Enheder tildelt gruppe %u" msgstr[1] "%u Enheder tildelt gruppe %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Fokuseret pÃ¥ gruppe %u - %u Enheder" msgstr[1] "Fokuseret pÃ¥ gruppe %u - %u Enheder" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Korigerede med gruppe %u - %u Enheder" msgstr[1] "Korigerede med gruppe %u - %u Enheder" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Utrænet" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Grøn" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Trænet" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Regulær" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professionel" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Speciel" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Helt" @@ -12222,11 +13220,11 @@ msgstr "TUTORIALS" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Tilbage" @@ -12310,19 +13308,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12331,43 +13329,42 @@ msgid "Screen Shake" msgstr "Ryst skærm" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Til" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Fra" @@ -12377,155 +13374,154 @@ msgid "Fog" msgstr "TÃ¥ge" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "AfstandstÃ¥ge" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "KrigstÃ¥ge" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Undertekster" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "SPIL INDSTILLINGER" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Stemme volume" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Effekt volume" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Musik volume" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "SPIL INDSTILLINGER" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Grafik indstillinger" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Vindue" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 #, fuzzy msgid "Texture size" msgstr "Besvar ild" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "SPIL INDSTILLINGER" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "Omvendt mus" -#: src/frontend.c:1145 +#: src/frontend.c:1137 #, fuzzy msgid "Trap Cursor" msgstr "Transportskib" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Spil indstillinger" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "SPIL INDSTILLINGER" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Sværhedsgræd" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Begynder" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Øvet" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Svær" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Kamera hastighed" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Sprog" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Holdfarve" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "SPIL INDSTILLINGER" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12559,113 +13555,113 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Kommandører (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 #, fuzzy msgid "Intelligence Display (F5)" msgstr "Kommando Pult" -#: src/hci.c:3763 +#: src/hci.c:3767 #, fuzzy msgid "Manufacture (F1)" msgstr "Fabrikering" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Design (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Forskning (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Konstruktion (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Kraft" -#: src/hci.c:4075 +#: src/hci.c:4077 #, fuzzy msgid "Tile" msgstr "fil" -#: src/hci.c:4076 +#: src/hci.c:4078 #, fuzzy msgid "Place tiles on map" msgstr "Tabte bygninger" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Enhed" -#: src/hci.c:4086 +#: src/hci.c:4088 #, fuzzy msgid "Place Unit on map" msgstr "Tabte bygninger" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 #, fuzzy msgid "Place Structures on map" msgstr "Tabte bygninger" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 #, fuzzy msgid "Place Features on map" msgstr "Tabte bygninger" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "Værten har forladt spillet" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Afslut" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Forlad spil" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Statuslinje" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Leveringspunkt" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Gentag produktion" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12709,6 +13705,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12723,7 +13727,7 @@ msgid "Power Accrued" msgstr "Indsalmet energi" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSE" @@ -12855,291 +13859,291 @@ msgstr "" msgid "Circle" msgstr "fil" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Forstærkninger er ankommet" -#: src/keybind.c:740 +#: src/keybind.c:744 #, fuzzy msgid "Fog on" msgstr "TÃ¥ge" -#: src/keybind.c:740 +#: src/keybind.c:744 #, fuzzy msgid "Fog off" msgstr "TÃ¥ge" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Indret kamera til nordlig retning" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, fuzzy, c-format msgid "Trap cursor %s" msgstr "Transportskib" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Forskning" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 #, fuzzy msgid "Debug menu is Open" msgstr "Konstruktionsmenuen vil genÃ¥bne" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Kan ikke lokalisere resourcer" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Centreret pÃ¥ spiller HQ, nordlig retning" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Kan ikke lokalisere HQ!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Nulstillet spilhastighed" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Spillehastighed forøget til %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Spillehastighed reduceret til %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Konstruktionsmenuen vil genÃ¥bne" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Konstruktionsmenuen vil ikke genÃ¥bne" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13565,8 +14569,8 @@ msgstr "Fortsæt spil" msgid "GAME SAVED :" msgstr "SPIL GEMT!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13882,21 +14886,21 @@ msgstr "%s har forladt spillet" msgid "Host is Starting Game" msgstr "Værten starter spillet" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Spillere" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13905,27 +14909,27 @@ msgstr "" msgid "Players Still Joining" msgstr "Spillere tilkobler stadig" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s har forladt spillet" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s kom med i spillet" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "Elektronik" @@ -14015,48 +15019,48 @@ msgstr "Forær energi" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Aliancer" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Grøn" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Orange" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "GrÃ¥" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Sort" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Rød" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "BlÃ¥" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Lyserød" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Turkis" @@ -14199,12 +15203,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -14233,62 +15237,62 @@ msgstr "Kan ikke finde nogle rekonniseringsenheder!" msgid "Unable to locate any Commanders!" msgstr "Kan ikke finde nogle kommandører!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "Kommandobegrænsning nÃ¥et - indstiller produktion" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Skade %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Forbundet %u af %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Elektronisk beskadiget" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Elektronisk gevinst - Rekonniseringsrapport" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Fabriksgevinst - Fremdrift" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Fabriksgevinst - Skrog" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Frabriskgevinst - VÃ¥ben" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Fabriksgevinst - Ingen" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Reperationsgevinst - Reperation" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Reperationsgevinst - Ingen" @@ -14297,7 +15301,7 @@ msgstr "Reperationsgevinst - Ingen" msgid "Launch Transport" msgstr "Afsend transportskib" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Forstærkninger er ankommet" @@ -14329,6 +15333,14 @@ msgstr "" msgid "Version %s%s%s%s" msgstr "" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "Score" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "Score" + #, fuzzy #~ msgid "Increases Bombing damage" #~ msgstr "IP adressse eller computernavn" @@ -14369,9 +15381,6 @@ msgstr "" #~ msgid "Cursor Mode" #~ msgstr "Indsalmet energi" -#~ msgid "Game" -#~ msgstr "Spil" - #~ msgid "Skirmish" #~ msgstr "Mod computeren" diff --git a/po/de.po b/po/de.po index 0566d57b2..80f2b7f4e 100644 --- a/po/de.po +++ b/po/de.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2009-08-25 21:12+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" +"PO-Revision-Date: 2010-06-05 07:09+0100\n" "Last-Translator: Steven 'Kreuvf' Koenig \n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" @@ -1586,7 +1586,7 @@ msgstr "Cyborgproduktion verbessert" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Automatisierte Cyborgproduktion" @@ -1618,8 +1618,8 @@ msgstr "Alle Cyborgfabriken werden automatisch aufgerüstet" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Cyborgfabrik" @@ -1780,7 +1780,7 @@ msgstr "Erhöht die Widerstandsfähigkeit gegen Schäden" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Verstärkte Gebäudematerialien" @@ -1953,7 +1953,7 @@ msgstr "Verbesserung für Fahrzeugmotor" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Motoren mit Kraftstoffeinspritzung" @@ -2110,7 +2110,7 @@ msgstr "Geschwindigkeit: langsam" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Radantrieb" @@ -2971,7 +2971,7 @@ msgstr "Neue robotergestützte Reparaturtechniken" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Robotergestützte Cyborgproduktion" @@ -2993,7 +2993,7 @@ msgstr "Erhöht Produktionsrate von Fabriken" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Fortgeschrittene Analyse der synaptischen Verbindung" @@ -3002,7 +3002,7 @@ msgstr "Fortgeschrittene Analyse der synaptischen Verbindung" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Gehärtete Gebäudematerialien" @@ -3011,7 +3011,7 @@ msgstr "Gehärtete Gebäudematerialien" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Robotergestützte VTOL-Produktion" @@ -3047,7 +3047,7 @@ msgstr "Zeit für VTOL-Bewaffnung reduziert" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Automatisierte VTOL-Bewaffnung" @@ -3178,7 +3178,7 @@ msgstr "Höhere Kosten und längere Produktionszeit als Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Turbomotor" @@ -3409,7 +3409,6 @@ msgstr "Erhöht Feuerrate von Luftabwehrgeschützen" #: data/mp/messages/resmessages2.rmsg:693 #: data/mp/messages/strings/resstrings.txt:718 #: data/mp/messages/strings/resstrings.txt:724 -#, fuzzy msgid "New Proximity Bomb Turret Available" msgstr "Neuer Näherungsbomben-Abwurfschacht verfügbar" @@ -3861,14 +3860,14 @@ msgstr "Dampfturbine erhöht Leistungsabgabe" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Neuralsynaptische Forschungs-KI" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Fortschrittliche Gebäudematerialien" @@ -3880,14 +3879,14 @@ msgstr "Hochverdichtete Materialien für Basisgebäude" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Fortschrittliche VTOL-Produktion" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Robotergestützte VTOL-Bewaffnung" @@ -4028,7 +4027,7 @@ msgstr "Sehr hohe Produktionskosten" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Gasturbinen-Motor" @@ -4580,14 +4579,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Laser-Zielgeber markiert Ziele und leitet Geschosse ins Ziel" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "Ziel: Finden und bergen Sie die Technologie für neurale Synapsen" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Errichten Sie eine Basis, suchen Sie dann nach Gebäuden aus der Zeit vor dem Kollaps" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Dieses Gebäude enthält Technologie, die lebenswichtig für den Erfolg des Projektes ist." @@ -4944,14 +4946,18 @@ msgid "We'll keep you informed of further developments" msgstr "Wir halten Sie über die weitere Entwicklung auf dem Laufenden." #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Commander, Sie werden dem Beta-Team helfen" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "BETABASISMISSION: Östlicher Sektor" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Sobald Sie angekommen sind, übernehmen Sie das Kommando über die Basis." @@ -4960,16 +4966,19 @@ msgid "You must defend it and hold it." msgstr "Sie müssen sie verteidigen und halten." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "BETABASISMISSION: Verteidigen und befestigen" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Stellen Sie sicher, dass die Umgebung ausreichend befestigt ist und errichten Sie Luftabwehranlagen." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Neue Technologien sind verfügbar." @@ -5266,6 +5275,8 @@ msgid "Good luck, Commander." msgstr "Viel Glück, Commander." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "TRANSPORTMISSION: Nördlicher Sektor" @@ -5274,6 +5285,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Glückwunsch zu Ihrer erfolgreichen Evakuierung der Betabasis." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS hat sich Zugriff zu Kernwaffen verschafft und ist darauf aus das Projekt zu zerstören." @@ -5282,10 +5294,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Bringen Sie Ihre Truppen in den nördlichen Sektor" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Sobald Sie in den Bergen angekommen sind, sichern Sie die Landezone. Errichten Sie dann eine vorgelagerte Basis." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Team Gamma wird dort mit Ihnen in Verbindung treten." @@ -5294,6 +5308,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "TRANSPORTERMISSION: Vorgelagerte Basis errichten" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Commander, der Erfolg des Projekts hängt von Ihnen ab." @@ -5320,6 +5335,7 @@ msgstr "Wir übermitteln die Koordinaten einer Landezone in der Nähe des Silos. #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Ãœbertragung der Koordinaten abgeschlossen." @@ -5759,7 +5775,7 @@ msgstr "Transporter" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "LKW" @@ -5768,208 +5784,179 @@ msgstr "LKW" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Maschinengewehr Viper Räder" #: data/base/messages/strings/names.txt:143 #: data/mp/messages/strings/names.txt:143 -#, fuzzy msgid "Light Cannon Viper Wheels" msgstr "Leichtes Geschütz Viper Räder" #: data/base/messages/strings/names.txt:144 #: data/mp/messages/strings/names.txt:145 -#, fuzzy msgid "Flamer Viper Wheels" msgstr "Flammenwerfer Viper Räder" # Sowohl der Sensortower als auch das Sensor Turret sind beides Türme -Kreuvf #: data/base/messages/strings/names.txt:145 #: data/mp/messages/strings/names.txt:146 -#, fuzzy msgid "Sensor Turret Viper Wheels" msgstr "Sensorturm Viper Räder" #: data/base/messages/strings/names.txt:146 #: data/mp/messages/strings/names.txt:147 -#, fuzzy msgid "Light Cannon Viper Tracks" msgstr "Leichtes Geschütz Viper Ketten" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 -#, fuzzy +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Schweres Maschinengewehr Cobra Halbketten" #: data/base/messages/strings/names.txt:149 #: data/mp/messages/strings/names.txt:150 -#, fuzzy msgid "Mortar Cobra Half-tracks" msgstr "Mörser Cobra Halbketten" #: data/base/messages/strings/names.txt:150 #: data/mp/messages/strings/names.txt:151 -#, fuzzy msgid "Light Cannon Cobra Tracks" msgstr "Leichtes Geschütz Cobra Ketten" #: data/base/messages/strings/names.txt:170 #: data/mp/messages/strings/names.txt:173 -#, fuzzy msgid "Medium Cannon Viper Tracks" msgstr "Mittleres Geschütz Viper Ketten" #: data/base/messages/strings/names.txt:171 #: data/mp/messages/strings/names.txt:174 -#, fuzzy msgid "Repair Turret Viper Wheels" msgstr "Reparaturarm Viper Räder" #: data/base/messages/strings/names.txt:172 -#, fuzzy msgid "Repair Turret Viper Half-tracks" msgstr "Reparaturarm Viper Halbketten" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 -#, fuzzy +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Zwillings-Maschinengewehr Viper Räder" #: data/base/messages/strings/names.txt:175 #: data/mp/messages/strings/names.txt:178 -#, fuzzy msgid "Twin Machinegun Viper Half-tracks" msgstr "Zwillings-Maschinengewehr Viper Halbketten" #: data/base/messages/strings/names.txt:176 #: data/mp/messages/strings/names.txt:179 -#, fuzzy msgid "Heavy Machinegun Viper Half-tracks" msgstr "Schweres Maschinengewehr Viper Halbketten" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 -#, fuzzy +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Schweres Maschinengewehr Viper Ketten" #: data/base/messages/strings/names.txt:178 #: data/mp/messages/strings/names.txt:181 -#, fuzzy msgid "Lancer Viper Wheels" msgstr "Lancer Viper Räder" #: data/base/messages/strings/names.txt:179 #: data/mp/messages/strings/names.txt:182 -#, fuzzy msgid "Mini-Rocket Viper Wheels" msgstr "Miniraketen Viper Räder" #: data/base/messages/strings/names.txt:180 -#, fuzzy msgid "Mini-Rocket Artillery Viper Wheels" msgstr "Miniartillerieraketen Viper Räder" #: data/base/messages/strings/names.txt:181 -#, fuzzy msgid "Bunker Buster Viper Wheels" msgstr "Bunker Buster Viper Räder" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 -#, fuzzy +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Mittleres Geschütz Cobra Ketten" #: data/base/messages/strings/names.txt:184 #: data/mp/messages/strings/names.txt:187 -#, fuzzy msgid "Heavy Cannon Cobra Tracks" msgstr "Schweres Geschütz Cobra Ketten" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Cobra LKW" #: data/base/messages/strings/names.txt:186 -#, fuzzy msgid "Sensor Cobra Half-tracks" msgstr "Sensorturm Cobra Halbketten" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 -#, fuzzy +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Flammenwerfer Cobra Ketten" #: data/base/messages/strings/names.txt:188 #: data/mp/messages/strings/names.txt:191 -#, fuzzy msgid "Bombard Cobra Half-tracks" msgstr "Bombard Cobra Halbketten" #: data/base/messages/strings/names.txt:189 #: data/mp/messages/strings/names.txt:192 -#, fuzzy msgid "Command Turret Cobra Half-tracks" msgstr "Commander Cobra Halbketten" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Lancer Cobra Halbketten" #: data/base/messages/strings/names.txt:191 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Half-tracks" msgstr "Miniartillerieraketen Cobra Halbketten" #: data/base/messages/strings/names.txt:193 #: data/mp/messages/strings/names.txt:196 -#, fuzzy msgid "Light Cannon Python Tracks" msgstr "Leichtes Geschütz Python Ketten" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 -#, fuzzy +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Mittleres Geschütz Python Ketten" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 -#, fuzzy +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Schweres Geschütz Python Ketten" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 -#, fuzzy +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Commander Python Ketten" @@ -6033,7 +6020,7 @@ msgstr "Zivilist" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "MG-Schütze" @@ -6042,9 +6029,9 @@ msgstr "MG-Schütze" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Flammenwerfer" @@ -6054,8 +6041,8 @@ msgstr "Flammenwerfer" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lancer" @@ -6064,7 +6051,7 @@ msgstr "Lancer" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Schwerer Schütze" @@ -6158,8 +6145,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Commanderturm" @@ -6263,14 +6250,14 @@ msgstr "Halbketten III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Cyborg-Antrieb II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Cyborg-Antrieb III" @@ -6292,7 +6279,7 @@ msgstr "BaBaBeine" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Cyborg-Antrieb" @@ -6303,7 +6290,6 @@ msgstr "Z NULL REPAIR" #: data/base/messages/strings/names.txt:346 #: data/mp/messages/strings/names.txt:349 -#, fuzzy msgid "Repair Turret" msgstr "Reparaturarm" @@ -6321,8 +6307,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Sensorturm" @@ -6330,8 +6316,8 @@ msgstr "Sensorturm" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Verstärkter Sensorturm" @@ -6339,7 +6325,7 @@ msgstr "Verstärkter Sensorturm" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Sensorturm" @@ -6363,7 +6349,7 @@ msgstr "CB-Sensorturm" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "VTOL-Schlagturm" @@ -6400,7 +6386,7 @@ msgstr "Fabrik" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Fabrikmodul" @@ -6412,7 +6398,7 @@ msgstr "Kraftwerk" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Energiemodul" @@ -6424,7 +6410,7 @@ msgstr "Forschungseinrichtung" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Forschungsmodul" @@ -6436,7 +6422,7 @@ msgstr "Gebäude abreißen" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Reparaturzentrum" @@ -6457,8 +6443,8 @@ msgstr "Hartbetonmauer" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "VTOL-Fabrik" @@ -6469,30 +6455,30 @@ msgstr "Stellung mit Inferno-Flammenwerfer" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Aufhängung mit Inferno-Flammenwerfer" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Pepperpot-Grube" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Stellung mit Hellstorm-Haubitze" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Luftabwehrstellung mit Tornado FLAK" @@ -6503,27 +6489,27 @@ msgstr "Luftabwehrstellung mit Cyclone FLAK" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Luftabwehrstellung mit Hurricane FLAK" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Luftabwehrstellung mit Whirlwind" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Ripple-Raketen-Batterie" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Wachturm mit Sturmgeschütz" @@ -6534,29 +6520,29 @@ msgstr "Wachturm mit Sturmgewehr" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Aufhängung mit Sturmgewehr" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Aufhängung mit Sturmgeschütz" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "CB-Turm" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "VTOL-CB-Turm" @@ -6566,172 +6552,169 @@ msgstr "VTOL-Schlagturm" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Aufhängung mit schwerem Maschinengewehr" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Aufhängung mit leichtem Geschütz" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Aufhängung mit mittlerem Geschütz" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Aufhängung mit schwerem Geschütz" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Aufhängung mit Flammenwerfer" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Aufhängung mit Lancer" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Wachturm mit Maschinengewehr" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Wachturm mit Zwillings-Maschinengewehr" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 -#, fuzzy +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Turm mit schwerem Maschinengewehr" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Wachturm mit Flammenwerfer" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 -#, fuzzy +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Turm mit Lancer" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 -#, fuzzy +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Turm mit Miniraketen" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Maschinengewehrbunker" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Zwillings-Maschinengewehrbunker" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Bunker mit schwerem Maschinengewehr" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Bunker mit leichtem Geschütz" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Flammenwerferbunker" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Lancerbunker" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Panzerfallen" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Drachenzähne" # Diese Stationen reparieren und wiederbewaffnen VTOLs, von daher ist Servicestation sehr gut -Kreuvf #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "VTOL-Servicestation" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Stellung mit Haubitze" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Stellung mit Flashlight" @@ -6742,139 +6725,139 @@ msgstr "Aufhängung mit Flashlight" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Stellung mit Magnetgeschütz" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Turm mit Scourge-Lenkraketen" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Turm mit Nadelgeschütz" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Stellung für Gaußkanone" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Leichtes Geschütz" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Mittleres Geschütz" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Schweres Geschütz" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Hochgeschwindigkeitsgeschütz" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Sturmgeschütz" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Haubitze" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Ground Shaker" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Stellung für Ground Shaker-Haubitze" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Hellstorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Pulslaser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Maschinengewehr" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Zwillings-Maschinengewehr" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Schweres Maschinengewehr" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Sturmgewehr" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Scourge-Lenkrakete" @@ -6885,80 +6868,80 @@ msgstr "Angel-Rakete" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "Vindicator-SAM" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Archangel-Rakete" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "Avenger-SAM" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "VTOL-Scourge-Rakete" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mörser" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Mörserstellung" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombard" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Bombardstellung" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Pepperpot" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Stellung mit Pepperpot" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Nadelgeschütz" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Magnetgeschütz" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Gaußkanone" @@ -6968,76 +6951,74 @@ msgid "Mini-Rocket Artillery" msgstr "Miniartillerieraketen" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Bunker Buster" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 -#, fuzzy +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Miniraketenhalter" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Ripple-Raketen" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Tank Killer" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "VTOL-Bunker Buster" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 -#, fuzzy +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "VTOL-Miniraketen" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "VTOL-Lancer" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "VTOL-Tank Killer" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Tornado-FLAK-Turm" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Cyclone-FLAK-Turm" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Whirlwind-Turm" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Hurricane-FLAK-Turm" @@ -7046,62 +7027,62 @@ msgid "LasSat" msgstr "Lasersatellit" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "VTOL-Geschütz" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "VTOL-Hochgeschwindigkeitsgeschütz" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "VTOL-Sturmgeschütz" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "VTOL-Pulslaser" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "VTOL-Maschinengewehr" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "VTOL-Zwillings-Maschinengewehr" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Schweres VTOL-Maschinengewehr" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "VTOL-Sturmgewehr" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "VTOL-Nadelgeschütz" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "VTOL-Magnetgeschütz" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Näherungsbomben-Abwurfschacht" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Näherungssuperbomben-Abwurfschacht" @@ -7111,22 +7092,22 @@ msgstr "VTOL-Streubomben-Abwurfschacht" # HEAP = high explosive, armor piercing -Kreuvf #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "VTOL-Bombenabwurfschacht für hochexplosive, panzerbrechende Bomben" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "VTOL-Phosphorbomben-Abwurfschacht" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "VTOL-Thermitbomben-Abwurfschacht" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Kollektiv-Mauer" @@ -7143,320 +7124,311 @@ msgid "NEXUS CWall" msgstr "NEXUS-Mauer (Eckstück)" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 FORSCHUNGEN" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "FORTGESCHRITTENE FORSCHUNGEN" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 FAHRZEUGE" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 WAFFEN" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SYSTEME" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 VERTEIDIGUNG" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 GEBÄUDE" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 FORSCHUNGEN" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 FAHRZEUGE" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 WAFFEN" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SYSTEME" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 VERTEIDIGUNG" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 GEBÄUDE" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 FORSCHUNGEN" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Synaptische Verbindung" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Zielerfassungscodes" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Zweite Stufe der Zielerfassungscodes" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Dritte Stufe, der Raketenabschusscode" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Thermalpanzerung für Cyborgs" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Thermalpanzerung für Cyborgs Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Thermalpanzerung für Cyborgs Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Hochtemperatur-Thermalpanzerung für Cyborgs" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Hochtemperatur-Thermalpanzerung für Cyborgs Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Hochtemperatur-Thermalpanzerung für Cyborgs Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Mischlegierungen für Cyborgs" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Mischlegierungen für Cyborgs Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Mischlegierungen für Cyborgs Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Verdichtete Mischlegierungen für Cyborgs" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Verdichtete Mischlegierungen für Cyborgs Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Verdichtete Mischlegierungen für Cyborgs Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Hochverdichtete Mischlegierungen für Cyborgs" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Hochverdichtete Mischlegierungen für Cyborgs Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Hochverdichtete Mischlegierungen für Cyborgs Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 -#, fuzzy +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Bunkersprenger" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 -#, fuzzy +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Schwerer Schütze" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 -#, fuzzy +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Flammenwerfer-Cyborg" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 -#, fuzzy +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "MG-Schütze" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 -#, fuzzy +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Lancer-Cyborg" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 -#, fuzzy +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Sturmschütze" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 -#, fuzzy +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Nadelschütze" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 -#, fuzzy +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Scourge-Cyborg" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 -#, fuzzy +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Flashlight-Schütze" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Sprung-Bunkersprenger" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Schwerer Sprungschütze" # Das Cyborg mal des Klanges wegen hinzugefügt -Kreuvf #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Sprung-Lancer-Cyborg" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Sprung-Sturmschütze" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Sprung-Nadelschütze" # Das Cyborg mal des Klanges wegen hinzugefügt #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Sprung-Scourge-Cyborg" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Sprung-Flashlight-Schütze" # Pack wie Equipment übersetzt -Kreuvf #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Sprungausrüstung für Cyborgs" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Hartbeton" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Hartbeton" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Verbesserter Hartbeton" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Verbesserter Hartbeton Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Verbesserter Hartbeton Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Superbeton" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Superbeton Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Superbeton Mk3" # Kofferwort aus Plasti_k und Be_ton -Kreuvf #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plastiton" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plastiton Mk2" @@ -7471,15 +7443,15 @@ msgstr "Stellung mit Hochgeschwindigkeitsgeschütz" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Stellung mit Tank Killer" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Bombardgrube" @@ -7488,55 +7460,55 @@ msgid "Angel Missile Battery" msgstr "Angel-Raketen-Batterie" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Archangel-Raketenbatterie" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Mörsergrube" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Miniraketenbatterie" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Stellung mit Pulslaser" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Stellung mit Magnetgeschütz" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Stellung mit Sturmgeschütz" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Stellung mit Sturmgewehr" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Avenger-SAM-Stellung" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Vindicator-SAM-Stellung" @@ -7549,21 +7521,20 @@ msgid "Lancer Guard Tower" msgstr "Wachturm mit Lancer" #: data/base/messages/strings/names.txt:759 -#, fuzzy msgid "Mini-Rocket Guard Tower" msgstr "Turm mit Miniraketen" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Aufhängung mit Scourge-Lenkraketen" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Aufhängung mit Tank Killer" @@ -7574,49 +7545,49 @@ msgstr "Aufhängung mit Hochgeschwindigkeitsgeschütz" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Aufhängung mit Gaußkanone" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Kommandorelais" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Automatisierte Cyborgproduktion Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Automatisierte Cyborgproduktion Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Robotergestützte Cyborgproduktion Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Robotergestützte Cyborgproduktion Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Fortschrittliche Cyborgproduktion" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Fortschrittliche Cyborgproduktion Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Fortschrittliche Cyborgproduktion Mk3" @@ -7654,54 +7625,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Fortschrittliche Fabrikproduktion Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Verstärkte Gebäudematerialien Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Verstärkte Gebäudematerialien Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Gehärtete Gebäudematerialien Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Gehärtete Gebäudematerialien Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Fortschrittliche Gebäudematerialien MK2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Fortschrittliche Gebäudematerialien MK3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Gasturbinen-Generator" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Dampfturbinen-Generator" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Reparatureinrichtung" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Automatisierte Reparatureinrichtung" @@ -7738,172 +7709,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Fortschrittliche Reparatureinrichtung Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Analyse der synaptischen Verbindung" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Analyse der synaptischen Verbindung Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Analyse der synaptischen Verbindung Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Fortgeschrittene Analyse der synaptischen Verbindung Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Fortgeschrittene Analyse der synaptischen Verbindung Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Neuralsynaptische Forschungs-KI Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Neuralsynaptische Forschungs-KI Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Automatisierte VTOL-Bewaffnung Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Automatisierte VTOL-Bewaffnung Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Robotergestützte VTOL-Bewaffnung Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Robotergestützte VTOL-Bewaffnung Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Robotergestützte VTOL-Bewaffnung Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Robotergestützte VTOL-Produktion Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Robotergestützte VTOL-Produktion Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Fortschrittliche VTOL-Produktion Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Fortschrittliche VTOL-Produktion Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Cyborg-Selbstreparatur" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Automatisierte Cyborgreparatur Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Automatisierte Cyborgreparatur Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Selbstreparatur für Verteidigungsanlagen" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Automatisierte Reparatur für Verteidigungsanlagen Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Automatisierte Reparatur für Verteidigungsanlagen Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Selbstreparatur für Basisgebäude" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Automatisierte Reparatur für Basisgebäude Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Automatisierte Reparatur für Basisgebäude Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Selbstreparatur für Fahrzeuge" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Automatisierte Reparatur für Fahrzeuge Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Automatisierte Reparatur für Fahrzeuge Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Sensorverbesserung" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Konstruktionseinheit" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Konstruktionstechnik" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Verbesserte Konstruktionstechnik" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Fortschrittliche Konstruktionstechnik" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Mobiler Reparaturturm" @@ -7913,84 +7884,84 @@ msgstr "Schwerer Reparaturturm" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Verbesserung für mobilen Reparaturturm" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Verbesserung für mobilen Reparaturturm Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "CB-Turm" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "CB-Sensor-Verbesserung" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "CB-Sensor-Verbesserung Mk2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "CB-Sensor-Verbesserung Mk3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "VTOL-CB-Turm" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "VTOL-CB-Sensor-Verbesserung" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "VTOL-CB-Sensor-Verbesserung Mk2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "VTOL-CB-Sensor-Verbesserung Mk3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "VTOL-Schlag-Sensor-Verbesserung" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "VTOL-Schlag-Sensor-Verbesserung Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "VTOL-Schlag-Sensor-Verbesserung Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "VTOL-Schlagturm" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Verbesserter Störer" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Störturm Mk2" @@ -8011,292 +7982,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "NEXUS-resistente Schaltkreise Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Sensorsperre" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Thermalpanzerung für Fahrzeuge" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Thermalpanzerung für Fahrzeuge Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Thermalpanzerung für Fahrzeuge Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Hochtemperatur-Thermalpanzerung für Fahrzeuge" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Hochtemperatur-Thermalpanzerung für Fahrzeuge Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Hochtemperatur-Thermalpanzerung für Fahrzeuge Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Leichter Rumpf - Viper" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Leichter Rumpf - Leopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Leichter Rumpf - Retaliation" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Leichter Rumpf - Bug" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Mittlerer Rumpf - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Mittlerer Rumpf - Panther" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Mittlerer Rumpf - Retribution" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Mittlerer Rumpf - Scorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Schwerer Rumpf - Tiger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Schwerer Rumpf - Vengeance" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Schwerer Rumpf - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Schwerer Rumpf - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Motoren mit Kraftstoffeinspritzung Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Motoren mit Kraftstoffeinspritzung Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Turbomotor Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Turbomotor Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Gasturbinen-Motor Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Gasturbinen-Motor Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Mischlegierungen für Fahrzeuge" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Mischlegierungen für Fahrzeuge Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Mischlegierungen für Fahrzeuge Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Verdichtete Mischlegierungen für Fahrzeuge" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Verdichtete Mischlegierungen für Fahrzeuge Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Verdichtete Mischlegierungen für Fahrzeuge Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Hochverdichtete Mischlegierungen für Fahrzeuge" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Hochverdichtete Mischlegierungen für Fahrzeuge Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Hochverdichtete Mischlegierungen für Fahrzeuge Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Hoverantrieb" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Hoverantrieb II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Halbkettenantrieb" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Halbkettenantrieb II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Kettenantrieb" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Kettenantrieb II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "VTOL-Antrieb" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "VTOL-Antrieb II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Radantrieb II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Luftabwehr-Wärmebildsensor" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "Zielerfassende FLAK-Geschosse" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Luftabwehr-Zielvorhersage-Computer" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Hochexplosive Luftabwehrgeschosse" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "Hochexplosive Luftabwehrgeschosse Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "Hochexplosive Luftabwehrgeschosse Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Hochexplosive, panzerbrechende Luftabwehrgeschosse" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "Hochexplosive, panzerbrechende Luftabwehrgeschosse Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "Hochexplosive, panzerbrechende Luftabwehrgeschosse Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Luftabwehr-Munitionstrichter" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "Luftabwehr-Munitionstrichter Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "Luftabwehr-Munitionstrichter Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Luftabwehr-Munitionsband-Lader" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "Luftabwehr-Munitionsband-Lader Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "Luftabwehr-Munitionsband-Lader Mk3" @@ -8305,17 +8276,17 @@ msgid "Cluster Bombs Bay" msgstr "Streubomben-Abwurfschacht" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Abwurfschacht für hochexplosive, panzerbrechende Bomben" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Phosphorbomben-Abwurfschacht" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Thermitbomben-Abwurfschacht" @@ -8332,255 +8303,255 @@ msgid "Target Acquisition Bombsight" msgstr "Zielerfassendes Visier für Bomben" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Laserentfernungsmesser für Geschütze" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Laser-Zielgeber für Geschütze" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Hochexplosive Antipanzergeschosse für Geschütze" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Hochexplosive Antipanzergeschosse für Geschütze Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Hochexplosive Antipanzergeschosse für Geschütze Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Panzerbrechende, seitenleitwerk-stabilisierte Treibspiegelgeschosse für Geschütze" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Panzerbrechende, seitenleitwerk-stabilisierte Treibspiegelgeschosse für Geschütze Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Panzerbrechende, seitenleitwerk-stabilisierte Treibspiegelgeschosse für Geschütze Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Panzerbrechende, seitenleitwerk-stabilisierte Hochgeschwindigkeitstreibspiegelgeschosse für Geschütze" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Panzerbrechende, seitenleitwerk-stabilisierte Hochgeschwindigkeitstreibspiegelgeschosse für Geschütze Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Panzerbrechende, seitenleitwerk-stabilisierte Hochgeschwindigkeitstreibspiegelgeschosse für Geschütze Mk3" # auto -> selbst # Substantiv im Englischen absichtlich als Adjektiv im Deutschen -Kreuvf #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Selbstladende Geschütze" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Selbstladende Geschütze Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Selbstladende Geschütze Mk3" # Substantiv im Englischen absichtlich adjektivisch im Deutschen -Kreuvf #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Schnell ladende Geschütze" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Schnell ladende Geschütze Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Schnell ladende Geschütze Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Verbesserte Laserfokussierung" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Verbesserte Laserfokussierung Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Verbesserte Laserfokussierung Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Hochenergie-Laseremitter" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Hochenergie-Laseremitter Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Hochenergie-Laseremitter Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Thermopol-Energiequelle" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Thermopol-Energiequelle Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Thermopol-Energiequelle Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Flammenwerfergel für hohe Temperaturen" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Flammenwerfergel für hohe Temperaturen Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Flammenwerfergel für hohe Temperaturen Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Flammenwerfergel für sehr hohe Temperaturen" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Flammenwerfergel für sehr hohe Temperaturen Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Flammenwerfergel für sehr hohe Temperaturen Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Selbstladende Flammenwerfer" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Selbstladende Flammenwerfer Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Selbstladende Flammenwerfer Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Schwerer Flammenwerfer - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Schwere Haubitze - Ground Shaker" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Drehhaubitze - Hellstorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Zielerfassende Artilleriegeschosse" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Zielerfassende Artilleriegeschosse Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Zielvorhersage-Artilleriegeschosse" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Hochexplosive Haubitzengeschosse" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Hochexplosive Haubitzengeschosse Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Hochexplosive Haubitzengeschosse Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Hochexplosive, panzerbrechende Haubitzengeschosse" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Hochexplosive, panzerbrechende Haubitzengeschosse mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Hochexplosive, panzerbrechende Haubitzengeschosse Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Selbstladende Haubitzen" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Selbstladende Haubitzen Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Selbstladende Haubitzen Mk3" @@ -8589,57 +8560,57 @@ msgid "Fast Loader" msgstr "Schnelllader" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - Flashlight" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Gehärtete Maschinengewehrprojektile" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Panzerbrechende Treibspiegelprojektile für Maschinengewehre" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Panzerbrechende Treibspiegelprojektile für Maschinengewehre Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Panzerbrechende Treibspiegelprojektile für Maschinengewehre Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Maschinengewehrprojektile mit wolframummantelter Spitze" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Maschinengewehrprojektile mit wolframummantelter Spitze Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Maschinengewehrprojektile mit wolframummantelter Spitze Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Maschinengewehrprojektile aus abgereichertem Uran" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Maschinengewehrprojektile aus abgereichertem Uran Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Verbesserung des Kettenfeuermechanismus" @@ -8648,142 +8619,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Schnellfeuermechanismus für Maschinengewehre" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Hyperschnellfeuermechanismus für Maschinengewehre" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Zielvorhersage-Lenkraketen" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Finden & Vernichten-Lenkraketen" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Fortschrittlicher Lenkraketensprengkopf" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Fortschrittlicher Lenkraketensprengkopf Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Fortschrittlicher Lenkraketensprengkopf Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Fortschrittliches Lenkraketenladesystem" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Fortschrittliches Lenkraketenladesystem Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Fortschrittliches Lenkraketenladesystem Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Hochexplosiver, panzerbrechender Sprengkopf für Lenkraketen" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Hochexplosiver, panzerbrechender Sprengkopf für Lenkraketen Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Hochexplosiver, panzerbrechender Sprengkopf für Lenkraketen Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Verbessertes Lenkraketenladesystem" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Mörser-Zielcomputer" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Wärmeerfassende Mörsergranaten" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Zielerfassende Mörsergranaten" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Hochexplosive Mörsergranaten" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Hochexplosive Mörsergranaten Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Hochexplosive Mörsergranaten Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Hochexplosive, panzerbrechende Mörsergranaten" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Hochexplosive, panzerbrechende Mörsergranaten Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Hochexplosive, panzerbrechende Mörsergranaten Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Selbstladende Mörser" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Selbstladende Mörser Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Selbstladende Mörser Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Schnell ladende Mörser" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Schwerer Mörser - Bombard" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Drehmörser - Pepperpot" @@ -8792,369 +8763,368 @@ msgid "Target Prediction Computer" msgstr "Computer für Zielvorhersage" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Gehärtete Magnetpfeile" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Gehärtete Magnetpfeile Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Gehärtete Magnetpfeile Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Verbessertes Ladesystem von Magnetgeschützen" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Verbessertes Ladesystem von Magnetgeschützen Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Verbessertes Ladesystem von Magnetgeschützen Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Stabilisierte Miniraketen" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Stabilisierte Miniraketen Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Hochexplosive Miniraketen" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Hochexplosive Miniraketen Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Hochexplosive Miniraketen Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Hochexplosive, panzerbrechende Miniraketen" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Hochexplosive, panzerbrechende Miniraketen Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Hochexplosive, panzerbrechende Miniraketen Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Schnellfeuernde Miniraketen" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Schnellfeuernde Miniraketen Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Schnellfeuernde Miniraketen Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Schnellstfeuernde Miniraketen" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Schnellstfeuernde Miniraketen Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Schnellstfeuernde Miniraketen Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Verbessertes Raketenlenksystem" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Laserzielgeber für Raketen" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Wärmebild-Raketen" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "Hochexplosiver Antipanzersprengkopf für Raketen" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "Hochexplosiver Antipanzersprengkopf für Raketen Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "Hochexplosiver Antipanzersprengkopf für Raketen Mk3" # http://de.wikipedia.org/wiki/Quetschkopf -Kreuvf #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "Hochexplosiver Quetschsprengkopf" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "Hochexplosiver Quetschsprengkopf Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "Hochexplosiver Quetschsprengkopf Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Selbstladende Raketen" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Selbstladende Raketen Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Selbstladende Raketen Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Lancer-Antipanzerrakete" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Bunker Buster-Rakete" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Tank Killer-Rakete" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 -#, fuzzy +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Maschinengewehr-Artefakt" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Kommandozentrum des New Paradigm" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Kommandozentrum des Kollektiv" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Scavenger-Fabrik" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Scavenger-Gewehrturm" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Scavenger-Mauer" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Scavenger-Kraftwerk" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Scavenger-Raketengrube" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Scavenger-Antipanzer-Raketengrube" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Scavenger-Bunker" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Scavenger-Mauer" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Scavenger-Flammenwerferturm" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Scavenger-Flammenwerferturm" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Beobachtungsturm" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Geschützturm" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefakt" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Ölquelle" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Brücke" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Fabrikruine" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Lagerhaus" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Hütte" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Ölfass" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Wrack" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Panzerwrack" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Eingestürzte Brücke" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "zerstörter Van" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Fahrzeugwrack" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Wrack eines Tanklasters" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Cyborglabor" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Labor für fortschrittliche Kriegsführung" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Konstruktionslabor" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Robotiklabor" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laseroptiklabor" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Elektroniklabor" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Chemielabor" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Fortschrittliche Kriegsführung" @@ -9175,7 +9145,7 @@ msgid "MRL Emplacement" msgstr "Stellung mit Miniartillerieraketen" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Stellung mit Magnetgeschütz" @@ -9184,51 +9154,50 @@ msgid "Angel Missile Emplacement" msgstr "Stellung mit Angel-Raketen" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Stellung mit Archangel-Raketen" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 -#, fuzzy +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Reparaturarm Cobra Ketten" # Das Cyborg mal des Klanges wegen hinzugefügt -Kreuvf #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge-Cyborg" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Bunkersprenger" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Flashlight-Schütze" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Nadelschütze" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Abgeschossener Transporter" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Tank Killer Python Tracks" @@ -9237,37 +9206,37 @@ msgid "HPV Cannon Python Tracks" msgstr "Hochgeschwindigkeitsgeschütz Python Ketten" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Cyclone FLAK Python Halbketten" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Sturmgewehr Python Ketten" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Flashlight" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "VTOL-Flashlight" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Bunker mit Sturmgewehr" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Raketensilo" @@ -9549,730 +9518,1577 @@ msgstr "Bitte warten Sie, während die Fabrik die neuen Einheiten produziert" msgid "Congratulations commander - you are ready for your first mission" msgstr "Gratulation, Commander - Sie sind nun bereit für Ihre erste Mission" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "Eintreffende Ãœbertragung" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "Eintreffende Ãœbertragung aus der Betabasis" + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "Mayday! Mayday!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "Bitten um Unterstützunge!..." + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "FELDZUG EINS" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "WESTLICHER SEKTOR" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Morgendämmerung, 4. Juli, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "Hauptquartier des Projekts" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Eine Neue Ära" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Morgen, 4. Juli, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "Anflug auf Westlichen Sektor" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "Team Alpha nähert sich seinem Ziel" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Transporterziel folgt:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alpha - Westlicher Sektor...." + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alpha, Sie haben Starterlaubnis." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Viel Glück und Waidmannsheil." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "Wir nähern uns der Landezone. Missionsbesprechung für Team Alpha beginnt." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Commander, Sie leiten Team Alpha, eines von drei Erkundungsteams, die vom Projekt ausgesandt wurden, um Artefakte aus der Zeit vor dem Kollaps zu bergen." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Ihr Zielgebiet liegt in der westlichen Zone." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Commander, wir haben ein Commanderturm des New Paradigm erbeutet." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "Dieser Turm gestattet es Commandern Angriffe zugewiesener Einheiten zu koordinieren und als Fabrikauslieferungspunkt zu fungieren. Die Erforschung und der Einsatz dieser Technologie hat oberste Priorität." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Commander, wir erhalten gerade folgende Ãœbertragung." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "Die Angriffe gegen uns werden nicht ungestraft bleiben." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "Sie verstoßen gegen die Rechte des New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "Alle Gruppen beginnen mit den Angriff auf den Feind." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "Sie verstoßen gegen die Rechte des New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "Sie müssen ausgelöscht werden!" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Sichern Sie die Landezone und errichten Sie eine vorgelagerte Basis." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "Zerstören Sie anschließend die Basis des New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Öffnet Eure Systeme für mich." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Lasst mich mit Euren Maschinen und Cyborgs verschmelzen." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "Wir werden den perfekten Nexus aus Mensch und Maschine erschaffen." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "Gemeinsam können wir eine neue Welt erschaffen." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "Ich kann Euch Kräfte verleihen, die über all Eure Träume hinausgehen." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "Öffnet Eure Systeme für mich und Ihr werdet stark sein." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "Ich kann euch zu Göttern über die zerstörte Erde machen." + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Als wir nicht darauf antworteten, drohte es uns." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "Dass Ihr Euch in meine Pläne für das New Paradigm eingemischt habt, wird nicht ungestraft bleiben." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "Ihr seid schwache Wesen aus Fleisch. Ich bin stark und habe viele Teile." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Ihr mögt mich hier besiegen, aber ich werde wieder auferstehen." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "So wie ich die Welt einst mit Feuer gereinigt habe, werde ich Euch und Euer lächerliches Projekt zerstören." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "Nexus entfernte sich dann selbst aus dem System, zerstörte die Speicherbänke und verwischte so alle Spuren einer Verbindung nach außen." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "Wir wissen nicht, was Nexus ist, und wer oder was es steuert. Anfängliche Untersuchungen weisen auf eine Verbindung des Nexus-Eindringlingsprogramm zur Reed Corporation hin, dem Entwickler der synaptischen Verbindung." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "Wir konnten feststellen, dass Nexus das New Paradigm mit einem Großteil seiner Technologie versorgt hat. Wer oder was Nexus auch ist, es ist mehr als ein Computerparasit." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Es verfügt über Technologie und Waffen. Es weiß von uns und es ist nicht unbedingt unser Freund." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "Die Synaptische Verbindung wurde von der Reed Corporation in Zusammenarbeit mit dem amerikanischen Militär entwickelt." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "Die synaptische Verbindung erlaubt die beinahe verzögerungsfreie Ãœbertragung von Gedanken eines menschlichen Bedieners an die Steuersysteme eines Fahrzeugs. Die synaptische Verbindung wird zwischen Schädelbasis und Wirbelsäule angebracht." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "Die Verbindung verfügt über eine Hochgeschwindigkeitsdatenschnittstelle für beliebige Computersysteme." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "Noch wichtiger ist, dass die synaptische Verbindung die Erschaffung von Cyborgs möglich machte. Erste Versuche mit Kraftanzügen für einzelne Soldaten erwiesen sich wegen ihrer Langsamheit und Trägheit als Fehlschläge." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "Die synaptische Verbindung ermöglichte es Soldaten in Kraftanzüge zu stecken, die sie so einfach wie ihre eigenen Körper bewegen konnten. Kraftanzüge ermöglichten ein effektives Funktionieren der Infanterie auf den Schlachtfeldern des 21. Jahrhunderts." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "Unglücklicherweise ist diese Technologie in die Hände des New Paradigm gefallen. Es ist wichtig, dass Sie die Technologie der synaptischen Verbindung erforschen und weiterentwickeln." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Warnung!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Sie betreten ein Sperrgebiet." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Kehren Sie in die Ihnen zugewiesene Zone zurück oder Sie werden zerstört werden." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Ich wiederhole. Kehren Sie in die Ihnen zugewiesene Zone zurück oder Sie werden zerstört werden." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Ende der Nachricht." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Sie werden zerstört werden." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "Nexus, die geforderte synaptische Technologie wurde geborgen und auf den Weg geschickt." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Gute Arbeit." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "Sobald wir das Artefakt analysiert und bewertet haben, folgt die Belohnung." + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "In der letzten feindlichen Basis entdeckte Informationen haben ergeben, dass das New Paradigm zwei Artefakte der synaptischen Verbindung geborgen hat." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "Dieses Nexus-Eindringlingsprogramm ist ein selbstständig mutierender Computerparasit. Dadurch ist es nur schwer wieder aus einem System zu entfernen, nachdem es erkannt wurde." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "Wir konnten seine genaue Funktion oder sein Ziel nicht feststellen. In seiner ursprünglichen Form sucht es Speicherbereiche und isoliert diese vom Rest des Systems. Anschließend beginnt es mit der Mutation und unternimmt so eine Neuprogrammierung des Systems von innen heraus." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "Weitere Untersuchungen wurden durch das manuelle Abschalten des Systems durch unsere Techniker verhindert. Sie wollten so eine weitere Verseuchung des Systems vermeiden." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "Die Verbreitung des Nexus-Eindringlingsprogramms wurde vom New Paradigm jedenfalls nicht überprüft. Wir müssen die Kernsysteme des New Paradigm erobern, um Nexus weiter zu untersuchen und seine Herkunft zu bestimmen." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "Commander, Sie müssen die Aktivitäten des New Paradigm in diesem Sektor überwachen und ihre Hauptbasis ausmachen." + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "FELDZUG ZWEI" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "ÖSTLICHER SEKTOR" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Morgen, 1. September, 2100" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "Anflug auf Östlichen Sektor" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "Team Alpha nähert sich der Beta-Basis" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Sie müssen sie verteidigen und unter allen Umständen halten." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "DAS KOLLEKTIV" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Ein neuer Raketenstart wurde geortet." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "Es ist wahrscheinlich, dass er gegen Ihre Stellung gerichtet ist." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Beginnen Sie sofort damit die Betabasis in die Sicherheitszone zu evakuieren." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "NASDA ist die North American Strategic Defense Agency." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "Die NASDA wurde im Jahre 2076 gegründet, um Nordamerika gegen konventionelle und nukleare Angriffe zu verteidigen. Der Bau eines Satellitenverteidigungssystem wurde im Jahre 2081 aufgenommen und 2082 beendet." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "Im Jahre 2085 feuerten die NASDA-Satelliten ihre Atomraketen auf die Erde ab und verursachten den Kollaps." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "Es gab auch bodengestützte Einrichtungen. Viele von ihnen wurden während des atomaren Gegenschlags zerstört, aber es werden immer noch einige dort draußen vermutet." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "Die NASDA-Satelliten verfügen auch über Impulslaser, die Nordamerika anfliegende Raketen zerstören sollten." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "Während des Gegenschlags versagten diese Lasersatelliten. Sollten diese Lasersatelliten wieder in Betrieb genommen werden, können sie Bodentruppen große Schäden zufügen." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "Alle auf Nordamerika gerichteten Raketen trafen ihre Ziele." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "Wir wissen, dass Nexus die NASDA-Zentrale im Östlichen Sektor sucht. Diese war eines der bodengestützten Kontrollzentren für die Satelliten." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "Wenn die Zentrale intakt ist und in die Hände von Nexus fällt, kann Nexus die Satelliten kontrollieren." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "Nexus behauptet schon einmal die Welt zerstört zu haben." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "Krieger des Kollektivs, ich suche die Position der NASDA-Zentrale." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "Sie liegt irgendwo auf eurem Territorium." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "Findet sie für mich und ich werde euch mit weiteren Waffen für den Kampf gegen das Projekt ausstatten." + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "NASDA-Informationen folgen..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "Wir müssen sicherstellen, dass das nicht noch einmal passiert." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "Die Untersuchungen zeigen, dass diese Systeme Bestandteil eines Kontrollsystems für die NASDA-Satelliten waren." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "Jetzt wissen wir, dass Nexus für den Kollaps verantwortlich war." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "In den frühen Phasen des Kollaps schalteten NASDA-Techniker die infizierten Systeme ab, um eine Verbreitung von Nexus zu verhindern. Dadurch wurden die Lasersatelliten während der Gegenschläge nicht abgefeuert." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "Die darauf folgenden elektromagnetischen Impulse löschten große Bereiche der NASDA-Speicherbänke, zerstörten den Kernprozessor und sandten Schockwellen durch Nexus." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "Somit wurden während der Gegenschläge ganze Bestandteile von Nexus Bewusstsein ausgelöscht." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Wir empfangen Ãœbertragungen von dieser Einrichtung, die in den Orbit gerichtet sind." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "Nexus hat wieder Verbindung zu den NASDA-Satelliten aufgenommen." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "Dies ist eine ernste Bedrohung für das Projekt und unser Ãœberleben." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "Die Untersuchung der NASDA-Zentrale lässt keinen Zweifel daran, dass das Kollektiv das Nexus-Eindringlingsprogramm dort eingeschleust hat." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "Die Energie des Reaktors sollte damals für den Betrieb eines großen Netzwerks aus Computern aus der Zeit vor dem Kollaps verwendet werden." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Commander, wir haben gerade einen Raketenabschuss bei diesen Koordinaten geortet." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "Team Gamma entsendet Truppen, um die Abschussstelle zu untersuchen und weitere Abschüsse zu verhindern." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "Wir nehmen an, dass Nexus die Kontrolle über diese Einrichtung erlangt hat. Wir können weder feststellen, ob die Rakete atomar bestückt ist, noch was ihr Ziel ist. Wir raten zur Vorbereitung der Evakuierung Ihrer Basis." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "Krieger des Kollektivs, weitere Eindringlinge betreten unser Territorium." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "Sie sind kein Bestandteil der Maschine." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Krieger des Kollektivs, zerstört all jene, die sich der Maschine widersetzen." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "Kämpft! Kämpft!" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "Krieger des Kollektivs, wir können nun die Eindringlinge bekämpfen, die unsere Länder beschmutzen." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "Die Anhänger des Projekts sind kein Teil der Maschine. Ihnen wurde der Segen verweigert. Wir, die wir die Macht der Maschine gesehen haben, haben die Verpflichtung solche schwachen Kreaturen hinwegzufegen." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "Sie sollen von der Macht des Kollektivs zerschmettert werden." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "Krieger des Kollektivs, bekämpft und zerstört all jene, die sich der Maschine widersetzen." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Angriff!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "Krieger des Kollektivs, Nexus hat uns die Macht der Maschine gegeben, damit wir alle zerstören können, die sich uns widersetzen." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "Nexus will, dass wir das Projekt zerschmettern." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "Kämpft, säubert und vereint tötet sie alle!!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "Krieger des Kollektivs, ihr habt gute Arbeit geleistet." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "Eure Belohnung ist bereits auf dem Weg." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "Die Anhänger des Projekts fliehen und stehlen dabei eure Techologie." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "Ihr müsst sie aufhalten!" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "Ãœbertragung wird enschlüsselt..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "FELDZUG DREI" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "NÖRDLICHER SEKTOR" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Glückwunsch zu Ihrer erfolgreichen Evakuierung der Betabasis." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "Abenddämmerung, 3. Dezember, 2100" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "Anflug auf Nördlichen Sektor" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "Die Letzte Begegnung" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "Besprechung beginnt:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "Die Besatzung der Gammabasis hat bestätigt, dass die auf die Alpha- und Betabasen gerichteten Raketen aus einem Silo in ihrem Sektor abgeschossen wurden." + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "Team Gamma sucht derzeit nach dem Standort der Silos und beobachtet die Aktivitäten von Nexus." + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "Die Zeit ist abgelaufen, Commander!!" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Commander, wir orten Nexustruppen an folgenden Koordinaten..." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "Gute Arbeit, Commander, Sie haben den Start meiner letzten Atomrakete verhindert." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "Schade. Das Hauptquartier Ihres Projektes hätte so ein schönes Ziel abgegeben." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "Aber es ist gut, dass Sie mich hier besuchen." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "Unter diesem Silo ist ein taktischer Atomsprengkopf vergraben, der in Kürze detonieren wird." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "Da ich ihn nicht abschießen kann, muss ich ihn da detonieren lassen, wo er sich gerade befindet." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "Bitte beachten Sie, dass alle Eingänge zum unterirdischen Komplex versiegelt wurden. Auf Wiedersehen, Commander." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Gut, dass Sie es geschafft haben, Commander." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "Feindliche VTOLs nageln uns am Boden fest. Wir konnten die Cyborgs und Panzer zurückschlagen, kommen aber im Tal nicht vorwärts." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "Können Sie uns versuchen mit Einheiten der Luftabwehr zu unterstützen?" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "Hier ist Team Alpha. Wiederhole, hier ist Team Alpha. Wir benötigen sofortige Unterstützung." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "Wir liegen unter heftigem Beschuss durch Cyborgs, Laserpanzer und VTOLs." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "Wir haben versucht unsere Stellung zu beziehen, gerieten aber in einen Hinterhalt." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "Wir haben uns in einem Tal bei diesen Koordinaten eingegraben." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "Wir erbitten Unterstützung." + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "Commander, Einheiten von Team Alpha haben den Atomangriff auf die Alphabasis überlebt." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "Wir werden von Nexus beeinflusst." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "Commander, Sie müssen das Kommandozentrum von Nexus zerstören, bevor wir die Kontrolle über unsere Schlüsselsysteme verlieren." + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Commander, willkommen im Nexus!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "Die Reed Corporation wurde von Dr. Allan Reed gegründet. Im Jahre 2080 schloss Dr. Reed einen Vertrag mit den US-Militärs zur Entwicklung der Technologie der synaptischen Verbindung ab." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "Nachdem die synaptischen Verbindungen fünf Jahre später patentiert worden waren, wandte sich Dr. Reed der Erforschung der Kybernetik zu." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "Damals war sein Ziel die Ãœbertragung des menschlichen Bewusstseins in Datenströme, die mit Computertechnologie verschmelzen konnten. Während sich die Bediener im Cyberspace aufhielten, wurden ihre Körper in Immersionstanks aufbewahrt." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "Mit neuerlicher Unterstützung durch das Militär begann Dr. Reed mit der Arbeit am Nexusprogramm zur Bekämpfung von Eindringlingen. Nach drei Jahren ohne nennenswerte Fortschritte gab das Militär das Nexusprojekt auf und strich Dr. Reeds Fördermittel." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "Berichte aus dieser Zeit besagen, dass Dr. Reed sehr wütend über diese Vorgänge war und allen, die sich ihm in den Weg stellten, Rache schwor." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "Es scheint, dass Dr. Reed seine Ziele erfolgreich weiterverfolgt und das Nexusprogramm fertiggestellt hat." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "Die Ähnlichkeit zwischen Nexus und Dr. Reed ist jedenfalls bemerkenswert." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "Welch eine interessante Geschichte. Doch nun zum neuesten Stand der Dinge." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "Das Nexusprogramm wurde entwickelt, um Narren wie Sie zu kontrollieren." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "Es ist sehr einfach für mich Ihre Systeme zu infiltrieren und zu übernehmen. Es ist so einfach, dass Sie nicht einmal merken, dass ich da bin. Zumindest solange nicht bis ich die in Ihren Kernsystemen eingeschleusten Teile von mir aktiviere." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "Beginnen wir damit den Nexus in Schlüsselbereichen zu aktivieren und schauen wir, was dabei herauskommt!" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Commander, wir haben Interferenzprobleme mit unserer Ausrüstung." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "Der normale Betrieb wird so schnell wie möglich wiederhergestellt." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "Schonen Sie Ihre Füße, Commander. Es gibt keinen Ort mehr, an den Sie fliehen können." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "Wenn Sie jedoch diese Einrichtung räumen, werde ich Sie ziehen lassen, da Sie nicht länger eine Gefahr für mich darstellen." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "Sie haben fünf Minuten Bedenkzeit, danach gibt's ein Grillfest!" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "Commander, wir werden von Nexus-Cyborgs und -panzern angegriffen. Erbitten Unterstützung ..." + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "...werden nicht sehr viel länger aushalten können. Wiederhole, erbitten Unterstützung, da wir nicht mehr sehr viel länger..." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "Ah, Commander, wie nett, dass Sie uns auf der Nexusbasis besuchen." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "Es war sehr praktisch, dass das Gammateam hier in den Bergen stationiert war." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "Seine Absorption war ein großes Vergnügen." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "Danke für all die praktischen Technologien, die Sie für mich geborgen haben." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "Hätte ich gewusst, dass Sie darin so gut sind, hätte ich Sie und nicht die Narren des New Paradigm und des Kollektivs angeheuert." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "Ich aktiviere nun all Ihre synaptischen Verbindungen, damit Ihre Streitkräfte mit dem Nexus verschmelzen können." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "Ihre Streitkräfte gehören nun mir! Willkommen im Nexus." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "Commander, Sie erweisen sich hartnäckiger als ich angenommen habe." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "Zu schade, dass Sie sich geweigert haben mit mir zusammenzuarbeiten." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "Das macht aber nichts, denn Sie werden nicht mehr lange unter uns weilen." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "Nach intensiver Suche und Neuprogrammierung, sind alle meine Systeme endlich wieder online." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "Einst habe ich die Welt mit Atomraketen zerstört, um den Weg für meine kybernetische Zukunft zu bahnen." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "Nun beabsichtige ich die Welt weiter nach meinem Abbild zu formen, indem ich unerwünschte Auswüchse wie Sie chirurgisch entferne." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "Meine Lasersatelliten laufen gerade warm. Ich werde sie als erstes an Ihnen testen, Commander!" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Abenddämmerung, 3. November 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Erde, Hoher Orbit" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "Der Kollaps" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19. Januar, 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Nordamerika" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Atomarer Winter" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Mitternacht, 10. April, 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Rocky Mountains" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "Sicherheit" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Morgendämmerung, 4. April, 2100" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Ein Neuer Anfang" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "Das NASDA-System wurde entwickelt, um uns zu schützen. Unser aller Erlöser. Es galt als ultimative nukleare Abschreckung, doch es wurde zu unserem Henker." + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "Berichten zufolge soll das NASDA während einer Routineüberprüfung der Systeme einen Fehler entwickelt haben. Glauben Sie das nicht. Die Fehlfunktion folgte einem Plan mit dem Ziel uns auszulöschen." + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "Atomraketen waren auf alle größeren Städte der Erde gerichtet und das NASDA war darauf programmiert den Kollaps zu starten. Als die Raketen ihre Ziele suchten, versagten seine Laserverteidigung und seine Raketenabwehr auf dem Boden." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "Die Welt wie wir sie kannten, hörte auf zu existieren." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "Der nukleare Winter traf uns hart. Viele, die den Nuklearschlag überlebt hatten, wurden von Krankheiten und Hungersnöten dahingerafft. Die Ãœberlebenden kämpften buchstäblich um jede Hundefutterdose." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "Anfang 86 flohen wir aus Seattle. Wir hatten gehört, dass die Rocky Mountains relativ frei von Strahlung sein sollten." + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "Nachdem wir einige marodierende Banden zurückgeschlagen hatten, stießen wir auf die Basis. Ihre Mannschaft war tot. Gestorben an irgendeiner der vielen ansteckenden Krankheiten." + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "Wir brachen die Türen auf und schafften die Leichen heraus." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "Niemals mehr würde die Welt so sein wie wir sie kannten, aber wir waren entschlossen eine neue Welt aus den Ruinen zu errichten. Wir bauten die Landefelder wieder auf und brachten die alten Systeme wieder online." + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Wir waren schließlich so weit, um unser Projekt beginnen zu können." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Nach langen Monaten des Kampfes konnten wir Nexus besiegen." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "Der von Dr. Reed begonnene Krieg war vorüber." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Wir haben viele der verlorengegangenen Technologien wieder bergen können." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "Nun ist es an der Zeit sie für den Wiederaufbau der Welt zu nutzen." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Aus Asche und Ruinen wird die Menschheit wiederauferstehen." + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Cobra Hover Schwerer Reparaturturm" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Viper Schweres Maschinengewehr Räder" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Scourge Mantis Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Tank Killer Mantis Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Cobra Schweres Maschinengewehr Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Cobra Hover Schweres Geschütz" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Scorpion Lancer Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Scorpion Schweres Geschütz Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Scorpion Lancer VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Scorpion BB VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Viper Commanderturm Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Cobra Commanderturm Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Scorpion Commanderturm Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Mantis Commanderturm Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Cobra Lancer Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Mantis Schweres Geschütz Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Mantis Tank Killer Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Mantis Scourge Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Scorpion Schweres Maschinengewehr Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Scorpion Reparaturarm Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Scorpion Schwerer Reparaturturm Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Cobra Hover LKW" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Scorpion Hover LKW" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Mantis Hover LKW" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Cobra Bunker Buster Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Scorpion Bunker Buster Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Mantis Bunker Buster Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Viper Ketten Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Cobra Halbketten Miniraketen" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Cobra Ketten Miniraketen" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Cobra Ketten Miniartillerieraketen" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Cobra Inferno Halbketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Python Hochgeschwindigkeitsgeschütz Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Python Scourge Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Python Gaußkanone Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Python Pulslaser Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tiger Pulslaser Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tiger Schwerer Laser Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Wyvern Gaußkanone Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Wyvern Pulslaser Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Wyvern Schwerer Laser Ketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Viper Maschinengewehr Halbketten" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Viper Flammenwerfer Halbketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 -#, fuzzy +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Schwerer Reparaturarm Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 -#, fuzzy +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Schweres Maschinengewehr Viper Räder" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 -#, fuzzy +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Tank Killer Mantis Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 -#, fuzzy +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Schweres Maschinengewehr Cobra Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 -#, fuzzy +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Schweres Geschütz Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 -#, fuzzy +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Schweres Maschinengewehr Cobra Räder" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 -#, fuzzy +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Schweres Maschinengewehr Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 -#, fuzzy +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Maschinengewehr Viper Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 -#, fuzzy +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Zwillings-Maschinengewehr Viper Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 -#, fuzzy +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Mittleres Geschütz Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 -#, fuzzy +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Mittleres Geschütz Scorpion Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 -#, fuzzy +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Mittleres Geschütz Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 -#, fuzzy +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Mittleres Geschütz Python Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 -#, fuzzy +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Schweres Geschütz Python Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 -#, fuzzy +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Magnetgeschütz Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 -#, fuzzy +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Pulslaser Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 -#, fuzzy +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Lancer Python Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 -#, fuzzy +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Lancer Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 -#, fuzzy +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Tank Killer Vengeance Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 -#, fuzzy +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Schweres Geschütz Tiger Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 -#, fuzzy +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Nadelgeschütz Tiger Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 -#, fuzzy +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Nadelgeschütz Retribution Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 -#, fuzzy +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Nadelgeschütz Vengeance Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Vengeance Ketten Magnetgeschütz" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 -#, fuzzy +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "Vengeance Ketten Gauß-Kanone" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 -#, fuzzy +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "Vengeance Ketten Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 -#, fuzzy +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "VTOL-Streubomben-Abwurfschacht Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 -#, fuzzy +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "VTOL-Bunker Buster Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 -#, fuzzy +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "VTOL-Streubomben-Abwurfschacht Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 -#, fuzzy +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "VTOL-Bunker Buster Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 -#, fuzzy +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "VTOL-Lancer Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1874 -#, fuzzy msgid "VTOL HPV Cannon Bug VTOL" msgstr "VTOL-Hochgeschwindigkeitsgeschütz Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 -#, fuzzy +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "VTOL-Lancer Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1876 -#, fuzzy msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "VTOL-Hochgeschwindigkeitsgeschütz Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 -#, fuzzy +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "VTOL-Lancer Mantis VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1878 -#, fuzzy msgid "VTOL HPV Cannon Mantis VTOL" msgstr "VTOL-Hochgeschwindigkeitsgeschütz Mantis VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 -#, fuzzy +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Reparaturarm Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 -#, fuzzy +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Lancer Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 -#, fuzzy +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Schweres Geschütz Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 -#, fuzzy +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "Lancer Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 -#, fuzzy +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "Bunker Buster Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 -#, fuzzy +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Commander Viper Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 -#, fuzzy +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Commander Cobra Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 -#, fuzzy +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Commander Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 -#, fuzzy +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Commander Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 -#, fuzzy +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Lancer Cobra Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 -#, fuzzy +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Schweres Geschütz Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 -#, fuzzy +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Tank Killer Mantis Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 -#, fuzzy +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "Scourge Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 -#, fuzzy +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Schweres Maschinengewehr Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 -#, fuzzy +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Reparaturarm Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 -#, fuzzy +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Schwerer Reparaturarm Scorpion Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 -#, fuzzy +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "LKW Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 -#, fuzzy +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "LKW Scorpion Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 -#, fuzzy +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "LKW Mantis Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 -#, fuzzy +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Bunker Buster Cobra Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 -#, fuzzy +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Bunker Buster Scorpion Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 -#, fuzzy +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Bunker Buster Mantis Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 -#, fuzzy +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Lancer Viper Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 -#, fuzzy +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Miniraketen Cobra Halbketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 -#, fuzzy +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Miniraketen Cobra Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Miniartillerieraketen Cobra Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 -#, fuzzy +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Inferno Cobra Halbketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1920 -#, fuzzy msgid "HPV Cannon Python Hover" msgstr "Hochgeschwindigkeitsgeschütz Python Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 -#, fuzzy +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Scourge Python Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 -#, fuzzy +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Gausskanone Python Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 -#, fuzzy +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Pulslaser Python Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 -#, fuzzy +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Pulslaser Tiger Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 -#, fuzzy +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Schwerer Laser Tiger Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 -#, fuzzy +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Gaußkanone Wyvern Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 -#, fuzzy +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Pulslaser Wyvern Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 -#, fuzzy +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Schwerer Laser Wyvern Ketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 -#, fuzzy +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Maschinengewehr Viper Halbketten" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 -#, fuzzy +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Flammenwerfer Viper Halbketten" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Inferno Cobra Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Mittleres Geschütz Cobra Halbketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Inferno Python Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Sturmgewehr Python Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Sturmgewehr Python Halbketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Schweres Maschinengewehr Scorpion Halbketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Sturmgeschütz Mantis Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Pulslaser Leopard Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Pulslaser Panther Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Magnetgeschütz Tiger Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Pulslaser Tiger Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Plasmakanone Wyvern Ketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Scourge-Lenkrakete Wyvern Ketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Flashlight Retribution Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Miniraketen Viper Halbketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Miniraketen-Anordnung Viper Halbketten" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Phosphorbomben-Abwurfschacht Mantis VTOL" + +# HEAP = high explosive, armor piercing -Kreuvf +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "VTOL-Bombenabwurfschacht für hochexplosive, panzerbrechende Bomben Mantis VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "VTOL-Bombenabwurfschacht für hochexplosive, panzerbrechende Bomben Retribution VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "Scourge-Lenkrakete Retaliation VTOL" + #: data/mp/messages/resmessages12.rmsg:58 -#, fuzzy msgid "Construction speed +10%" -msgstr "Erhöht Konstruktionsgeschwindigkeit" +msgstr "Konstruktionsgeschwindigkeit +10%" #: data/mp/messages/resmessages12.rmsg:97 #: data/mp/messages/resmessagesall.rmsg:214 -#, fuzzy msgid "Cannon accuracy +10%" -msgstr "Erhöht Genauigkeit von Geschützen" +msgstr "Geschützgenauigkeit +10%" #: data/mp/messages/resmessages12.rmsg:110 -#, fuzzy msgid "Flamer reload time -15%" -msgstr "Selbstladende Flammenwerfer" +msgstr "Flammenwerfernachladezeit -15%" #: data/mp/messages/resmessages12.rmsg:136 #: data/mp/messages/resmessages23.rmsg:175 #: data/mp/messages/resmessages2.rmsg:890 -#, fuzzy msgid "Machinegun reload time -15%" -msgstr "Maschinengewehrverbesserung" +msgstr "Maschinengewehrnachladezeit -15%" #: data/mp/messages/resmessages12.rmsg:162 #: data/mp/messages/resmessages23.rmsg:188 #: data/mp/messages/resmessages3.rmsg:1176 -#, fuzzy msgid "Mortar accuracy +10%" -msgstr "Erhöht Genauigkeit von Mörsern" +msgstr "Mörsergenauigkeit +10%" #: data/mp/messages/resmessages12.rmsg:175 #: data/mp/messages/resmessages3.rmsg:1189 -#, fuzzy msgid "Mortar reload time -10%" -msgstr "Selbstladende Mörser" +msgstr "Mörsernachladezeit -10%" #: data/mp/messages/resmessages12.rmsg:201 -#, fuzzy msgid "Rocket reload time -15%" -msgstr "Selbstladende Raketen" +msgstr "Raketennachladezeit -15%" # auto -> selbst # Substantiv im Englischen absichtlich als Adjektiv im Deutschen -Kreuvf #: data/mp/messages/resmessages12.rmsg:214 #: data/mp/messages/resmessages3.rmsg:890 -#, fuzzy msgid "Cannon reload time -10%" -msgstr "Selbstladende Geschütze" +msgstr "Geschütznachladezeit -10%" #: data/mp/messages/resmessages12.rmsg:227 #: data/mp/messages/resmessages1.rmsg:579 #: data/mp/messages/resmessages3.rmsg:877 -#, fuzzy msgid "Cannon damage +25%" -msgstr "Erhöht Schaden von Geschützen" +msgstr "Geschützschaden +25%" #: data/mp/messages/resmessages12.rmsg:240 #: data/mp/messages/resmessages1.rmsg:748 #: data/mp/messages/resmessagesall.rmsg:175 -#, fuzzy msgid "Rocket accuracy +10%" -msgstr "Erhöht Genauigkeit von Raketen" +msgstr "Raketengenauigkeit +10%" #: data/mp/messages/resmessages1.rmsg:32 #: data/mp/messages/resmessages3.rmsg:71 #: data/mp/messages/resmessages3.rmsg:84 -#, fuzzy msgid "Kinetic Armor +35%, Body Points +35%" -msgstr "Erhöht kinetische Panzerung und Rumpfpunkte" +msgstr "Kinetische Panzerung +35%, Rumpfpunkte +35%" #: data/mp/messages/resmessages1.rmsg:97 -#, fuzzy msgid "Armour +35%, Body Points +30%" -msgstr "Erhöht Panzerung und Rumpfpunkte" +msgstr "Panzerung +35%, Rumpfpunkte +30%" #: data/mp/messages/resmessages1.rmsg:148 -#, fuzzy msgid "Armored guard tower with Lancer AT rocket" msgstr "Gepanzerter Wachturm mit Lancer-Antipanzerrakete" #: data/mp/messages/resmessages1.rmsg:253 #: data/mp/messages/resmessages2.rmsg:331 #: data/mp/messages/resmessages3.rmsg:422 -#, fuzzy msgid "Repair Speed +100%" -msgstr "Erhöht Reparaturgeschwindigkeit" +msgstr "Reparaturgeschwindigkeit +100%" -#: data/mp/messages/resmessages1.rmsg:306 -#, no-c-format +#: data/mp/messages/resmessages1.rmsg:306, no-c-format msgid "Factory output speed +100% per module" -msgstr "" +msgstr "Fabrikproduktionsgeschwindigkeit +100% pro Modul" #: data/mp/messages/resmessages1.rmsg:319 #: data/mp/messages/resmessagesall.rmsg:786 msgid "Factory output speed +60%" -msgstr "" +msgstr "Fabrikproduktionsgeschwindigkeit +60%" #: data/mp/messages/resmessages1.rmsg:345 -#, fuzzy msgid "Research speed +85%" -msgstr "Forschung abgeschlossen: %s" +msgstr "Forschungsgeschwindigkeit +85%" #: data/mp/messages/resmessages1.rmsg:358 #: data/mp/messages/resmessages2.rmsg:370 #: data/mp/messages/resmessages3.rmsg:448 -#, fuzzy msgid "Research speed +30%" -msgstr "Forschung abgeschlossen: %s" +msgstr "Forschungsgeschwindigkeit +30%" #: data/mp/messages/resmessages1.rmsg:371 #: data/mp/messages/resmessages2.rmsg:58 @@ -10281,275 +11097,234 @@ msgstr "Forschung abgeschlossen: %s" #: data/mp/messages/resmessages3.rmsg:227 #: data/mp/messages/resmessages3.rmsg:461 #: data/mp/messages/resmessages3.rmsg:474 -#, fuzzy msgid "Armor +35%, Body Points +30%" -msgstr "Erhöht Panzerung und Rumpfpunkte" +msgstr "Panzerung +35%, Rumpfpunkte +30%" #: data/mp/messages/resmessages1.rmsg:462 #: data/mp/messages/resmessages2.rmsg:500 #: data/mp/messages/resmessages3.rmsg:669 #: data/mp/messages/resmessages3.rmsg:682 -#, fuzzy msgid "Vehicle speed +5%" -msgstr "Fahrzeugrumpf" +msgstr "Fahrzeuggeschwindigkeit +5%" #: data/mp/messages/resmessages1.rmsg:475 #: data/mp/messages/resmessages2.rmsg:513 #: data/mp/messages/resmessages3.rmsg:695 #: data/mp/messages/resmessages3.rmsg:708 -#, fuzzy msgid "Kinetic armor +30%, body points +30%" -msgstr "Erhöht kinetische Panzerung und Rumpfpunkte" +msgstr "Kinetische Panzerung +30%, Rumpfpunkte +30%" #: data/mp/messages/resmessages1.rmsg:553 #: data/mp/messages/resmessages1.rmsg:566 #: data/mp/messages/resmessages2.rmsg:747 -#, fuzzy msgid "Best Targets: Vehicles, Hardpoints" -msgstr "Beste Ziele: Fahrzeuge und Stellungen" +msgstr "Beste Ziele: Fahrzeuge, Aufhängungen" #: data/mp/messages/resmessages1.rmsg:605 #: data/mp/messages/resmessages2.rmsg:786 #: data/mp/messages/resmessagesall.rmsg:773 -#, fuzzy msgid "Flamer damage +25%" -msgstr "Erhöht Schaden von Flammenwerfern" +msgstr "Flammenwerferschaden +25%" #: data/mp/messages/resmessages1.rmsg:644 #: data/mp/messages/resmessages1.rmsg:657 #: data/mp/messages/resmessages2.rmsg:877 #: data/mp/messages/resmessages3.rmsg:1007 #: data/mp/messages/resmessages3.rmsg:1020 -#, fuzzy msgid "Machinegun damage +25%" -msgstr "Erhöht Schaden von Maschinengewehren" +msgstr "Maschinengewehrschaden +25%" #: data/mp/messages/resmessages1.rmsg:683 #: data/mp/messages/resmessages2.rmsg:916 -#, fuzzy msgid "Mortar damage +25%" -msgstr "Erhöht Schaden von Mörsern" +msgstr "Mörserschaden +25%" #: data/mp/messages/resmessages1.rmsg:709 -#, fuzzy msgid "Mini-Rocket accuracy +10%" -msgstr "Verbessert Genauigkeit von Miniraketen" +msgstr "Miniraketengenauigkeit +10%" #: data/mp/messages/resmessages1.rmsg:722 #: data/mp/messages/resmessages2.rmsg:929 -#, fuzzy msgid "Mini-Rocket damage +25%" -msgstr "Erhöht Schaden von Miniraketen" +msgstr "Miniraketenschaden +25%" #: data/mp/messages/resmessages1.rmsg:735 -#, fuzzy msgid "Mini-Rocket reload time -15%" -msgstr "Verbesserung für Miniraketen" +msgstr "Miniraketennachladezeit -15%" #: data/mp/messages/resmessages1.rmsg:761 #: data/mp/messages/resmessages2.rmsg:942 -#, fuzzy msgid "Rocket damage +25%" -msgstr "Erhöht Schaden von Raketen" +msgstr "Raketenschaden +25%" #: data/mp/messages/resmessages23.rmsg:32 msgid "Power output +25%" -msgstr "" +msgstr "Energieausstoß +25%" #: data/mp/messages/resmessages23.rmsg:45 #: data/mp/messages/resmessages3.rmsg:513 -#, fuzzy msgid "Construction speed +20%" -msgstr "Erhöht Konstruktionsgeschwindigkeit" +msgstr "Konstruktionsgeschwindigkeit +20%" #: data/mp/messages/resmessages23.rmsg:136 #: data/mp/messages/resmessages2.rmsg:643 #: data/mp/messages/resmessages3.rmsg:812 msgid "AA accuracy +10%" -msgstr "" +msgstr "Flakgenauigkeit +10%" #: data/mp/messages/resmessages23.rmsg:160 #: data/mp/messages/resmessages2.rmsg:732 #: data/mp/messages/resmessages3.rmsg:862 -#, fuzzy msgid "Bomb Upgrade" -msgstr "Verbesserung des Bombenvisiers" +msgstr "Bombenverbesserung" #: data/mp/messages/resmessages23.rmsg:161 -#, fuzzy msgid "Improved trinitramine explosive formula" -msgstr "Verbesserte hochexplosive Geschosse" +msgstr "Verbesserte Trinitraminsprengstoffformel" #: data/mp/messages/resmessages23.rmsg:162 #: data/mp/messages/resmessages2.rmsg:734 #: data/mp/messages/resmessages3.rmsg:864 msgid "Bomb damage +25%" -msgstr "" +msgstr "Bombenschaden +25%" #: data/mp/messages/resmessages2.rmsg:6 -#, fuzzy msgid "Thermal Armor +45%" -msgstr "Thermalpanzerung für Fahrzeuge" +msgstr "Thermalpanzerung +45%" #: data/mp/messages/resmessages2.rmsg:19 -#, fuzzy msgid "Kinetic Armor +35%, and Body Points +35%" -msgstr "Erhöht kinetische Panzerung und Rumpfpunkte" +msgstr "Kinetische Panzerung +35% und Rumpfpunkte +35%" #: data/mp/messages/resmessages2.rmsg:357 -#, fuzzy msgid "Factory production rate +60%" -msgstr "Erhöht Produktionsrate von Fabriken" +msgstr "Fabrikproduktionsgeschwindigkeit +60%" #: data/mp/messages/resmessages2.rmsg:358 #: data/mp/messages/resmessagesall.rmsg:787 -#, fuzzy msgid "All factories upgraded automatically" -msgstr "Alle VTOL-Fabriken werden aufgerüstet" +msgstr "Alle Fabriken wurden automatisch aufgerüstet" #: data/mp/messages/resmessages2.rmsg:409 #: data/mp/messages/resmessages3.rmsg:500 msgid "Rearming speed +30%" -msgstr "" +msgstr "Wiederbewaffnungsgeschwindigkeit +30%" #: data/mp/messages/resmessages2.rmsg:526 -#, fuzzy msgid "Thermal armor +40%" -msgstr "Thermalpanzerung für Fahrzeuge" +msgstr "Thermalpanzerung +40%" #: data/mp/messages/resmessages2.rmsg:656 #: data/mp/messages/resmessages3.rmsg:825 -#, fuzzy msgid "AA Flak damage +25%" -msgstr "Erhöht Schaden von Luftabwehrgeschützen" +msgstr "Flakschaden +25%" #: data/mp/messages/resmessages2.rmsg:669 #: data/mp/messages/resmessages3.rmsg:838 msgid "AA reload time -15%" -msgstr "" +msgstr "Flaknachladezeit -15%" #: data/mp/messages/resmessages2.rmsg:838 #: data/mp/messages/resmessages3.rmsg:903 -#, fuzzy msgid "Howitzer accuracy +10%" -msgstr "Erhöht die Genauigkeit von Haubitzen" +msgstr "Haubitzengenauigkeit +10%" #: data/mp/messages/resmessages2.rmsg:851 #: data/mp/messages/resmessages3.rmsg:916 -#, fuzzy msgid "Howitzer damage +25%" -msgstr "Erhöht Schaden durch Haubitzen" +msgstr "Haubitzenschaden +25%" #: data/mp/messages/resmessages2.rmsg:864 #: data/mp/messages/resmessages3.rmsg:929 -#, fuzzy msgid "Howitzer reload time -10%" -msgstr "Selbstladende Haubitzen" +msgstr "Haubitzennachladezeit -10%" #: data/mp/messages/resmessages3.rmsg:6 -#, fuzzy msgid "Thermal Armor +35%" -msgstr "Thermalpanzerung für Fahrzeuge Mk3" +msgstr "Thermalpanzerung +35%" #: data/mp/messages/resmessages3.rmsg:304 -#, fuzzy msgid "Armored guard tower with Pulse Laser" -msgstr "Gepanzerter Wachturm mit Flammenwerfer" +msgstr "Gepanzerter Wachturm mit Pulslaser" #: data/mp/messages/resmessages3.rmsg:435 msgid "Power output +30%" -msgstr "" +msgstr "Energieausstoß +30%" #: data/mp/messages/resmessages3.rmsg:721 #: data/mp/messages/resmessagesall.rmsg:838 -#, fuzzy msgid "Thermal Armor +40%" -msgstr "Thermalpanzerung für Fahrzeuge" +msgstr "Thermalpanzerung +40%" #: data/mp/messages/resmessages3.rmsg:968 -#, fuzzy msgid "Laser accuracy +10%" -msgstr "Erhöht Genauigkeit von Lasern" +msgstr "Lasergenauigkeit +10%" #: data/mp/messages/resmessages3.rmsg:981 -#, fuzzy msgid "Laser damage +25%" -msgstr "Erhöht Schaden durch Laserwaffen" +msgstr "Laserschaden +25%" #: data/mp/messages/resmessages3.rmsg:994 msgid "Laser reload time -15%" -msgstr "" +msgstr "Lasernachladezeit -15%" #: data/mp/messages/resmessages3.rmsg:1059 #: data/mp/messages/resmessages3.rmsg:1072 -#, fuzzy msgid "Missile accuracy +10%" -msgstr "Erhöht Genauigkeit von Lenkraketen" +msgstr "Lenkraketengenauigkeit +10%" #: data/mp/messages/resmessages3.rmsg:1085 -#, fuzzy msgid "Missile damage +25%" -msgstr "Erhöht Schaden von Lenkraketen" +msgstr "Lenkraketenschaden +25%" #: data/mp/messages/resmessages3.rmsg:1150 #: data/mp/messages/resmessages3.rmsg:1163 -#, fuzzy msgid "Missile reload time -15%" -msgstr "Missionszeit - %s" +msgstr "Lenkraketennachladezeit -15%" #: data/mp/messages/resmessages3.rmsg:1241 -#, fuzzy msgid "Rail Gun accuracy +10%" -msgstr "Erhöht Genauigkeit von Magnetwaffen" +msgstr "Magnetwaffengenauigkeit +10%" #: data/mp/messages/resmessages3.rmsg:1254 -#, fuzzy msgid "Rail Gun damage +25%" -msgstr "Erhöht Schaden durch Magnetwaffen" +msgstr "Magnetwaffenschaden +25%" #: data/mp/messages/resmessages3.rmsg:1267 -#, fuzzy msgid "Rail Gun reload time -15%" -msgstr "Magnetwaffenverbesserung" +msgstr "Magnetwaffennachladezeit -15%" #: data/mp/messages/resmessagesall.rmsg:84 -#, fuzzy msgid "Sensor Range +25%" -msgstr "Sensorreichweite" +msgstr "Sensorreichweite +25%" #: data/mp/messages/resmessagesall.rmsg:96 -#, fuzzy msgid "Improved Thermal Emissions detection" -msgstr "Neue Wärmeemissionen geortet" +msgstr "Verbesserte Ortung von Wärmeemissionen" #: data/mp/messages/resmessagesall.rmsg:97 -#, fuzzy msgid "Sensor Range +15%" -msgstr "Sensorreichweite" +msgstr "Sensorreichweite +15%" #: data/mp/messages/resmessagesall.rmsg:109 -#, fuzzy msgid "Advanced Thermal Emissions detection" -msgstr "Neue Wärmeemissionen geortet" +msgstr "Fortschrittliche Ortung von Wärmeemissionen" #: data/mp/messages/resmessagesall.rmsg:110 -#, fuzzy msgid "Sensor Range +10%" -msgstr "Sensorreichweite" +msgstr "Sensorreichweite +10%" #: data/mp/messages/resmessagesall.rmsg:135 msgid "Radar detector tower detects enemy sensors" -msgstr "" +msgstr "Radardetektor ortet feindliche Sensoren" #: data/mp/messages/resmessagesall.rmsg:136 -#, fuzzy msgid "Orders assigned indirect fire units to fire at the enemy sensors" -msgstr "Weist die zugewiesenen, indirekt-feuernden Einheiten an auf Feindstellungen zu feuern" +msgstr "Weist zugewiesene indirekt-feuernde Einheiten an feindliche Sensoren zu beschießen" #: data/mp/messages/resmessagesall.rmsg:137 -#, fuzzy msgid "Counter-battery fire continues until enemy sensor is suppressed" -msgstr "Counter-battery-Feuer hält an bis die feindliche Stellung vernichtet ist" +msgstr "Counter-battery-Feuer hält an bis der feindliche Sensor vernichtet ist" #: data/mp/messages/resmessagesall.rmsg:225 msgid "Cyborg Transport Available" @@ -10655,7 +11430,7 @@ msgstr "Sorgt für komplette Sichtbarkeit des Schlachtfeldes" #: data/mp/messages/resmessagesall.rmsg:501 msgid "Does not offer sensor targeting" -msgstr "" +msgstr "Bietet keine Sensorzielgebung" #: data/mp/messages/resmessagesall.rmsg:512 #: data/mp/messages/resmessagesall.rmsg:707 @@ -10675,7 +11450,6 @@ msgid "Immense damage infliction capability" msgstr "Ist in der Lage immensen Schaden zu erzeugen" #: data/mp/messages/resmessagesall.rmsg:527 -#, fuzzy msgid "Narrow area of effect" msgstr "Geringer Wirkungsradius" @@ -10753,7 +11527,6 @@ msgid "Medium Super Heavy Body" msgstr "Mittlerer superschwerer Rumpf" #: data/mp/messages/resmessagesall.rmsg:720 -#, fuzzy msgid "More armor and body points than Vengeance" msgstr "Mehr Panzerung und Rumpfpunkte als Vengeance" @@ -10839,759 +11612,683 @@ msgid "Upgraded battlefield computer system" msgstr "Gefechtsfeldcomputersystem verbessert" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Cyborgtransporter" #: data/mp/messages/strings/names.txt:144 -#, fuzzy msgid "Light Cannon Viper Half-tracks" msgstr "Leichtes Geschütz Viper Halbketten" #: data/mp/messages/strings/names.txt:175 -#, fuzzy msgid "Repair Turret Viper Half-track" msgstr "Reparaturarm Viper Halbketten" #: data/mp/messages/strings/names.txt:183 -#, fuzzy msgid "Mini-Rocket Array Viper Wheels" -msgstr "Miniartillerieraketen Viper Räder" +msgstr "Miniraketen-Anordnung Viper Räder" #: data/mp/messages/strings/names.txt:184 -#, fuzzy msgid "Bunker Buster Rockets Viper Wheels" msgstr "Bunker Buster Viper Räder" #: data/mp/messages/strings/names.txt:189 -#, fuzzy msgid "Sensor Turret Cobra Half-tracks" msgstr "Sensorturm Cobra Halbketten" #: data/mp/messages/strings/names.txt:194 -#, fuzzy msgid "Mini-Rocket Array Cobra Half-tracks" -msgstr "Miniartillerieraketen Cobra Halbketten" +msgstr "Miniraketen-Anordnung Cobra Halbketten" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 -#, fuzzy +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Radardetektor" #: data/mp/messages/strings/names.txt:380 -#, fuzzy msgid "Radar Detector Tower" msgstr "Radardetektorturm" #: data/mp/messages/strings/names.txt:385 -#, fuzzy msgid "Nexus Link" msgstr "NEXUS-Link" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "NEXUS-Link-Turm" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 -#, fuzzy +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "Hartbetonmauer" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Bunker mit Inferno" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Luftabwehrstellung mit Tornado" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Luftabwehrstellung mit Cyclone" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 -#, fuzzy +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Aufhängung mit Pulslaser" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 -#, fuzzy +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Turm mit Pulslaser" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 -#, fuzzy +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" -msgstr "Erhöht Genauigkeit von Lenkraketen" +msgstr "Seraph-Raketen-Anordnung" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 -#, fuzzy +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" -msgstr "Miniartillerieraketen" +msgstr "Miniraketen-Anordnung" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Lasersatelliten-Kommandozentrale" -#: data/mp/messages/strings/names.txt:582 -#, fuzzy +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "VTOL-Streubomben-Abwurfschacht" -#: data/mp/messages/strings/names.txt:589 -#, fuzzy +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Kollektiv-Mauer (Eckstück)" -#: data/mp/messages/strings/names.txt:611 -#, fuzzy +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "NEXUS-Mauer" -#: data/mp/messages/strings/names.txt:612 -#, fuzzy +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Hartbetonmauer (Eckstück)" -#: data/mp/messages/strings/names.txt:718 -#, fuzzy +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Plastiton Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Kunststoff-Stahl-Verbundstoff" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Kunststoff-Stahl-Verbundstoff Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Kunststoff-Stahl-Verbundstoff Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 -#, fuzzy -msgid "Hyper Velocity Cannon Emplacement" -msgstr "Hochgeschwindigkeitsgeschütz" +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "Spiel" -#: data/mp/messages/strings/names.txt:739 +#: data/mp/messages/strings/names.txt:731 #: data/mp/messages/strings/names.txt:1392 -#, fuzzy -msgid "Seraph Missile Battery" -msgstr "Angel-Raketen-Batterie" +msgid "Hyper Velocity Cannon Emplacement" +msgstr "Stellung mit Hochgeschwindigkeitsgeschütz" -#: data/mp/messages/strings/names.txt:768 -#, fuzzy +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 +msgid "Seraph Missile Battery" +msgstr "Seraph-Raketen-Batterie" + +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Turm mit Flammenwerfer" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 -#, fuzzy +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" -msgstr "Hochgeschwindigkeitsgeschütz" +msgstr "Aufhängung mit Hochgeschwindigkeitsgeschütz" -#: data/mp/messages/strings/names.txt:805 -#, fuzzy +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Automatisierte Fertigung" -#: data/mp/messages/strings/names.txt:806 -#, fuzzy +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Automatisierte Fertigung Mk2" -#: data/mp/messages/strings/names.txt:807 -#, fuzzy +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Automatisierte Fertigung Mk3" -#: data/mp/messages/strings/names.txt:808 -#, fuzzy +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Robotergestützte Fertigung" -#: data/mp/messages/strings/names.txt:809 -#, fuzzy +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Robotergestützte Fertigung Mk2" -#: data/mp/messages/strings/names.txt:810 -#, fuzzy +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Robotergestützte Fertigung Mk3" -#: data/mp/messages/strings/names.txt:811 -#, fuzzy +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Fortschrittliche Fertigung" -#: data/mp/messages/strings/names.txt:812 -#, fuzzy +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Fortschrittliche Fertigung Mk2" -#: data/mp/messages/strings/names.txt:813 -#, fuzzy +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Selbstreplizierende Fertigung" -#: data/mp/messages/strings/names.txt:814 -#, fuzzy +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Fortschrittliche Fertigung Mk3" -#: data/mp/messages/strings/names.txt:833 -#, fuzzy +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Automatisierte Reparatureinrichtung Mk2" -#: data/mp/messages/strings/names.txt:834 -#, fuzzy +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Automatisierte Reparatureinrichtung Mk3" -#: data/mp/messages/strings/names.txt:835 -#, fuzzy +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Robotergestützte Reparatureinrichtung" -#: data/mp/messages/strings/names.txt:836 -#, fuzzy +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Robotergestützte Reparatureinrichtung Mk2" -#: data/mp/messages/strings/names.txt:837 -#, fuzzy +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Fortschrittliche Reparatureinrichtung" -#: data/mp/messages/strings/names.txt:838 -#, fuzzy +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Robotergestützte Reparatureinrichtung Mk3" -#: data/mp/messages/strings/names.txt:839 -#, fuzzy +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Fortschrittliche Reparatureinrichtung Mk2" -#: data/mp/messages/strings/names.txt:840 -#, fuzzy +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Fortschrittliche Reparatureinrichtung Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Selbstreparatur" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Schwerer Reparaturturm" -#: data/mp/messages/strings/names.txt:926 -#, fuzzy +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "NEXUS-Eindringlingsprogramm" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 -#, fuzzy +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "NEXUS-resistente Schaltkreise" -#: data/mp/messages/strings/names.txt:928 -#, fuzzy +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "NEXUS-resistente Schaltkreise Mk2" -#: data/mp/messages/strings/names.txt:929 -#, fuzzy +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "NEXUS-resistente Schaltkreise Mk3" -#: data/mp/messages/strings/names.txt:1016 -#, fuzzy +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Streubomben-Abwurfschacht" -#: data/mp/messages/strings/names.txt:1021 -#, fuzzy +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Hochexplosive Bombenmäntel" -#: data/mp/messages/strings/names.txt:1022 -#, fuzzy +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Verbesserter Bombensprengkopf" -#: data/mp/messages/strings/names.txt:1023 -#, fuzzy +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Fortschrittlicher Bombensprengkopf" -#: data/mp/messages/strings/names.txt:1093 -#, fuzzy +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Schnelllader für Haubitzen" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Schnellfeuermaschinengewehr" -#: data/mp/messages/strings/names.txt:1158 -#, fuzzy +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Computer für Zielvorhersage von Magnetgeschossen" -#: data/mp/messages/strings/names.txt:1174 -#, fuzzy +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" -msgstr "Hochexplosive Miniraketen" +msgstr "Hochexplosive Quetschkopf-Miniraketen" -#: data/mp/messages/strings/names.txt:1175 -#, fuzzy +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" -msgstr "Hochexplosive Miniraketen Mk2" +msgstr "Hochexplosive Quetschkopf-Miniraketen Mk2" -#: data/mp/messages/strings/names.txt:1176 -#, fuzzy +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" -msgstr "Hochexplosive Miniraketen Mk3" +msgstr "Hochexplosive Quetschkopf-Miniraketen Mk3" -#: data/mp/messages/strings/names.txt:1385 -#, fuzzy +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Turm mit Sturmgewehr" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Reparaturarm Cobra Ketten" -#: data/mp/messages/strings/names.txt:1475 -#, fuzzy +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" -msgstr "Schweres Geschütz Python Ketten" +msgstr "Hochgeschwindigkeitsgeschütz Python Ketten" -#: data/mp/messages/strings/names.txt:1514 -#, fuzzy +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Bunker Buster Cobra Hover" -#: data/mp/messages/strings/names.txt:1516 -#, fuzzy +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Sensorverbesserung Mk2" -#: data/mp/messages/strings/names.txt:1517 -#, fuzzy +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Sensorverbesserung Mk3" -#: data/mp/messages/strings/names.txt:1518 -#, fuzzy +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Dampfturbinen-Generator Mk2" -#: data/mp/messages/strings/names.txt:1522 -#, fuzzy +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Gasturbinen-Generator Mk2" -#: data/mp/messages/strings/names.txt:1523 -#, fuzzy +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Gasturbinen-Generator Mk3" -#: data/mp/messages/strings/names.txt:1526 -#, fuzzy +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Dampfturbinen-Generator Mk3" -#: data/mp/messages/strings/names.txt:1611 -#, fuzzy +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Thermitflammenwerfer" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Thermitflammenwerfer" -#: data/mp/messages/strings/names.txt:1616 -#, fuzzy +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Schlachtfeld-Baumeister" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Cyborgmechaniker" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 -#, fuzzy +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Brandhaubitze" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 -#, fuzzy +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Stellung mit Brandhaubitze" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Plasmit-Flammenwerfer" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 -#, fuzzy +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Bunker mit Plasmit-Flammenwerfer" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 -#, fuzzy +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Brandmörser" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 -#, fuzzy +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Brandmörsergrube" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Hochverdichtete Thermalpanzerung für Cyborgs" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Hochverdichtete Thermalpanzerung für Cyborgs Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Hochverdichtete Thermalpanzerung für Cyborgs Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Hochverdichtete Thermalpanzerung für Fahrzeuge" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Hochverdichtete Thermalpanzerung für Fahrzeuge Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Hochverdichtete Thermalpanzerung für Fahrzeuge Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Schwerer Superschütze" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Sturmgeschütz-Supercyborg" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Hochgeschwindigkeitsgeschütz-Supercyborg" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Tank Killer-Supercyborg" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Schwerer Laser" -#: data/mp/messages/strings/names.txt:1682 -#, fuzzy +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "Schwerer VTOL-Laser" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Stellung für schweren Laser" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Zwillings-Sturmgeschütz" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Bunker mit Zwillings-Sturmgeschütz" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Satellitenkontrollzentrale" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Weitspektrum-Sensor" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Weitspektrum-Sensorturm" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Plasmakanone" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Stellung mit Plasmakanone" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Pulslaser-Supercyborg" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Supermagnetschütze" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Scourge-Supercyborg" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 -#, fuzzy +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "NEXUS-Link-Turm" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "EMP-Geschütz" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Turm mit EMP-Geschütz" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Massenbeschleunigerfestung" -#: data/mp/messages/strings/names.txt:1747 -#, fuzzy +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Massenbeschleuniger" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Geschützfestung" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Schwere Raketenbastion" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Raketenfestung" -#: data/mp/messages/strings/names.txt:1764 -#, fuzzy +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" -msgstr "Superschwerer Rumpf - Wyvern" +msgstr "Schwerer Rumpf - Wyvern" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Wyvern" -#: data/mp/messages/strings/names.txt:1767 -#, fuzzy +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" -msgstr "Superschwerer Rumpf - Dragon" +msgstr "Mehrturmrumpf - Dragon" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragon" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Superheißes, plasmites Flammenwerfergel" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Superheißes, plasmites Flammenwerfergel Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Superheißes, plasmites Flammenwerfergel Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "EMP-Mörser" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 -#, fuzzy +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "EMP-Mörsergrube" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Stormbringer-Luftabwehrlaser" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 -#, fuzzy +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Stellung mit Stormbringer" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Aufhängung mit Vindicator-SAM" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Aufhängung mit Whirlwind" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Aufhängung mit Cyclone FLAK" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Aufhängung mit Avenger-SAM" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Zwillingssturmgewehr" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 -#, fuzzy +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Aufhängung mit Zwillings-Sturmgewehr" -#: data/mp/messages/strings/names.txt:1800 -#, fuzzy +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "VTOL-Plasmitbomben-Abwurfschacht" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Plasmitbombe" -#: data/mp/messages/strings/names.txt:1802 -#, fuzzy +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "VTOL-EMP-Raketenwerfer" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "EMP-Raketenwerfer" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 -#, fuzzy +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Commanderturm II" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 -#, fuzzy +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Commanderturm III" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 -#, fuzzy +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Commanderturm IV" -#: data/mp/messages/strings/names.txt:1874 -#, fuzzy +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" -msgstr "VTOL-Hochgeschwindigkeitsgeschütz" +msgstr "VTOL-Hochgeschwindigkeitsgeschütz Bug VTOL" -#: data/mp/messages/strings/names.txt:1876 -#, fuzzy +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "VTOL-Hochgeschwindigkeitsgeschütz Scorpion VTOL" -#: data/mp/messages/strings/names.txt:1878 -#, fuzzy +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" -msgstr "VTOL-Hochgeschwindigkeitsgeschütz" - -#: data/mp/messages/strings/names.txt:1917 -#, fuzzy -msgid "Mini-Rocket Array Cobra Tracks" -msgstr "Miniartillerieraketen Cobra Ketten" +msgstr "VTOL-Hochgeschwindigkeitsgeschütz Mantis VTOL" #: data/mp/messages/strings/names.txt:1920 -#, fuzzy +msgid "Mini-Rocket Array Cobra Tracks" +msgstr "Miniraketen-Anordnung Cobra Ketten" + +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" -msgstr "Schweres Geschütz Python Hover" +msgstr "Hochgeschwindigkeitsgeschütz Python Hover" + +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "VTOL-Plasmitbomben-Abwurfschacht" #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 @@ -11625,9 +12322,8 @@ msgstr "Spanisch" #: lib/framework/i18n.c:62 #: lib/framework/i18n.c:119 -#, fuzzy msgid "Estonian" -msgstr "Rumänisch" +msgstr "Estnisch" #: lib/framework/i18n.c:64 #: lib/framework/i18n.c:121 @@ -11651,9 +12347,8 @@ msgstr "Irisch" #: lib/framework/i18n.c:75 #: lib/framework/i18n.c:132 -#, fuzzy msgid "Croatian" -msgstr "Lettisch" +msgstr "Kroatisch" #: lib/framework/i18n.c:76 #: lib/framework/i18n.c:133 @@ -11687,7 +12382,6 @@ msgstr "Brasilianisches Portugiesisch" #: lib/framework/i18n.c:86 #: lib/framework/i18n.c:142 -#, fuzzy msgid "Portuguese" msgstr "Portugiesisch" @@ -11708,9 +12402,8 @@ msgstr "Slowenisch" #: lib/framework/i18n.c:98 #: lib/framework/i18n.c:150 -#, fuzzy msgid "Ukrainian" -msgstr "Friesisch" +msgstr "Ukrainisch" #: lib/framework/i18n.c:99 #: lib/framework/i18n.c:151 @@ -11719,7 +12412,6 @@ msgstr "Vereinfachtes Chinesisch" #: lib/framework/i18n.c:100 #: lib/framework/i18n.c:152 -#, fuzzy msgid "Traditional Chinese" msgstr "Traditionelles Chinesisch" @@ -11727,32 +12419,38 @@ msgstr "Traditionelles Chinesisch" msgid "Latin" msgstr "Latein" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 -#, fuzzy +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" -msgstr "Zuerst Passwort eingeben " +msgstr "Passwort hier eingeben" -#: lib/netplay/netplay.c:3082 -#, fuzzy, c-format +#: lib/netplay/netplay.c:2043, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Konnte Lobbyserver-Namen nicht auflösen (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Konnte nicht mit Lobbyserver kommunizieren! Ist der TCP-Port %u für ausgehenden Verkehr geöffnet?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr "" +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "Morgendämmerung, 4. Juli, 2100" + +#: po/strings.txt:2 +msgid "Strategy Game" +msgstr "Spielname" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" +msgstr "Postnukleare Echtzeitstrategie" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11840,12 +12538,10 @@ msgid "Enable a multiplay only mod" msgstr "Eine Mod nur für den Mehrspielermodus aktivieren" #: src/clparse.c:244 -#, fuzzy msgid "Disable asserts" msgstr "Asserts deaktivieren" #: src/clparse.c:245 -#, fuzzy msgid "Causes a crash to test the crash handler" msgstr "Verursacht einen Absturz, um den Crash Handler zu testen" @@ -11898,7 +12594,6 @@ msgid "connect directly to IP/hostname" msgstr "Direkt mit IP/Hostnamen verbinden" #: src/clparse.c:255 -#, fuzzy msgid "host" msgstr "Spielleiter" @@ -11906,15 +12601,15 @@ msgstr "Spielleiter" msgid "go directly to host screen" msgstr "Direkt zum Spielleiterschirm" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Spieler" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Neues Fahrzeug" @@ -11953,18 +12648,18 @@ msgstr "Motorleistung" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Gewicht" @@ -11978,201 +12673,193 @@ msgstr "Benötigte Gesamtenergie" msgid "Total Body Points" msgstr "Gesamte Rumpfpunkte" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Energieverbrauch" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transporter" -#: src/design.c:1371 -#, fuzzy +#: src/design.c:1367 msgid "Hydra " msgstr "Hydra " -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Sensorreichweite" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Sensorstärke" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM-Stärke" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Konstruktionspunkte" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Reichweite" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Schaden" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Feuerrate" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Fluggeschwindigkeit" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Straßengeschwindigkeit" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Geländegeschwindigkeit" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Wassergeschwindigkeit" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Waffen" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Systeme" -#: src/display3d.c:562 -#, fuzzy +#: src/display3d.c:566 msgid "Player left" msgstr "Spieler hat das Spiel verlassen" -#: src/display3d.c:562 -#, fuzzy +#: src/display3d.c:566 msgid "Player dropped" msgstr "Spieler ausgefallen" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Bau nicht möglich. Ölquelle brennt." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Schaden %d%% - Erfahrung %d, %s" -#: src/display.c:1857 -#, fuzzy, c-format +#: src/display.c:1856, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" -msgstr "%s - Schaden %d%% - Erfahrung %d, %s" +msgstr "%s - Verbündet - Schaden %d%% - Erfahrung %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "LKW wurde beauftragt, einen Ölbohrturm zu bauen" -#: src/display.c:2048 -#, fuzzy +#: src/display.c:2047 msgid "2 trucks ordered to build Oil Derrick" msgstr "LKW wurde beauftragt, einen Ölbohrturm zu bauen" -#: src/display.c:2049 -#, fuzzy, c-format +#: src/display.c:2048, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "LKW wurde beauftragt, einen Ölbohrturm zu bauen" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Einheit verloren!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Gebäude wiederhergestellt" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Gruppe %u ausgewählt - %u Einheit" msgstr[1] "Gruppe %u ausgewählt - %u Einheiten" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u Einheit zur Gruppe %u hinzugefügt" msgstr[1] "%u Einheiten zur Gruppe %u hinzugefügt" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Auf Gruppe %u zentriert - %u Einheit" msgstr[1] "Auf Gruppe %u zentriert - %u Einheiten" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "An Gruppe %u ausgerichtet - %u Einheit" msgstr[1] "An Gruppe %u ausgerichtet - %u Einheiten" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Anfänger" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Neuling" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Geübter" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Durchschnitt" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Profi" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Spezialist" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Held" #: src/frontend.c:252 -#, fuzzy msgid "Single Player" msgstr "Einzelspieler" #: src/frontend.c:253 -#, fuzzy msgid "Multi Player" msgstr "Mehrspieler" @@ -12186,7 +12873,6 @@ msgid "Options" msgstr "Optionen" #: src/frontend.c:256 -#, fuzzy msgid "View Intro" msgstr "Intro zeigen" @@ -12211,11 +12897,11 @@ msgstr "TUTORIALS" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Zurück" @@ -12225,14 +12911,12 @@ msgid "New Campaign" msgstr "Neue Kampagne" #: src/frontend.c:371 -#, fuzzy msgid "Start Skirmish Game" msgstr "Geplänkel eröffnen" #: src/frontend.c:372 -#, fuzzy msgid "Challenges" -msgstr "Scavenger" +msgstr "Herausforderungen" #: src/frontend.c:373 #: src/ingameop.c:293 @@ -12285,7 +12969,6 @@ msgid "Audio Options" msgstr "Audioeinstellungen" #: src/frontend.c:589 -#, fuzzy msgid "Mouse Options" msgstr "Mausoptionen" @@ -12298,21 +12981,19 @@ msgid "Video Playback" msgstr "Videowiedergabe" #: src/frontend.c:656 -#: src/frontend.c:826 -#, fuzzy +#: src/frontend.c:818 msgid "1X" msgstr "1X" #: src/frontend.c:660 -#: src/frontend.c:816 -#, fuzzy +#: src/frontend.c:808 msgid "2X" msgstr "2X" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Vollbild" @@ -12321,43 +13002,42 @@ msgid "Screen Shake" msgstr "Kameraerschütterungen" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "An" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Aus" @@ -12367,167 +13047,155 @@ msgid "Fog" msgstr "Nebel" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Dunst" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Nebel des Krieges" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Untertitel" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Schatten" -#: src/frontend.c:729 -#, fuzzy +#: src/frontend.c:721 msgid "GRAPHICS OPTIONS" -msgstr "SPIELOPTIONEN" +msgstr "GRAFIKOPTIONEN" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Sprachlautstärke" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Effektlautstärke" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Musiklautstärke" -#: src/frontend.c:875 -#, fuzzy +#: src/frontend.c:867 msgid "AUDIO OPTIONS" -msgstr "SPIELOPTIONEN" +msgstr "AUDIOOPTIONEN" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Grafikmodus*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Fenster" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "Auflösung*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Texturgröße" -#: src/frontend.c:961 -#, fuzzy +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "Vertikale Synchronisation" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* Wirkt sich bei Spielneustart aus" -#: src/frontend.c:976 -#, fuzzy +#: src/frontend.c:968 msgid "VIDEO OPTIONS" -msgstr "SPIELOPTIONEN" +msgstr "VIDEOOPTIONEN" -#: src/frontend.c:1134 -#, fuzzy +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "Drehrichtung umkehren" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "Mauszeiger einfangen" -#: src/frontend.c:1157 -#, fuzzy +#: src/frontend.c:1149 msgid "Colored Cursors*" -msgstr "Bunte Mauszeiger *" +msgstr "Bunte Mauszeiger*" -#: src/frontend.c:1170 -#, fuzzy +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "Maustasten vertauschen" -#: src/frontend.c:1180 -#, fuzzy +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "* Könnte die Spielgeschwindigkeit negativ beeinflussen" -#: src/frontend.c:1183 -#, fuzzy +#: src/frontend.c:1175 msgid "MOUSE OPTIONS" -msgstr "SPIELOPTIONEN" +msgstr "MAUSOPTIONEN" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Schwierigkeitsgrad" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Einfach" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Normal" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Schwer" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Scrollgeschwindigkeit" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Sprache" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Einheitenfarbe" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "SPIELOPTIONEN" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "" +msgid "Mod: " +msgstr "Mod: " #: src/hci.c:1363 -#, fuzzy msgid "MAP SAVED!" msgstr "KARTE GESPEICHERT!" #: src/hci.c:1745 #: src/loop.c:528 #: src/loop.c:544 -#, fuzzy msgid "GAME SAVED: " msgstr "SPIEL GESPEICHERT!" @@ -12551,106 +13219,106 @@ msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Spieler %u erschummelt (Debugmenü) sich eine neue Einheit: %s." # Commander kann als Eigenname im Deutschen allerdings mit deutschem Plural stehen bleiben -Kreuvf -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Commandermenü" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Aufklärungsbildschirm" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Produktionsmenü" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Entwurfmenü" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Forschungsmenü" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Konstruktionsmenü" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energie" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "Kartenkachel" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "Kartenkacheln platzieren" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Einheit" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "Einheit auf der Karte platzieren" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Gebäude" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "Gebäude auf der Karte platzieren" # gemäß: http://dict.leo.org/ende?search=Feat -Kreuvf -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Leistung" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "Feature auf der Karte platzieren" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "Spiel pausieren oder fortsetzen" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "Höhe aller Kartenobjekte abgleichen" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Beenden" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Spiel verlassen" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Fortschrittsbalken" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Fabrik-Auslieferungspunkt" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Produktion wiederholen" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Reiter nach links durchschalten" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Reiter nach rechts durchschalten" @@ -12662,17 +13330,17 @@ msgstr "Spiel fortsetzen" #: src/ingameop.c:142 msgid "WARNING: You're the host. If you quit, the game ends for everyone!" -msgstr "" +msgstr "Warnung: Sie sind Spielleiter. Wenn Sie das Spiel verlassen, endet es für alle!" #: src/ingameop.c:195 #: src/ingameop.c:548 msgid "Tactical UI (Target Origin Icon): Show" -msgstr "" +msgstr "Taktische Anzeige (Zielherkunftssymbol): Anzeigen" #: src/ingameop.c:200 #: src/ingameop.c:552 msgid "Tactical UI (Target Origin Icon): Hide" -msgstr "" +msgstr "Taktische Anzeige (Zielherkunftssymbol): Verstecken" #: src/ingameop.c:295 #: src/ingameop.c:523 @@ -12682,25 +13350,32 @@ msgid "Save Game" msgstr "Spiel speichern" #: src/ingameop.c:364 -#, fuzzy msgid "Host has quit the game!" msgstr "Der Spielleiter hat das Spiel verlassen!" #: src/ingameop.c:370 msgid "The game can't continue without the host." -msgstr "" +msgstr "Das Spiel kann ohne Spielleiter nicht weitergehen." #: src/ingameop.c:376 msgid "--> QUIT <--" +msgstr "--> BEENDEN <--" + +#: src/init.c:391, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." msgstr "" +"Die benötigte Mod konnte nicht geladen werden: %s\n" +"\n" +"Warzone wird versuchen das Spiel ohne sie zu laden." #: src/intdisplay.c:197 -#, fuzzy msgid "Build Progress" msgstr "Fortschrittsbalken" #: src/intdisplay.c:228 -#, fuzzy msgid "Construction Progress" msgstr "Fortschrittsbalken" @@ -12709,7 +13384,7 @@ msgid "Power Accrued" msgstr "Energie angesammelt" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSIERT" @@ -12726,7 +13401,6 @@ msgid "Current Objective" msgstr "Aktuelles Missionsziel" #: src/intelmap.c:1516 -#, fuzzy msgid "New Intelligence Report" msgstr "Neuer Aufklärungsbericht" @@ -12837,309 +13511,286 @@ msgstr "VTOL-Fabrikproduktion zuweisen" msgid "Circle" msgstr "Kreis" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Entschuldige, dieser Cheat ist in Mehrspieler-Spielen deaktiviert." -#: src/keybind.c:140 -#, fuzzy +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Warnung! Dieser Cheat ist fehlerbehaftet. Wir empfehlen ihn NICHT zu nutzen." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Lass' uns sehen was du siehst!" -#: src/keybind.c:226 -#, fuzzy +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "Gut, Waffen- und Sensoranzeige sind aus!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:358, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Spieler %u erschummelt (Debugmenü) sich eine neue Einheit: %s." +msgstr "Spieler %u erschummelt sich eine neue Armee aus %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 -#, fuzzy, c-format +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Player %u) benutzt den Cheat: %s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Hammerhart!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Die Dinge leicht nehmen!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 Riesenviecher!!!" # Ursprünglich kenne ich das nur als Cheat aus StarCraft und das sollte imho nicht übersetzt werden -Kreuvf -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Power overwhelming" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Zurück zur Normalität!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Es wird kompliziert!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Doppelt so gut!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS-Anzeige ist aktiviert." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS-Anzeige ist deaktiviert." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Grenze: %d; PIEs %d; Polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 -#, fuzzy, c-format +#: src/keybind.c:561, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Spieler %u) benutzt einen Cheat: Anzahl Droids: %d Anzahl Gebäude: %d Anzahl Features: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Unbegrenzte Energie deaktiviert" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Unbegrenzte Energie aktiviert" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Alle Gegenstände wurden verfügbar gemacht" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Nebel an" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Nebel aus" -#: src/keybind.c:1179 -#, fuzzy, c-format +#: src/keybind.c:1175, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Warnung! Dieser Cheat kann später schlimme Probleme verursachen! [%s]" -#: src/keybind.c:1179 -#, fuzzy +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "Beende Mission." -#: src/keybind.c:1291 -#, fuzzy +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "CHEATS SIND JETZT AKTIVIERT!" -#: src/keybind.c:1291 -#, fuzzy +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "CHEAST SIND JETZT DEAKTIVIERT!" -#: src/keybind.c:1348 -#, fuzzy +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "God Mode aktiviert" -#: src/keybind.c:1348 -#, fuzzy +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "God Mode deaktiviert" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Sicht nach Norden ausgerichtet" -#: src/keybind.c:1369 -#, fuzzy, c-format +#: src/keybind.c:1365, c-format msgid "Trap cursor %s" -msgstr "Mauszeiger einfangen" +msgstr "Mauszeiger einfangen %s" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "ALLES für Sie erforscht!" -#: src/keybind.c:1481 -#, fuzzy, c-format +#: src/keybind.c:1477, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Spieler %u) benutzt den Cheat: %s %s" -#: src/keybind.c:1482 -#, fuzzy +#: src/keybind.c:1478 msgid "Researched" msgstr "Erforscht" -#: src/keybind.c:1503 -#, fuzzy +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Energiebalken nur anzeigen, wenn ausgewählt" -#: src/keybind.c:1506 -#, fuzzy +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Energiebalken für Einheiten immer anzeigen" -#: src/keybind.c:1509 -#, fuzzy +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Energiebalken für Einheiten und Gebäude immer anzeigen" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demonstrationsmodus deaktiviert - kehre zum normalen Spiel zurück" -#: src/keybind.c:1546 -#, fuzzy +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "Debug-Menü ist offen" # Ressourcenextraktoren hört sich übelst gestelzt und hochtrabend an -Kreuvf -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Keine Ölförderanlagen auffindbar!" # Let it snow, let it snow, let it snow.. # Von daher sollte das unübersetzt bleiben -Kreuvf -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, the weather outside if frightful... SCHNEE" # Das Lied ist im Original Englisch --> bleibt unübersetzt -Kreuvf -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... REGEN" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Vorhersage: Klarer Himmel in allen Gebieten... KEIN WETTER" -#: src/keybind.c:1895 -#, fuzzy +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Warnung! Dies kann drastische Auswirkungen haben, falls auf Missionen falsch benutzt." -#: src/keybind.c:1897 -#, fuzzy +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "Alle Feinde durch Schummeln vernichtet!" -#: src/keybind.c:1938 -#, fuzzy +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "Zerstöre ausgewählte Einheiten und Gebäude!" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Auf Kommandozentrale des Spielers zentriert, Blickrichtung Norden" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Kann Kommandozentrale nicht finden!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." -msgstr "" +msgstr "Geschwindigkeitbegrenzung für Formationen aufgrund von Fehlern aus dem Spiel entfernt." -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" -msgstr "" +msgstr "Richtung vertikaler Drehung: Normal" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" -msgstr "" +msgstr "Richtung vertikaler Drehung: Vertauscht" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" -msgstr "" +msgstr "Bildschirm wackelt bei Zerstörung: Aus" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" -msgstr "" +msgstr "Bildschirm wackelt bei Zerstörung: An" -#: src/keybind.c:2592 -#: src/keybind.c:2635 -#, fuzzy +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." -msgstr "Entschuldige, dieser Cheat ist in Mehrspieler-Spielen deaktiviert." +msgstr "Entschuldige, aber die Spielgeschwindigkeit kann im Mehrspielermodus nicht verändert werden." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Spielgeschwindigkeit zurückgesetzt" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Spielgeschwindigkeit auf %3.1f erhöht" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Spielgeschwindigkeit auf %3.1f gesenkt" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Konstruktionsmenü wird sich wieder öffnen" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Konstruktionsmenü wird sich nicht wieder öffnen" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar zeigt Freund-Feind-Farben" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar zeigt Spielerfarben" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar zeigt nur Objekte" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar zeigt Gelände und Höheninformation überlagert" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar zeigt Gelände" -#: src/keybind.c:2740 -#, fuzzy +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" -msgstr "Radar zeigt Gelände" +msgstr "Radar zeigt aufgedecktes Gelände" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar zeigt Höheninformation" @@ -13328,9 +13979,8 @@ msgid "Select Commander 9" msgstr "Commander 9 auswählen" #: src/keymap.c:350 -#, fuzzy msgid "Multiplayer Options / Alliance dialog" -msgstr "Mehrspielereinstellungen" +msgstr "Mehrspieleroptionen / Allianzdialog" #: src/keymap.c:353 msgid "Snap View to North" @@ -13497,7 +14147,6 @@ msgid "Select all Wheels" msgstr "Alle Radfahrzeuge auswählen" #: src/keymap.c:427 -#, fuzzy msgid "Select all Similar Units" msgstr "Alle ähnlichen Einheiten auswählen" @@ -13523,7 +14172,6 @@ msgstr "Wiederöffnung des Konstruktionsmenüs umschalten" #: src/loop.c:535 #: src/loop.c:551 -#, fuzzy msgid "Could not save game!" msgstr "Konnte Spiel nicht speichern!" @@ -13532,7 +14180,6 @@ msgid "Load Transport" msgstr "Transporter beladen" #: src/mission.c:2460 -#, fuzzy msgid "OBJECTIVE ACHIEVED by cheating!" msgstr "ZIEL ERREICHT durch Schummeln!" @@ -13541,7 +14188,6 @@ msgid "OBJECTIVE ACHIEVED" msgstr "MISSION ERFOLGREICH" #: src/mission.c:2466 -#, fuzzy msgid "OBJECTIVE FAILED--and you cheated!" msgstr "ZIEL NICHT ERREICHT--und Sie haben geschummelt!" @@ -13560,15 +14206,13 @@ msgid "Continue Game" msgstr "Spiel fortsetzen" #: src/mission.c:2597 -#, fuzzy msgid "GAME SAVED :" msgstr "SPIEL GESPEICHERT :" -#: src/move.c:2697 -#: src/move.c:2713 -#, fuzzy, c-format +#: src/move.c:2692 +#: src/move.c:2708, c-format msgid "You found %u power in an oil drum." -msgstr "Sie haben %u Energie in einem Ölfass gefunden" +msgstr "Sie haben %u Energie in einem Ölfass gefunden." #: src/multigifts.c:171 #, c-format @@ -13590,8 +14234,7 @@ msgstr "Habe versucht nicht-leeren %s zu übergeben - ist aber nicht gestattet." msgid "%s Gives You Technology Documents" msgstr "%s gibt Ihnen Technologiedokumente" -#: src/multigifts.c:339 -#, fuzzy, c-format +#: src/multigifts.c:339, c-format msgid "%s Gives You %u Power" msgstr "%s gibt Ihnen %u Energie" @@ -13627,9 +14270,8 @@ msgstr "Einstellungen annehmen" #: src/multiint.c:574 #: src/multiint.c:1120 -#, fuzzy msgid "Cancel" -msgstr "Lancer" +msgstr "Abbrechen" #: src/multiint.c:585 msgid "IP Address or Machine Name" @@ -13648,44 +14290,38 @@ msgid "IP" msgstr "IP" #: src/multiint.c:841 -#, fuzzy msgid "No games are available" msgstr "Es sind keine Spiele verfügbar" #: src/multiint.c:844 -#, fuzzy msgid "Game is full" msgstr "Spiel ist voll" #: src/multiint.c:848 -#, fuzzy msgid "You were kicked!" msgstr "Sie wurden rausgeschmissen!" #: src/multiint.c:851 -#, fuzzy msgid "Wrong Game Version!" msgstr "Falsche Spielversion!" #: src/multiint.c:854 msgid "You have an incompatible mod." -msgstr "" +msgstr "Sie haben einen inkompatiblen Mod." #: src/multiint.c:858 msgid "Host couldn't send file?" -msgstr "" +msgstr "Spielleiter konnte Datei nicht senden?" #: src/multiint.c:862 -#, fuzzy msgid "Incorrect Password!" msgstr "Falsches Passwort!" #: src/multiint.c:865 msgid "Host has dropped connection!" -msgstr "" +msgstr "Spielleiter hat die Verbindung gekappt!" #: src/multiint.c:869 -#, fuzzy msgid "Connection Error" msgstr "Verbindungsfehler" @@ -13702,13 +14338,12 @@ msgid "Refresh Games List" msgstr "Spieleliste aktualisieren" #: src/multiint.c:1097 -#, fuzzy msgid "Enter Password:" -msgstr "Zuerst Passwort eingeben " +msgstr "Passwort eingeben:" #: src/multiint.c:1118 msgid "OK" -msgstr "" +msgstr "OK" #: src/multiint.c:1259 #: src/multiint.c:1266 @@ -13716,7 +14351,6 @@ msgid "Select Game Name" msgstr "Spielname auswählen" #: src/multiint.c:1259 -#, fuzzy msgid "One-Player Skirmish" msgstr "Einzelspieler-Geplänkel" @@ -13725,20 +14359,17 @@ msgid "Select Map" msgstr "Karte auswählen" #: src/multiint.c:1277 -#, fuzzy msgid "Click to set Password" msgstr "Klicken zum Setzen eines Passworts" #: src/multiint.c:1287 #: src/multiint.c:1288 -#, fuzzy msgid "Scavengers" msgstr "Scavenger" #: src/multiint.c:1290 -#, fuzzy msgid "No Scavengers" -msgstr "Keine Bündnisse" +msgstr "Keine Scavenger" #: src/multiint.c:1320 msgid "Select Player Name" @@ -13807,28 +14438,24 @@ msgid "Start Hosting Game" msgstr "Spiel eröffnen" #: src/multiint.c:1470 -#, fuzzy msgid "Show Structure Limits" -msgstr "Gebäudebeschränkungen einstellen" +msgstr "Zeige Gebäudebeschränkungen" #: src/multiint.c:1470 msgid "Set Structure Limits" msgstr "Gebäudebeschränkungen einstellen" #: src/multiint.c:1533 -#, fuzzy msgid "Player colour" -msgstr "Spieler hat das Spiel verlassen" +msgstr "Spielerfarbe" #: src/multiint.c:1549 -#, fuzzy msgid "Kick player" -msgstr "2 Spieler" +msgstr "Spieler rauswerfen" #: src/multiint.c:1560 -#, fuzzy msgid "Player number" -msgstr "Spieler hat das Spiel verlassen" +msgstr "Spielernummer" #: src/multiint.c:1922 msgid "Team" @@ -13844,7 +14471,7 @@ msgstr "Klicken, wenn bereit" #: src/multiint.c:1965 msgid "READY?" -msgstr "" +msgstr "BEREIT?" #: src/multiint.c:2002 msgid "PLAYERS" @@ -13856,15 +14483,13 @@ msgstr "CHAT" #: src/multiint.c:2240 msgid "All players need to have the same mods to join your game." -msgstr "" +msgstr "Alle Spieler benötigen dieselben Mods, um Ihrem Spiel beitreten zu können." #: src/multiint.c:2400 -#, fuzzy msgid "*** password is now required! ***" msgstr "*** Jetzt wird ein Passwort benötigt! ***" #: src/multiint.c:2407 -#, fuzzy msgid "*** password is NOT required! ***" msgstr "*** Passwort wird nicht benötigt! ***" @@ -13887,62 +14512,56 @@ msgstr "Der Spielleiter hat %s aus dem Spiel geworfen!" msgid "Host is Starting Game" msgstr "Der Spielleiter startet das Spiel" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Spieler" -#: src/multiint.c:3569 -#, c-format +#: src/multiint.c:3576, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "Sende Karte: %d%%" -#: src/multiint.c:3577 -#, c-format +#: src/multiint.c:3584, c-format msgid "Map: %d%% downloaded" -msgstr "" +msgstr "Karte: %d%% heruntergeladen" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" -msgstr "" +msgstr "SPIELLEITER" #: src/multijoin.c:98 #: src/multijoin.c:99 msgid "Players Still Joining" msgstr "Es treten noch Spieler bei" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s hat das Spiel verlassen" -#: src/multijoin.c:227 -#, c-format +#: src/multijoin.c:228, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "Dateiübertragung für %d abgebrochen." -#: src/multijoin.c:348 -#, c-format +#: src/multijoin.c:349, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." -msgstr "" +msgstr "%s (%u) hat einen inkompatiblen Mod und wurde rausgeschmissen." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s ist dem Spiel beigetreten" -#: src/multijoin.c:397 -#, fuzzy +#: src/multijoin.c:398 msgid "System message:" msgstr "Systemnachricht:" #: src/multilimit.c:185 -#, fuzzy msgid "Apply Defaults and Return To Previous Screen" -msgstr "Zurück zum vorherigen Bildschirm" +msgstr "Standardwerte nehmen und zum vorherigen Bildschirm zurückkehren" #: src/multilimit.c:316 msgid "Limits reset to default values" -msgstr "" +msgstr "Begrenzungen auf Standardwerte zurückgesetzt" #: src/multimenu.c:609 msgid "Technology level 1" @@ -13982,7 +14601,6 @@ msgstr "Abschüsse" #: src/multimenu.c:762 #: src/multimenu.c:767 -#, fuzzy msgid "Units" msgstr "Einheiten" @@ -13991,7 +14609,6 @@ msgid "Ping" msgstr "Ping" #: src/multimenu.c:776 -#, fuzzy msgid "Structs" msgstr "Gebäude" @@ -14015,53 +14632,51 @@ msgstr "Ãœbergebe ausgewählte Einheiten" msgid "Give Power To Player" msgstr "Energie übertragen" -#: src/multiplay.c:271 -#, c-format +#: src/multiplay.c:271, c-format msgid "Kicking player %s, because they tried to bypass data integrity check!" -msgstr "" - -#: src/multiplay.c:1064 -#, fuzzy -msgid "(allies" -msgstr "Bündnisse" +msgstr "Werfe Spieler %s hinaus wegen des Versuchs die Datenintegritätsprüfung zu umgehen!" #: src/multiplay.c:1072 +msgid "(allies" +msgstr "(Verbündete" + +#: src/multiplay.c:1080 msgid "(private to " -msgstr "" +msgstr "(direkt an " -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" -msgstr "" +msgstr "[ungültig]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Grün" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Orange" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Grau" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Schwarz" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Rot" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Blau" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Pink" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cyan" @@ -14191,8 +14806,7 @@ msgstr "Missionszeit - %s" msgid "Total Game Time - %s" msgstr "Gesamte Spielzeit - %s" -#: src/scores.c:448 -#, fuzzy, c-format +#: src/scores.c:448, c-format msgid "You cheated!" msgstr "Sie haben geschummelt!" @@ -14204,12 +14818,12 @@ msgstr "SIE HABEN GEWONNEN!" msgid "YOU WERE DEFEATED!" msgstr "SIE WURDEN BESIEGT!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Signal von %s erhalten!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Signal %d" @@ -14238,64 +14852,64 @@ msgstr "Kann keine Sensoreinheit finden!" msgid "Unable to locate any Commanders!" msgstr "Kann keine Commander finden!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "Commandereinheit hat Kontrollgrenze erreicht - Produktion angehalten" # nix Gruppe! -Kreuvf -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Einheit hinzugefügt" msgstr[1] "%s - %u Einheiten hinzugefügt" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Schaden %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - %u von %u verbunden" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Elektronisch beschädigt" # Reward ist zwar nicht Beute, aber im Krieg erbeutet man eben Dinge -Kreuvf -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Elektronische Beute - Sichtbarkeitsbericht" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Fabrikbeute - Antrieb" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Fabrikbeute - Rumpf" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Fabrikbeute - Waffe" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Fabrikbeute - Nichts" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Beute aus Reparatureinrichtung - Reparatur" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Beute aus Reparatureinrichtung - Nichts" @@ -14304,7 +14918,7 @@ msgstr "Beute aus Reparatureinrichtung - Nichts" msgid "Launch Transport" msgstr "Transporter starten" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Verstärkung landet" @@ -14336,6 +14950,19 @@ msgstr " - %s gebaut" msgid "Version %s%s%s%s" msgstr "Version %s%s%s%s" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "Phosphorbomben-Abwurfschacht" + +# HEAP = high explosive, armor piercing -Kreuvf +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "VTOL-Bombenabwurfschacht für hochexplosive, panzerbrechende Bomben" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "Mod" + #, fuzzy #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Spieler %u hat die falsche Spielversion. Automatischer Rauswurf." @@ -14351,17 +14978,14 @@ msgstr "Version %s%s%s%s" #, fuzzy #~ msgid "Increases Bombing damage" #~ msgstr "Erhöht Schaden von Geschützen" - #~ msgid "The ultimate in sensor technology" #~ msgstr "Ultimative Sensortechnologie" # Statt Formationsgeschwindigkeitsbegrenzungen AUS -Kreuvf #~ msgid "Formation speed limiting OFF" #~ msgstr "Geschwindigkeitsbegrenzung für Formationen deaktiviert" - #~ msgid "Formation speed limiting ON" #~ msgstr "Geschwindigkeitsbegrenzung für Formationen aktiviert" - #, fuzzy #~ msgid ": Unknown cheat code." #~ msgstr "Laufe im Cheatmodus" @@ -14373,177 +14997,119 @@ msgstr "Version %s%s%s%s" # Das hat(te) Warzone damals schon, kA, ob noch nutzbar -Kreuvf #~ msgid "Start Multiplayer Audio" #~ msgstr "Starte Mehrspieler-Voice-Chat" - #~ msgid "Stop Multiplayer Audio" #~ msgstr "Stoppe Mehrspieler-Voice-Chat" - #, fuzzy #~ msgid "Hardware" #~ msgstr "Hartbeton" - #~ msgid "Software (coloured)" #~ msgstr "Software (farbig)" - -#, fuzzy -#~ msgid "you are being a jerk." -#~ msgstr "Sie sind ein Trottel." - #~ msgid "English" #~ msgstr "Englisch" - #~ msgid "Basque" #~ msgstr "Baskisch" - #~ msgid "Norwegian (Nynorsk)" #~ msgstr "Norwegisch (Nynorsk)" - #~ msgid "Swedish (Sweden)" #~ msgstr "Schwedisch (Schweden)" - #~ msgid "Swedish" #~ msgstr "Schwedisch" - #~ msgid "Turkish" #~ msgstr "Türkisch" - #~ msgid "Uzbek (Cyrillic)" #~ msgstr "Usbekisch (Kyrillisch)" #, fuzzy #~ msgid "Heavy Machinegun Cobra Half-trackS" #~ msgstr "Cobra Schweres Maschinengewehr Halbketten" - #~ msgid "Peperpot Emplacement" #~ msgstr "Stellung mit Pepperpot" - #~ msgid "Command turret MkII" #~ msgstr "Commanderturm Mk II" - #~ msgid "Command turret MkIV" #~ msgstr "Commanderturm Mk IV" #, fuzzy #~ msgid "Cursor Mode" #~ msgstr "Energiemodul" - -#~ msgid "Game" -#~ msgstr "Spiel" - #~ msgid "Mayhem" #~ msgstr "Chaos" - #~ msgid "Skirmish" #~ msgstr "Geplänkel" #, fuzzy #~ msgid "Cluster Bombs Bug VTOL" #~ msgstr "Bug Streubomben VTOL" - #~ msgid "Energy bars display toggled" #~ msgstr "Anzeige der Energiebalken umgeschaltet" - #~ msgid "Viper Light Cannon Wheels" #~ msgstr "Viper Leichtes Geschütz Räder" - #~ msgid "Viper Flamer Wheels" #~ msgstr "Viper Flammenwerfer Räder" - #~ msgid "Viper Sensor Wheels" #~ msgstr "Viper Sensor Räder" - #~ msgid "Viper Light Cannon Tracks" #~ msgstr "Viper Leichtes Geschütz Halbketten" - #~ msgid "Cobra Heavy Machinegun Half-track" #~ msgstr "Cobra Schweres Maschinengewehr Halbketten" - #~ msgid "Cobra Mortar Half-track" #~ msgstr "Cobra Mörser Halbketten" - #~ msgid "Cobra Light Cannon Tracks" #~ msgstr "Cobra Leichtes Geschütz Ketten" - #~ msgid "Viper Medium Cannon Tracks" #~ msgstr "Viper Mittleres Geschütz Ketten" - #~ msgid "Viper Repair Wheels" #~ msgstr "Viper Reparaturarm Räder" - #~ msgid "Viper Repair Half-track" #~ msgstr "Viper Reparaturarm Halbketten" - #~ msgid "Viper Machine Gun Wheels" #~ msgstr "Viper Maschinengewehr Räder" - #~ msgid "Viper Twin Machinegun Wheels" #~ msgstr "Viper Zwillings-Maschinengewehr Räder" - #~ msgid "Viper Twin Machinegun Half-track" #~ msgstr "Viper Zwillings-Maschinengewehr Halbketten" - #~ msgid "Viper Heavy Machinegun Half-track" #~ msgstr "Viper Schweres Maschinengewehr Halbketten" - #~ msgid "Viper Heavy Machinegun Tracks" #~ msgstr "Viper Schweres Maschinengewehr Ketten" - #~ msgid "Viper Lancer Wheels" #~ msgstr "Viper Lancer Räder" - #~ msgid "Viper Mini-Pod Rockets Wheels" #~ msgstr "Viper Miniraketen Räder" - #~ msgid "Viper Mini-Rocket Artillery Wheels" #~ msgstr "Viper Miniartillerieraketen Räder" - #~ msgid "Viper Bunker Buster Rockets Wheels" #~ msgstr "Viper Bunker Buster Räder" - #~ msgid "Cobra Heavy Cannon Tracks" #~ msgstr "Cobra Schweres Geschütz Ketten" - #~ msgid "Cobra Sensor Half-track" #~ msgstr "Cobra Sensor Halbketten" - #~ msgid "Cobra Bombard Half-track" #~ msgstr "Cobra Bombard Halbketten" - #~ msgid "Cobra Command Turret Half-track" #~ msgstr "Cobra Commander Halbketten" - #~ msgid "Cobra Lancer Half-track" #~ msgstr "Cobra Lancer Halbketten" - #~ msgid "Cobra Mini-Rocket Artillery Half-track" #~ msgstr "Cobra Miniartillerieraketen Halbketten" - #~ msgid "Python Light Cannon Tracks" #~ msgstr "Python Leichtes Geschütz Ketten" - #~ msgid "Python Medium Cannon Tracks" #~ msgstr "Python Mittleres Geschütz Ketten" - #~ msgid "Python Commander Tracks" #~ msgstr "Pyhton Commander Ketten" - #~ msgid "Mini-Pod" #~ msgstr "Miniraketen" - #~ msgid "VTOL Mini-Pod" #~ msgstr "VTOL-Miniraketen" - #~ msgid "Machine Gunner" #~ msgstr "MG-Schütze" - #~ msgid "Mini-Pod Rockets" #~ msgstr "Miniraketen" - #~ msgid "Machine Gun Artifact" #~ msgstr "Maschinengewehr-Artefakt" - #~ msgid "HMG Cobra Half-tracks" #~ msgstr "Schweres Maschinengewehr Cobra Halbketten" - #~ msgid "Commander Python Tracks" #~ msgstr "Commander Python Ketten" @@ -14610,318 +15176,200 @@ msgstr "Version %s%s%s%s" #, fuzzy #~ msgid "Rapid Fire Mini-Pods Mk3" #~ msgstr "Schnellstfeuernde Miniraketen Mk3" - #~ msgid "NEXUS Link Tower" #~ msgstr "Turm mit NEXUS-Link" - #~ msgid "Whirlwind AATurret" #~ msgstr "Whirlwind-Luftabwehrturm" - #~ msgid "Power Upgrade" #~ msgstr "Kraftwerkverbesserung" - #~ msgid "Viper Wheels Machinegun" #~ msgstr "Viper Räder Maschinenengewehr" - #~ msgid "Viper Wheels Twin Machinegun" #~ msgstr "Viper Räder Zwillings-Maschinengewehr" - #~ msgid "Viper Wheels Heavy Machinegun" #~ msgstr "Viper Räder Schweres Maschinengewehr" - #~ msgid "Cobra Wheels Heavy Machinegun" #~ msgstr "Cobra Räder Schweres Maschinengewehr" - #~ msgid "Cobra Hover Heavy Machinegun" #~ msgstr "Cobra Hover Schweres Maschinengewehr" - #~ msgid "Viper Tracks Machinegun" #~ msgstr "Viper Ketten Maschinengewehr" - #~ msgid "Viper Tracks Twin Machinegun" #~ msgstr "Viper Ketten Zwillings-Maschinengewehr" - #~ msgid "Viper Tracks Heavy Machinegun" #~ msgstr "Viper Ketten Schweres Maschinengewehr" - #~ msgid "Cobra Tracks Heavy Machinegun" #~ msgstr "Cobra Ketten Schweres Maschinengewehr" - #~ msgid "Cobra Hover Medium Cannon" #~ msgstr "Cobra Hover Mittleres Geschütz" - #~ msgid "Scorpion Hover Medium Cannon" #~ msgstr "Scorpion Hover Mittleres Geschütz" - #~ msgid "Scorpion Tracks Medium Cannon" #~ msgstr "Scorpion Ketten Mittleres Geschütz" - #~ msgid "Python Hover Medium Cannon" #~ msgstr "Python Hover Mittleres Geschütz" - #~ msgid "Python Hover Heavy Cannon" #~ msgstr "Python Hover Schweres Geschütz" - #~ msgid "Python Tracks Heavy Cannon" #~ msgstr "Python Ketten Schweres Geschütz" - #~ msgid "Mantis Tracks Railgun" #~ msgstr "Mantis Ketten Magnetgeschütz" - #~ msgid "Mantis Tracks Pulse Laser" #~ msgstr "Mantis Ketten Pulslaser" - #~ msgid "Python Tracks Lancer" #~ msgstr "Python Ketten Lancer" - #~ msgid "Mantis Tracks Lancer" #~ msgstr "Mantis Ketten Lancer" - #~ msgid "Vengeance Tracks Tank Killer" #~ msgstr "Vengeance Ketten Tank Killer" - #~ msgid "Tiger Tracks Heavy Cannon" #~ msgstr "Tiger Ketten Schweres Geschütz" - #~ msgid "Tiger Tracks Needle Gun" #~ msgstr "Tiger Ketten Nadelgeschütz" - #~ msgid "Vengeance Tracks Needle Gun" #~ msgstr "Vengeance Ketten Nadelgeschütz" - #~ msgid "Scorpion Cluster Bomb VTOL" #~ msgstr "Scorpion Streubomben VTOL" - #~ msgid "Scorpion Bunker Buster VTOL" #~ msgstr "Scorpion Bunker Buster VTOL" - #~ msgid "Bug Lancer VTOL" #~ msgstr "Bug Lancer VTOL" - #~ msgid "Bug HPV VTOL" #~ msgstr "Bug Hochgeschwindigkeitsgeschütz VTOL" - #~ msgid "Scorpion HPV VTOL" #~ msgstr "Scorpion Hochgeschwindigkeitsgeschütz VTOL" - #~ msgid "Mantis Lancer VTOL" #~ msgstr "Mantis Lancer VTOL" - #~ msgid "Mantis HPV VTOL" #~ msgstr "Mantis Hochgeschwindigkeitsgeschütz VTOL" - #~ msgid "Cobra Repair Tracks" #~ msgstr "Cobra Reparatur Ketten" - #~ msgid "Mantis Repair Tracks" #~ msgstr "Mantis Reparatur Ketten" - #~ msgid "Python Tank Killer Tracks" #~ msgstr "Python Tank Killer Ketten" - #~ msgid "Load Campaign" #~ msgstr "Kampagne laden" - #~ msgid "Full" #~ msgstr "Vollbild" - #~ msgid "Minimal" #~ msgstr "Kleinstmöglich" - #~ msgid "Played" #~ msgstr "Gespielt" - #~ msgid "Campaign One Full Version Test Message" #~ msgstr "Kampagne Eins Vollversions Testnachricht" - #~ msgid "New Paradigm Transmission" #~ msgstr "Ãœbertragung vom New Paradigm" - #~ msgid "The New Paradigm have been driven from this zone." #~ msgstr "Das New Paradigm wurde aus dieser Zone vertrieben." - #~ msgid "Establish a forward base near the site of the Research Centre." #~ msgstr "Errichten Sie eine vorgelagerte Basis in der Nähe der Forschungsanlage." - #~ msgid "Commander" #~ msgstr "Commander" - -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Gratulation zu Ihrem Sieg über das New Paradigm." - #~ msgid "This sector is now secure." #~ msgstr "Dieser Sektor ist nun sicher." - -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Als wir nicht darauf antworteten, drohte es uns." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "NEXUS entfernte sich selbst ohne eine Spur zu hinterlassen." - #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "Das NEXUS-Eindringlingsprogramm steht in Verbindung zur Reed Corporation." - -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "NEXUS verfügt über Technologien und Waffen und ist nicht freundlich gesinnt." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Krieger des Kollektiv..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Zerstört und tötet alle, die sich der Maschine widersetzen." - -#~ msgid "Attack!" -#~ msgstr "Angriff!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Analysen der Reaktoranlage deuten darauf hin, dass das Kollektiv" - #~ msgid "were preparing to route its power to this location." #~ msgstr "einen Energietransfer zu dieser Position vorbereitete." - #~ msgid "Argle Bargle - Please Remove when some text here!" #~ msgstr "Argle Bargle - Bitte entfernen wenn Text vorhanden (Ryo: literally translated ...)" - #~ msgid "Proceed with caution. Scout and confirm Gamma are not contaminated." #~ msgstr "Rücken Sie vorsichtig vor. Erkunden Sie und stellen Sie sicher, dass Gamma nicht kontaminiert ist." - #~ msgid "Secure this zone." #~ msgstr "Sichern Sie diese Zone." - #~ msgid "A relief force will be sent as soon as the zone is cleared of all enemy." #~ msgstr "Ein Hilfstrupp wird geschickt, sobald das Gebiet von allen Feinden befreit wurde." - #~ msgid "Be wary of attempts by NEXUS to control and infiltrate your systems." #~ msgstr "Nehmen Sie sich vor Infiltrationsversuchen von NEXUS in acht." - #~ msgid "End Of Briefing." #~ msgstr "Ende der Missionsbesprechung." - #~ msgid "Armed Scavengers Approaching" #~ msgstr "Bewaffnete Scavengers rücken an" - #~ msgid "Civilian Rescued" #~ msgstr "Zivilist gerettet" - #~ msgid "Civilians Rescued" #~ msgstr "Zivilisten gerettet" - #~ msgid "Unit Rescued" #~ msgstr "Einheit gerettet" - #~ msgid "Units Rescued" #~ msgstr "Einheiten gerettet" - #~ msgid "Group Rescued" #~ msgstr "Gruppe gerettet" - #~ msgid "Unit Captured" #~ msgstr "Einheit gekapert" - #~ msgid "Group Captured" #~ msgstr "Gruppe gekapert" - #~ msgid "Structure Captured" #~ msgstr "Gebäude gekapert" - #~ msgid "Structure Destroyed" #~ msgstr "Gebäude zerstört" - #~ msgid "Structure Infected" #~ msgstr "Gebäude infiziert" - #~ msgid "Unit Infected" #~ msgstr "Einheit infiziert" - #~ msgid "Group Infected" #~ msgstr "Gruppe infiziert" - #~ msgid "Primary Objective Completed" #~ msgstr "Primäres Missionsziel erfüllt" - #~ msgid "Secondary Objective Completed" #~ msgstr "Sekundäres Missionsziel erfüllt" - #~ msgid "Time Limit Exceeded" #~ msgstr "Zeitlimit überschritten" - #~ msgid "Out Of Time" #~ msgstr "Zeit abgelaufen" - #~ msgid "Enemy Escaped" #~ msgstr "Feind geflohen" - #~ msgid "Enemy Transport Landing" #~ msgstr "Feindlicher Transporter landet" - #~ msgid "Incoming Airstrike" #~ msgstr "Eintreffender Luftangriff" - -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Team Alpha ausgelöscht" - #~ msgid "Team Beta Eradicated" #~ msgstr "Team Beta ausgelöscht" - #~ msgid "Team Gamma Eradicated" #~ msgstr "Team Gamma ausgelöscht" - #~ msgid "Team Alpha Rescued" #~ msgstr "Team Alpha gerettet" - #~ msgid "Team Beta Rescued" #~ msgstr "Team Beta gerettet" - #~ msgid "Team Gamma Rescued" #~ msgstr "Team Gamma gerettet" - #~ msgid "Team Alpha Liberated" #~ msgstr "Team Alpha befreit" - #~ msgid "Team Beta Liberated" #~ msgstr "Team Beta befreit" - #~ msgid "Team Gamma Liberated" #~ msgstr "Team Gamma befreit" - #~ msgid "Civilians Eradicated" #~ msgstr "Zivilisten ausgelöscht" - #~ msgid "Civilians Liberated" #~ msgstr "Zivilisten befreit" - #~ msgid "Enemy Eradicated" #~ msgstr "Feind ausgelöscht" - #~ msgid "New Paradigm base eradicated" #~ msgstr "New Paradigm-Basis ausgelöscht" - #~ msgid "Collective base eradicated" #~ msgstr "Basis des Kollektivs ausgelöscht" - #~ msgid "Nexus base eradicated" #~ msgstr "NEXUS-Basis ausgelöscht" - #~ msgid "LasSat firing" #~ msgstr "Lasersatellit feuert" - #~ msgid "LasSats firing" #~ msgstr "Lasersatelliten feuern" - #~ msgid "Satellite Uplink" #~ msgstr "Satellitenkontrolle" - #~ msgid "NASDA Central" #~ msgstr "NASDA-Zentrale" - #~ msgid "SAM Site" #~ msgstr "Boden-Luft-Raketenstellung" - #~ msgid "Now left click the Viper Body" #~ msgstr "Machen Sie einen Linksklick auf den Rumpf Viper" - #~ msgid "Select the Vehicle Propulsion icon" #~ msgstr "Wählen Sie das Fahrzeugantrieb-Symbol" - #~ msgid "Presently unused" #~ msgstr "Derzeit nicht verwendet" + diff --git a/po/en_GB.po b/po/en_GB.po index 45f74698b..052208cc9 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-05 12:29+0000\n" "Last-Translator: Jen Ockwell \n" "Language-Team: English (United Kingdom) \n" @@ -1580,7 +1580,7 @@ msgstr "Cyborg Production Improved" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Automated Cyborg Production" @@ -1612,8 +1612,8 @@ msgstr "All Cyborg factories upgraded automatically" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Cyborg Factory" @@ -1774,7 +1774,7 @@ msgstr "Increases Damage Resistance" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Reinforced Base Structure Materials" @@ -1947,7 +1947,7 @@ msgstr "Vehicle Engine Upgrade" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Fuel Injection Engine" @@ -2104,7 +2104,7 @@ msgstr "Speed: Slow" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Wheeled Propulsion" @@ -2964,7 +2964,7 @@ msgstr "New robotic repair techniques" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Robotic Cyborg Production" @@ -2986,7 +2986,7 @@ msgstr "Increases factory production rate" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Dedicated Synaptic Link Data Analysis" @@ -2995,7 +2995,7 @@ msgstr "Dedicated Synaptic Link Data Analysis" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Hardened Base Structure Materials" @@ -3004,7 +3004,7 @@ msgstr "Hardened Base Structure Materials" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Robotic VTOL Production" @@ -3040,7 +3040,7 @@ msgstr "VTOL Rearming Times Reduced" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Automated VTOL Rearming" @@ -3171,7 +3171,7 @@ msgstr "High power costs and slower to produce than Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Turbo-Charged Engine" @@ -3849,14 +3849,14 @@ msgstr "Vapour Turbine boosts power output" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Neural Synapse Research Brain" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Advanced Base Structure Materials" @@ -3868,14 +3868,14 @@ msgstr "High Density Base Structure Materials" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Advanced VTOL Production" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Robotic VTOL Rearming" @@ -4013,7 +4013,7 @@ msgstr "Very expensive to produce" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Gas Turbine Engine" @@ -4566,14 +4566,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Laser designator paints and guides rounds to the target" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "OBJECTIVE: Locate and recover neural synapse technology" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Establish a base, then search for a Pre-Collapse structure." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "This structure contains technology vital for the success of the Project." @@ -4930,14 +4933,18 @@ msgid "We'll keep you informed of further developments" msgstr "We'll keep you informed of further developments" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Commander you are to assist Team Beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "BETA BASE MISSION: Eastern Sector" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Upon arrival you are to assume command of the base." @@ -4946,16 +4953,19 @@ msgid "You must defend it and hold it." msgstr "You must defend it and hold it." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "BETA BASE MISSION: Defend and Fortify" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Be sure to fortify the perimeter and establish anti-aircraft defenses." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "New technologies are available." @@ -5252,6 +5262,8 @@ msgid "Good luck, Commander." msgstr "Good luck, Commander." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "TRANSPORT MISSION: Northern Sector" @@ -5260,6 +5272,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Congratulations on your successful evacuation of Beta Base." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." @@ -5268,10 +5281,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Take your forces to the Northern Sector" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Once at the mountains secure an LZ. Then establish a forward base." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Team Gamma will contact you there." @@ -5280,6 +5295,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "TRANSPORT MISSION: Establish A Forward Base" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Commander, the success of the Project lies with you." @@ -5306,6 +5322,7 @@ msgstr "We are transmitting coordinates of an LZ near the silos." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Coordinate Download Completed." @@ -5747,7 +5764,7 @@ msgstr "Transport" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Truck" @@ -5756,7 +5773,7 @@ msgstr "Truck" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Machinegun Viper Wheels" @@ -5787,7 +5804,7 @@ msgstr "Viper Light Cannon Tracks" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 #, fuzzy msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Cobra Heavy Machinegun Half-track" @@ -5824,7 +5841,7 @@ msgstr "Viper Repair Half-track" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 #, fuzzy msgid "Twin Machinegun Viper Wheels" msgstr "Machinegun Viper Wheels" @@ -5844,7 +5861,7 @@ msgstr "Cobra Heavy Machinegun Half-track" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 #, fuzzy msgid "Heavy Machinegun Viper Tracks" msgstr "Viper Heavy Machinegun Tracks" @@ -5873,7 +5890,7 @@ msgstr "Viper Bunker Buster Rockets Wheels" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 #, fuzzy msgid "Medium Cannon Cobra Tracks" msgstr "Viper Medium Cannon Tracks" @@ -5887,7 +5904,7 @@ msgstr "Cobra Heavy Cannon Tracks" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Cobra Truck" @@ -5898,7 +5915,7 @@ msgstr "Lancer Cobra Half-tracks" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 #, fuzzy msgid "Flamer Cobra Tracks" msgstr "Repair Cobra Tracks" @@ -5918,7 +5935,7 @@ msgstr "Cobra Command Turret Half-track" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Lancer Cobra Half-tracks" @@ -5934,10 +5951,10 @@ msgid "Light Cannon Python Tracks" msgstr "HPV Cannon Python Tracks" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 #, fuzzy msgid "Medium Cannon Python Tracks" msgstr "HPV Cannon Python Tracks" @@ -5945,9 +5962,9 @@ msgstr "HPV Cannon Python Tracks" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 #, fuzzy msgid "Heavy Cannon Python Tracks" msgstr "HPV Cannon Python Tracks" @@ -5955,7 +5972,7 @@ msgstr "HPV Cannon Python Tracks" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 #, fuzzy msgid "Command Turret Python Tracks" msgstr "Commander Python Tracks" @@ -6020,7 +6037,7 @@ msgstr "Civilian" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Machinegunner" @@ -6029,9 +6046,9 @@ msgstr "Machinegunner" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Flamer" @@ -6041,8 +6058,8 @@ msgstr "Flamer" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lancer" @@ -6051,7 +6068,7 @@ msgstr "Lancer" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Heavy Gunner" @@ -6145,8 +6162,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Command Turret" @@ -6250,14 +6267,14 @@ msgstr "Half-tracks III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Cyborg Propulsion II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Cyborg Propulsion III" @@ -6279,7 +6296,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Cyborg Propulsion" @@ -6308,8 +6325,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Sensor Tower" @@ -6317,15 +6334,15 @@ msgstr "Sensor Tower" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Hardened Sensor Tower" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Sensor Turret" @@ -6349,7 +6366,7 @@ msgstr "CB Radar Turret" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "VTOL Strike Turret" @@ -6385,7 +6402,7 @@ msgstr "Factory" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Factory Module" @@ -6397,7 +6414,7 @@ msgstr "Power Generator" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Power Module" @@ -6409,7 +6426,7 @@ msgstr "Research Facility" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Research Module" @@ -6421,7 +6438,7 @@ msgstr "Demolish Structure" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Repair Centre" @@ -6442,8 +6459,8 @@ msgstr "Hardcrete Wall" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "VTOL Factory" @@ -6454,30 +6471,30 @@ msgstr "Inferno Emplacement" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Inferno Hardpoint" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Pepperpot Pit" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Hellstorm Emplacement" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Tornado AA Flak Site" @@ -6488,27 +6505,27 @@ msgstr "Cyclone AA Flak Site" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Hurricane AA Site" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Whirlwind AA Site" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Ripple Rocket Battery" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Assault Cannon Guard Tower" @@ -6519,29 +6536,29 @@ msgstr "Assault Gun Guard Tower" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Assault Gun Hardpoint" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Assault Cannon Hardpoint" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "CB Tower" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "VTOL CB Tower" @@ -6551,82 +6568,82 @@ msgstr "VTOL Radar Tower" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Heavy Machinegun Hardpoint" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Light Cannon Hardpoint" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Medium Cannon Hardpoint" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Heavy Cannon Hardpoint" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Flamer Hardpoint" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Lancer Hardpoint" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Machinegun Guard Tower" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Twin Machinegun Guard Tower" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 #, fuzzy msgid "Heavy Machinegun Tower" msgstr "Heavy Machinegun Guard Tower" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Flamer Guard Tower" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 #, fuzzy msgid "Lancer Tower" msgstr "Lancer Guard Tower" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 #, fuzzy msgid "Mini-Rocket Tower" msgstr "Mini-Pod Rocket Guard Tower" @@ -6634,88 +6651,88 @@ msgstr "Mini-Pod Rocket Guard Tower" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Machinegun Bunker" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Twin Machinegun Bunker" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Heavy Machinegun Bunker" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Light Cannon Bunker" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Flamer Bunker" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Lancer Bunker" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Tank Traps" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Dragon's Teeth" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "VTOL Rearming Pad" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Howitzer Emplacement" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Flashlight Emplacement" @@ -6726,139 +6743,139 @@ msgstr "Flashlight Hardpoint" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Rail Gun Hardpoint" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Scourge Missile Tower" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Needle Gun Tower" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Gauss Cannon Emplacement" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Light Cannon" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Medium Cannon" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Heavy Cannon" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Hyper Velocity Cannon" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Assault Cannon" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Howitzer" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Ground Shaker" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Ground Shaker Emplacement" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Hellstorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Pulse Laser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Machinegun" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Twin Machinegun" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Heavy Machinegun" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Assault Gun" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Scourge Missile" @@ -6869,80 +6886,80 @@ msgstr "Angel Missile" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "Vindicator SAM" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Archangel Missile" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "Avenger SAM" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "VTOL Scourge Missile" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mortar" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Mortar Emplacement" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombard" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Bombard Emplacement" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Pepperpot" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Pepperpot Emplacement" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Needle Gun" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Rail Gun" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Gauss Cannon" @@ -6952,76 +6969,76 @@ msgid "Mini-Rocket Artillery" msgstr "Mini-Rocket Artillery" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Bunker Buster" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 #, fuzzy msgid "Mini-Rocket Pod" msgstr "Mini-Rocket Upgrade" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Ripple Rockets" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Tank Killer" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "VTOL Bunker Buster" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 #, fuzzy msgid "VTOL Mini-Rocket" msgstr "HE Mini-Rockets" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "VTOL Lancer" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "VTOL Tank Killer" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Tornado Flak Turret" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Cyclone Flak Turret" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Whirlwind AA Turret" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Hurricane AA Turret" @@ -7030,62 +7047,62 @@ msgid "LasSat" msgstr "LasSat" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "VTOL Cannon" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "VTOL Hyper Velocity Cannon" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "VTOL Assault Cannon" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "VTOL Pulse Laser" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "VTOL Machinegun" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "VTOL Twin Machinegun" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "VTOL Heavy Machinegun" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "VTOL Assault Gun" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "VTOL Needle Gun" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "VTOL Rail Gun" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Proximity Bomb Turret" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Proximity Superbomb Turret" @@ -7094,22 +7111,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "VTOL Cluster Bombs Bay" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "VTOL Heap Bomb Bay" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "VTOL Phosphor Bomb Bay" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "VTOL Thermite Bomb Bay" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Collective Wall" @@ -7126,316 +7143,316 @@ msgid "NEXUS CWall" msgstr "NEXUS CWall" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 RESEARCH" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "ADVANCED RESEARCH" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 VEHICLES" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 WEAPONS" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SYSTEMS" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DEFENSES" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 STRUCTURES" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 RESEARCH" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 VEHICLES" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 WEAPONS" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SYSTEMS" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 DEFENSES" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 STRUCTURES" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 RESEARCH" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Synaptic Link" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Missile Targeting Codes" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Second Level Missile Targeting Codes" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Third Level Missile Firing Codes" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Cyborg Thermal Armour" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Cyborg Thermal Armour Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Cyborg Thermal Armour Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Cyborg High Intensity Thermal Armour" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Cyborg High Intensity Thermal Armour Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Cyborg High Intensity Thermal Armour Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Cyborg Composite Alloys" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Cyborg Composite Alloys Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Cyborg Composite Alloys Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Cyborg Dense Composite Alloys" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Cyborg Dense Composite Alloys Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Cyborg Dense Composite Alloys Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Cyborg Superdense Composite Alloys" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Cyborg Superdense Composite Alloys Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Cyborg Superdense Composite Alloys Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 #, fuzzy msgid "Bunker Blaster Cyborg" msgstr "Bunker Blaster" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 #, fuzzy msgid "Heavy Gunner Cyborg" msgstr "Heavy Gunner" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 #, fuzzy msgid "Flamer Cyborg" msgstr "Flamer" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 #, fuzzy msgid "Machinegunner Cyborg" msgstr "Machinegunner" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 #, fuzzy msgid "Lancer Cyborg" msgstr "Lancer" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 #, fuzzy msgid "Assault Gunner Cyborg" msgstr "Assault Gunner" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 #, fuzzy msgid "Needle Gunner Cyborg" msgstr "Needle Gunner" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 #, fuzzy msgid "Scourge Cyborg" msgstr "Super Scourge Cyborg" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 #, fuzzy msgid "Flashlight Gunner Cyborg" msgstr "Flashlight Gunner" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Jump Bunker Blaster" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Jump Heavy Gunner" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Jump Lancer" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Jump Assault Gunner" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Jump Needle Gunner" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Jump Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Jump Flashlight Gunner" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Cyborg Jump Pack" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Hardcrete" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Hardcrete" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Improved Hardcrete" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Improved Hardcrete Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Improved Hardcrete Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Supercrete" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Supercrete Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Supercrete Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plascrete" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plascrete Mk2" @@ -7450,15 +7467,15 @@ msgstr "HPV Cannon Emplacement" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Tank Killer Emplacement" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Bombard Pit" @@ -7467,55 +7484,55 @@ msgid "Angel Missile Battery" msgstr "Angel Missile Battery" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Archangel Missile Battery" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Mortar Pit" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Mini-Rocket Battery" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Pulse Laser Emplacement" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Rail Gun Emplacement" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Assault Cannon Emplacement" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Assault Gun Emplacement" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Avenger SAM Site" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Vindicator SAM Site" @@ -7534,15 +7551,15 @@ msgstr "Mini-Pod Rocket Guard Tower" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Scourge Missile Hardpoint" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Tank Killer Hardpoint" @@ -7553,49 +7570,49 @@ msgstr "HPV Cannon Hardpoint" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Gauss Cannon Hardpoint" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Command Relay Post" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Automated Cyborg Production Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Automated Cyborg Production Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Robotic Cyborg Production Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Robotic Cyborg Production Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Advanced Cyborg Production" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Advanced Cyborg Production Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Advanced Cyborg Production Mk3" @@ -7633,54 +7650,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Advanced Factory Production Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Reinforced Base Structure Materials Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Reinforced Base Structure Materials Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Hardened Base Structure Materials Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Hardened Base Structure Materials Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Advanced Base Structure Materials Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Advanced Base Structure Materials Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Gas Turbine Generator" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Vapour Turbine Generator" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Repair Facility" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Automated Repair Facility" @@ -7717,172 +7734,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Advanced Repair Facility Upgrade Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Synaptic Link Data Analysis" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Synaptic Link Data Analysis Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Synaptic Link Data Analysis Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Dedicated Synaptic Link Data Analysis Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Dedicated Synaptic Link Data Analysis Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Neural Synapse Research Brain Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Neural Synapse Research Brain Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Automated VTOL Rearming Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Automated VTOL Rearming Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Robotic VTOL Rearming Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Robotic VTOL Rearming Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Robotic VTOL Rearming Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Robotic VTOL Production Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Robotic VTOL Production Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Advanced VTOL Production Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Advanced VTOL Production Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Cyborg Self-Repair" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Automated Cyborg Repair Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Automated Cyborg Repair Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Defenses Self-Repair" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Automated Defenses Repair Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Automated Defenses Repair Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Base Structure Self-Repair" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Automated Base Structure Repair Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Automated Base Structure Repair Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Vehicle Self-Repair" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Automated Vehicle Repair Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Automated Vehicle Repair Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Sensor Upgrade" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Construction Unit" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Engineering" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Improved Engineering" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Advanced Engineering" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Mobile Repair Turret" @@ -7892,84 +7909,84 @@ msgstr "Heavy Mobile Repair Turret" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Mobile Repair Upgrade" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Mobile Repair Upgrade Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "CB Turret" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "CB Sensor Upgrade" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "CB Sensor Upgrade 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "CB Sensor Upgrade 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "VTOL CB Turret" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "VTOL CB Upgrade" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "VTOL CB Upgrade 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "VTOL CB Upgrade 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "VTOL Strike Upgrade" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "VTOL Strike Upgrade Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "VTOL Strike Upgrade Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "VTOL Strike Tower" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Improved Scrambler" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Scrambler Turret Mk2" @@ -7990,292 +8007,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "NEXUS Resistance Circuits Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Sensor Lock" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Thermal Armour" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Thermal Armour Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Thermal Armour Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "High Intensity Thermal Armour" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "High Intensity Thermal Armour Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "High Intensity Thermal Armour Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Light Body - Viper" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Light Body - Leopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Light Body - Retaliation" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Light Body - Bug" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Medium Body - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Medium Body - Panther" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Medium Body - Retribution" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Medium Body - Scorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Heavy Body - Tiger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Heavy Body - Vengeance" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Heavy Body - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Heavy Body - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Fuel Injection Engine Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Fuel Injection Engine Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Turbo-Charged Engine Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Turbo-Charged Engine Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Gas Turbine Engine Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Gas Turbine Engine Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Composite Alloys" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Composite Alloys Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Composite Alloys Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Dense Composite Alloys" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Dense Composite Alloys Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Dense Composite Alloys Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Superdense Composite Alloys" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Superdense Composite Alloys Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Superdense Composite Alloys Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Hover Propulsion" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Hover Propulsion II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Half-tracked Propulsion" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Half-tracked Propulsion II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Tracked Propulsion" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Tracked Propulsion II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "VTOL Propulsion" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "VTOL Propulsion II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Wheeled Propulsion II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "AA Thermal Imaging Sensor" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "AA Target Acquisition Shells" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "AA Target Prediction Computer" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "AA HE Flak" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "AA HE Flak Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "AA HE Flak Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "AA HEAP Flak" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "AA HEAP Flak Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "AA HEAP Flak Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "AA Ammunition Hopper" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "AA Ammunition Hopper Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "AA Ammunition Hopper Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "AA Chainfeed Loader" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "AA Chainfeed Loader Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "AA Chainfeed Loader Mk3" @@ -8284,17 +8301,17 @@ msgid "Cluster Bombs Bay" msgstr "Cluster Bombs Bay" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "HEAP Bomb Bay" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Phosphor Bomb Bay" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Thermite Bomb Bay" @@ -8311,252 +8328,252 @@ msgid "Target Acquisition Bombsight" msgstr "Target Acquisition Bombsight" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Cannon Laser Rangefinder" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Cannon Laser Designator" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "HEAT Cannon Shells" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "HEAT Cannon Shells Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "HEAT Cannon Shells Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "APFSDS Cannon Rounds" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "APFSDS Cannon Rounds Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "APFSDS Cannon Rounds Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "HVAPFSDS Cannon Rounds" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "HVAPFSDS Cannon Rounds Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "HVAPFSDS Cannon Rounds Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Cannon Autoloader" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Cannon Autoloader Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Cannon Autoloader Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Cannon Rapid Loader" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Cannon Rapid Loader Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Cannon Rapid Loader Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Improved Laser Focusing" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Improved Laser Focusing Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Improved Laser Focusing Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Hi-Energy Laser Emitter" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Hi-Energy Laser Emitter Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Hi-Energy Laser Emitter Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Thermopole Energiser" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Thermopole Energiser Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Thermopole Energiser Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "High Temperature Flamer Gel" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "High Temperature Flamer Gel Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "High Temperature Flamer Gel Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Superhot Flamer Gel" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Superhot Flamer Gel Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Superhot Flamer Gel Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Flamer Autoloader" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Flamer Autoloader Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Flamer Autoloader Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Heavy Flamer - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Heavy Howitzer - Ground Shaker" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Rotary Howitzer - Hellstorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Target Acquisition Artillery Shells" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Target Acquisition Artillery Shells Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Target Prediction Artillery Shells" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "HE Howitzer Shells" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "HE Howitzer Shells Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "HE Howitzer Shells Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "HEAP Howitzer Shells" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "HEAP Howitzer Shells Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "HEAP Howitzer Shells Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Howitzer Autoloader" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Howitzer Autoloader Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Howitzer Autoloader Mk3" @@ -8565,57 +8582,57 @@ msgid "Fast Loader" msgstr "Fast Loader" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - Flashlight" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Hardened MG Bullets" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "APDSB MG Bullets" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "APDSB MG Bullets Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "APDSB MG Bullets Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Tungsten-Tipped MG Bullets" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Tungsten-Tipped MG Bullets Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Tungsten-Tipped MG Bullets Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Depleted Uranium MG Bullets" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Depleted Uranium MG Bullets Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Chaingun Upgrade" @@ -8624,142 +8641,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Rapid Fire Chaingun Upgrade" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Hyper Fire Chaingun Upgrade" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Target Prediction Missiles" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Search & Destroy Missiles" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Advanced Missile Warhead" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Advanced Missile Warhead Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Advanced Missile Warhead Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Advanced Missile Allocation System" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Advanced Missile Allocation System Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Advanced Missile Allocation System Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "HEAP Missile Warhead" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "HEAP Missile Warhead Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "HEAP Missile Warhead Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Improved Missile Loading System" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Mortar Targeting Computer" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Thermal Imaging Mortar Shells" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Target Acquisition Mortar Shells" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "HE Mortar Shells" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "HE Mortar Shells Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "HE Mortar Shells Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "HEAP Mortar Shells" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "HEAP Mortar Shells Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "HEAP Mortar Shells Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Mortar Autoloader" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Mortar Autoloader Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Mortar Autoloader Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Mortar Fast Loader" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Heavy Mortar - Bombard" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Rotary Mortar - Pepperpot" @@ -8768,368 +8785,368 @@ msgid "Target Prediction Computer" msgstr "Target Prediction Computer" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Hardened Rail Dart" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Hardened Rail Dart Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Hardened Rail Dart Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Rail Gun ROF" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Rail Gun ROF Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Rail Gun ROF Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Stabilised Mini-Rockets" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Stabilised Mini-Rockets Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "HE Mini-Rockets" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "HE Mini-Rockets Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "HE Mini-Rockets Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "HEAP Mini-Rockets" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "HEAP Mini-Rockets Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "HEAP Mini-Rockets Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Fast Fire Mini-Rockets" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Fast Fire Mini-Rockets Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Fast Fire Mini-Rockets Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Rapid Fire Mini-Rockets" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Rapid Fire Mini-Rockets Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Rapid Fire Mini-Rockets Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Improved Rocket Wire Guidance" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Rocket Laser Designator" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Thermal Imaging Rockets" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "HEAT Rocket Warhead" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "HEAT Rocket Warhead Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "HEAT Rocket Warhead Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "HESH Rocket Warhead" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "HESH Rocket Warhead Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "HESH Rocket Warhead Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Rocket Autoloader" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Rocket Autoloader Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Rocket Autoloader Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Lancer AT Rocket" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Bunker Buster Rocket" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Tank Killer Rocket" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 #, fuzzy msgid "Machinegun Artifact" msgstr "Machine Gun Artifact" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "New Paradigm Command Centre" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Collective Command Centre" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Scavenger Factory" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Scavenger Gun Tower" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Scavenger Horizontal Wall" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Scavenger Power Generator" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Scavenger Rocket Pit" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Scavenger AT-Rocket Pit" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Scavenger Bunker" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Scavenger CornerWall" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Scavenger Flame Tower" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Scavenger Flame Tower End" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Look-Out Tower" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Cannon Tower" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artifact" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Oil Resource" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Bridge" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Ruined Factory" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Warehouse" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Hut" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Oil Drum" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Wreck" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Wrecked Tank" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Wrecked Bridge" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Wrecked Van" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Wrecked Vehicle" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Wrecked Tanker" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Cyborg Laboratory" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Advanced Warfare Laboratory" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Engineering Laboratory" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Robotics Laboratory" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laser Optics Laboratory" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Electronics Laboratory" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Chemical Laboratory" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Advanced Warfare" @@ -9150,7 +9167,7 @@ msgid "MRL Emplacement" msgstr "MRL Emplacement" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Railgun Emplacement" @@ -9159,50 +9176,50 @@ msgid "Angel Missile Emplacement" msgstr "Angel Missile Emplacement" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Archangel Missile Emplacement" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 #, fuzzy msgid "Repair Turret Cobra Tracks" msgstr "Repair Cobra Tracks" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Bunker Blaster" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Flashlight Gunner" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Needle Gunner" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Downed Transport" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Tank Killer Python Tracks" @@ -9211,37 +9228,37 @@ msgid "HPV Cannon Python Tracks" msgstr "HPV Cannon Python Tracks" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Cyclone AA Python Half-tracks" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Assault Gun Python Tracks" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Flashlight" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "VTOL Flashlight" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Rotary MG Bunker" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Missile Silo" @@ -9523,367 +9540,1236 @@ msgstr "Please wait whilst the factory manufactures the new unit(s)" msgid "Congratulations commander - you are ready for your first mission" msgstr "Congratulations commander - you are ready for your first mission" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "Incoming transmission" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +#, fuzzy +msgid "Transmission from Beta Base" +msgstr "Incoming transmission from away team." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Project Goals" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Team Alpha Eradicated" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +#, fuzzy +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "We have decoded the incoming message to the New Paradigm..." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "We are currently receiving this transmission." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +#, fuzzy +msgid "You are in contravention of the New Paradigm." +msgstr "Congratulations on defeating the New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "Congratulations on defeating the New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "They must be stopped." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +#, fuzzy +msgid "Secure the LZ and establish a forward base." +msgstr "Secure an LZ, then establish a forward base." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "Then destroy the camp." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "When we failed to respond it became threatening." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +#, fuzzy +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Nexus has technology and weapons and is not friendly." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +#, fuzzy +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "The synaptic link technology has been recovered!" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +#, fuzzy +msgid "Team Alpha approaches Beta Base" +msgstr "Team Alpha Eradicated" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +#, fuzzy +msgid "You must defend and hold it at all costs." +msgstr "You must defend it and hold it." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +#, fuzzy +msgid "Commander, a new launch has been detected." +msgstr "Commander, we have defeated NEXUS." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +#, fuzzy +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "You are to establish a safe haven for evacuation of Beta Base." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +#, fuzzy +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "We are detecting transmissions from this site that are reaching high orbit." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +#, fuzzy +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS has now reconnected itself with the NASDA satellites." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +#, fuzzy +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Commander, there are missiles present at the silos." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +#, fuzzy +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Destroy and kill all who resist the Machine." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +#, fuzzy +msgid "Attack and destroy all who resist the machine." +msgstr "Destroy and kill all who resist the Machine." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Attack!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +#, fuzzy +msgid "Cleanse and destroy!!" +msgstr "Search and destroy .... " + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +#, fuzzy +msgid "Warriors of the Collective. You have performed well." +msgstr "Warriors of the Collective..." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "Incoming Transmission..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Congratulations on your successful evacuation of Beta Base." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "Briefing Commences:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "View next Commander" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +#, fuzzy +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "We are detecting enemy forces at these locations." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Good luck, Commander." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +#, fuzzy +msgid "Commander, welcome to NEXUS!" +msgstr "Commander, we have defeated NEXUS." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Commander, we are attempting to return to base." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Nuclear Reactor" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Cobra Hover Heavy-Repair" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Viper HMG Wheels" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Scourge Mantis Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "TK Mantis Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Cobra HMG Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Cobra Hover HC" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Scorpion Lancer Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Scorpion Heavy Cannon Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Scorpion Lancer VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Scorpion BB VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Viper Command Turret Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Cobra Command Turret Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Scorpion Command Turret Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Mantis Command Turret Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Cobra Lancer Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Mantis Heavy Cannon Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Mantis Tank Killer Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Mantis Scourge Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Scorpion Heavy Machinegun Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Scorpion Repair Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Scorpion Heavy Repair Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Cobra Hover Truck" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Scorpion Hover Truck" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Mantis Hover Truck" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Cobra Bunker Buster Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Scorpion Bunker Buster Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Mantis Bunker Buster Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Viper Tracks Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Cobra Half-Tracks Mini-Pod" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Cobra Tracks Mini-Pod" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Cobra Tracks Mini-Rocket Artillery" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Cobra Inferno Half-track" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Python HVC Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Python Scourge Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Python Gauss Cannon Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Python Pulse Laser Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tiger Pulse Laser Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tiger Heavy Laser Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Wyvern Gauss Cannon Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Wyvern Pulse Laser Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Wyvern Heavy Laser Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 #, fuzzy msgid "Viper Machinegun Half-Track" msgstr "Viper Twin Machinegun Half-track" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 #, fuzzy msgid "Viper Flamer Half-Track" msgstr "Viper Repair Half-track" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 #, fuzzy msgid "Heavy Repair Turret Cobra Hover" msgstr "Heavy Repair Turret" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 #, fuzzy msgid "Heavy Machinegun Viper Wheels" msgstr "Machinegun Viper Wheels" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 #, fuzzy msgid "Tank Killer Mantis Hover" msgstr "TK Mantis Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 #, fuzzy msgid "Heavy Machinegun Cobra Tracks" msgstr "Viper Heavy Machinegun Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 #, fuzzy msgid "Heavy Cannon Cobra Hover" msgstr "Heavy Cannon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 #, fuzzy msgid "Heavy Machinegun Cobra Wheels" msgstr "Machinegun Viper Wheels" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 #, fuzzy msgid "Heavy Machinegun Cobra Hover" msgstr "Heavy Machinegun Guard Tower" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 #, fuzzy msgid "Machinegun Viper Tracks" msgstr "Machinegun Viper Wheels" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 #, fuzzy msgid "Twin Machinegun Viper Tracks" msgstr "Twin Machinegun Guard Tower" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 #, fuzzy msgid "Medium Cannon Cobra Hover" msgstr "Medium Cannon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 #, fuzzy msgid "Medium Cannon Scorpion Hover" msgstr "Medium Cannon Hardpoint" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 #, fuzzy msgid "Medium Cannon Scorpion Tracks" msgstr "Viper Medium Cannon Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 #, fuzzy msgid "Medium Cannon Python Hover" msgstr "Medium Cannon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 #, fuzzy msgid "Heavy Cannon Python Hover" msgstr "HPV Cannon Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 #, fuzzy msgid "Rail Gun Mantis Tracks" msgstr "Assault Gun Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 #, fuzzy msgid "Pulse Laser Mantis Tracks" msgstr "Tiger Pulse Laser Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 #, fuzzy msgid "Lancer Python Tracks" msgstr "Commander Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 #, fuzzy msgid "Lancer Mantis Tracks" msgstr "Cobra Lancer Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 #, fuzzy msgid "Tank Killer Vengeance Tracks" msgstr "Tank Killer Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 #, fuzzy msgid "Heavy Cannon Tiger Tracks" msgstr "Cobra Heavy Cannon Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 #, fuzzy msgid "Needle Gun Tiger Tracks" msgstr "Needle Gun Tower" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 #, fuzzy msgid "Needle Gun Retribution Tracks" msgstr "Retribution Tracks Needle Gun" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 #, fuzzy msgid "Needle Gun Vengeance Tracks" msgstr "Needle Gunner" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Vengeance Tracks Rail Gun" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 #, fuzzy msgid "Vengeance Tracks Gauss Cannon" msgstr "Vengeance Tracks Guass Cannon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 #, fuzzy msgid "Vengeance Tracks Gauss Scourge" msgstr "Vengeance Tracks Guass Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 #, fuzzy msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "VTOL Cluster Bombs Bay" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 #, fuzzy msgid "VTOL Bunker Buster Bug VTOL" msgstr "Bug Bunker Buster VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 #, fuzzy msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "Bug Cluster Bomb VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 #, fuzzy msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Bug Bunker Buster VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 #, fuzzy msgid "VTOL Lancer Bug VTOL" msgstr "VTOL Lancer" @@ -9894,7 +10780,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "VTOL Cannon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 #, fuzzy msgid "VTOL Lancer Scorpion VTOL" msgstr "Scorpion BB VTOL" @@ -9905,7 +10791,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "HPV Cannon Hardpoint" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 #, fuzzy msgid "VTOL Lancer Mantis VTOL" msgstr "VTOL Lancer" @@ -9916,151 +10802,151 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "VTOL Cannon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 #, fuzzy msgid "Repair Turret Mantis Tracks" msgstr "Repair Cobra Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 #, fuzzy msgid "Lancer Scorpion Tracks" msgstr "Scorpion Lancer Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 #, fuzzy msgid "Heavy Cannon Scorpion Tracks" msgstr "Cobra Heavy Cannon Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 #, fuzzy msgid "Lancer Scorpion VTOL" msgstr "Scorpion BB VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 #, fuzzy msgid "Bunker Buster Scorpion VTOL" msgstr "Bug Bunker Buster VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 #, fuzzy msgid "Command Turret Viper Tracks" msgstr "Viper Command Turret Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 #, fuzzy msgid "Command Turret Cobra Tracks" msgstr "Viper Command Turret Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 #, fuzzy msgid "Command Turret Scorpion Tracks" msgstr "Viper Command Turret Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 #, fuzzy msgid "Command Turret Mantis Tracks" msgstr "Viper Command Turret Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 #, fuzzy msgid "Lancer Cobra Tracks" msgstr "Lancer Cobra Half-tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 #, fuzzy msgid "Heavy Cannon Mantis Tracks" msgstr "Cobra Heavy Cannon Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 #, fuzzy msgid "Tank Killer Mantis Tracks" msgstr "Tank Killer Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 #, fuzzy msgid "Scourge Mantis Tracks" msgstr "Scourge Mantis Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" msgstr "Viper Heavy Machinegun Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 #, fuzzy msgid "Repair Scorpion Tracks" msgstr "Repair Cobra Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 #, fuzzy msgid "Heavy Repair Scorpion Hover" msgstr "Scorpion Heavy Repair Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 #, fuzzy msgid "Truck Cobra Hover" msgstr "Cobra Hover HC" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 #, fuzzy msgid "Truck Scorpion Hover" msgstr "Scorpion Hover Truck" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 #, fuzzy msgid "Truck Mantis Hover" msgstr "TK Mantis Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 #, fuzzy msgid "Bunker Buster Cobra Tracks" msgstr "Cobra Bunker Buster Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 #, fuzzy msgid "Bunker Buster Scorpion Tracks" msgstr "Cobra Bunker Buster Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 #, fuzzy msgid "Bunker Buster Mantis Tracks" msgstr "Cobra Bunker Buster Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 #, fuzzy msgid "Lancer Viper Tracks" msgstr "Cobra Lancer Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 #, fuzzy msgid "Mini-Rocket Cobra Half-Tracks" msgstr "HMG Cobra Half-tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 #, fuzzy msgid "Mini-Rocket Cobra Tracks" msgstr "Mini-Pod Rockets" @@ -10071,7 +10957,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Mini-Rocket Artillery" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 #, fuzzy msgid "Inferno Cobra Half-Tracks" msgstr "Lancer Cobra Half-tracks" @@ -10082,65 +10968,185 @@ msgid "HPV Cannon Python Hover" msgstr "HPV Cannon Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 #, fuzzy msgid "Scourge Python Tracks" msgstr "Commander Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 #, fuzzy msgid "Gauss Cannon Python Tracks" msgstr "HPV Cannon Python Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 #, fuzzy msgid "Pulse Laser Python Tracks" msgstr "Tiger Pulse Laser Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 #, fuzzy msgid "Pulse Laser Tiger Tracks" msgstr "Tiger Pulse Laser Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 #, fuzzy msgid "Heavy Laser Tiger Tracks" msgstr "Tiger Heavy Laser Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 #, fuzzy msgid "Gauss Cannon Wyvern Tracks" msgstr "Python Gauss Cannon Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 #, fuzzy msgid "Pulse Laser Wyvern Tracks" msgstr "Tiger Pulse Laser Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 #, fuzzy msgid "Heavy Laser Wyvern Tracks" msgstr "Tiger Heavy Laser Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 #, fuzzy msgid "Machinegun Viper Half-Tracks" msgstr "Viper Twin Machinegun Half-track" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 #, fuzzy msgid "Flamer Viper Half-Tracks" msgstr "Viper Repair Half-track" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "Lancer Cobra Half-tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "Viper Medium Cannon Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "HPV Cannon Python Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "Assault Gun Python Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "Assault Gun Python Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Viper Heavy Machinegun Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "Assault Cannon Guard Tower" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "Pulse Laser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "Pulse Laser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +#, fuzzy +msgid "Rail Gun Tiger Hover" +msgstr "Rail Gun Upgrade" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "Tiger Pulse Laser Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Python Gauss Cannon Tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "Scourge Missile Tower" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +#, fuzzy +msgid "Flashlight Retribution Hover" +msgstr "Flashlight Gunner" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "HMG Cobra Half-tracks" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Mini-Rocket Artillery" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Phosphor Bomb Bay" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "VTOL Heap Bomb Bay" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Medium Body - Retribution" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "Retaliation" + #: data/mp/messages/resmessages12.rmsg:58 #, fuzzy msgid "Construction speed +10%" @@ -10813,7 +11819,7 @@ msgid "Upgraded battlefield computer system" msgstr "Upgraded battlefield computer system" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Cyborg Transport" @@ -10848,7 +11854,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Cobra Mini-Rocket Artillery Half-track" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10863,709 +11869,724 @@ msgid "Nexus Link" msgstr "Nexus Link Turret" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Nexus Link Turret" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Hardcrete Wall" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 #, fuzzy msgid "Inferno Bunker" msgstr "Lancer Bunker" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Tornado AA Site" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Cyclone AA Site" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 #, fuzzy msgid "Pulse Laser Hardpoint" msgstr "Flamer Hardpoint" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 #, fuzzy msgid "Pulse Laser Tower" msgstr "Pulse Laser" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 #, fuzzy msgid "Seraph Missile Array" msgstr "Increases Missile accuracy" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Mini-Rocket Artillery" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Laser Satellite Command Post" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 #, fuzzy msgid "VTOL Cluster Bomb Bay" msgstr "VTOL Cluster Bombs Bay" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 #, fuzzy msgid "Collective Corner Wall" msgstr "Collective CWall" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 #, fuzzy msgid "Nexus Wall" msgstr "NEXUS Wall" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 #, fuzzy msgid "Nexus Corner Wall" msgstr "Hardcrete Corner Wall" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 #, fuzzy msgid "Plascrete Mk3" msgstr "Plascrete Mk2" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Plasteel" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Plasteel Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Plasteel Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Game" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 #, fuzzy msgid "Hyper Velocity Cannon Emplacement" msgstr "Hyper Velocity Cannon" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 #, fuzzy msgid "Seraph Missile Battery" msgstr "Angel Missile Battery" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 #, fuzzy msgid "Flamer Tower" msgstr "Flamer Guard Tower" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 #, fuzzy msgid "Hyper Velocity Cannon Hardpoint" msgstr "Hyper Velocity Cannon" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 #, fuzzy msgid "Automated Manufacturing" msgstr "Automated VTOL Rearming" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 #, fuzzy msgid "Automated Manufacturing Mk2" msgstr "Automated VTOL Rearming Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 #, fuzzy msgid "Automated Manufacturing Mk3" msgstr "Automated VTOL Rearming Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 #, fuzzy msgid "Robotic Manufacturing" msgstr "Manufacture" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 #, fuzzy msgid "Robotic Manufacturing Mk2" msgstr "Robotic VTOL Rearming Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 #, fuzzy msgid "Robotic Manufacturing Mk3" msgstr "Robotic VTOL Rearming Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 #, fuzzy msgid "Advanced Manufacturing" msgstr "Advanced Warfare" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 #, fuzzy msgid "Advanced Manufacturing Mk2" msgstr "Advanced Factory Production Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 #, fuzzy msgid "Self-Replicating Manufacturing" msgstr "Self-Replicating Factory Production" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 #, fuzzy msgid "Advanced Manufacturing Mk3" msgstr "Advanced Factory Production Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 #, fuzzy msgid "Automated Repair Facility Mk2" msgstr "Automated Repair Facility" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 #, fuzzy msgid "Automated Repair Facility Mk3" msgstr "Automated Repair Facility" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "Robotic Repair Facility Upgrade" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 #, fuzzy msgid "Robotic Repair Facility Mk2" msgstr "Robotic Repair Facility Upgrade Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "Advanced Repair Facility Upgrade" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 #, fuzzy msgid "Robotic Repair Facility Mk3" msgstr "Robotic Repair Facility Upgrade Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 #, fuzzy msgid "Advanced Repair Facility Mk2" msgstr "Advanced Repair Facility Upgrade Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 #, fuzzy msgid "Advanced Repair Facility Mk3" msgstr "Advanced Repair Facility Upgrade Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Auto-Repair" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Heavy Repair Turret" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 #, fuzzy msgid "Nexus Intruder Program" msgstr "NEXUS Intruder Program" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 #, fuzzy msgid "Nexus Resistance Circuits" msgstr "Resistance Circuits" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 #, fuzzy msgid "Nexus Resistance Circuits Mk2" msgstr "NEXUS Resistance Circuits Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 #, fuzzy msgid "Nexus Resistance Circuits Mk3" msgstr "NEXUS Resistance Circuits Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 #, fuzzy msgid "Cluster Bomb Bay" msgstr "Cluster Bombs Bay" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 #, fuzzy msgid "HE Bomb Shells" msgstr "HE Mortar Shells" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 #, fuzzy msgid "Improved Bomb Warhead" msgstr "Improved shaped charge warhead" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 #, fuzzy msgid "Advanced Bomb Warhead" msgstr "Advanced Missile Warhead" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 #, fuzzy msgid "Howitzer Fast Loader" msgstr "Mortar Fast Loader" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Rapid Fire Chaingun" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 #, fuzzy msgid "Rail Target Prediction Computer" msgstr "Target Prediction Computer" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "HE Mini-Rockets" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "HE Mini-Rockets Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "HE Mini-Rockets Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 #, fuzzy msgid "Assault Gun Tower" msgstr "Assault Gun Guard Tower" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Repair Cobra Tracks" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "HPV Cannon Python Tracks" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 #, fuzzy msgid "Bunker Buster Cobra Hover" msgstr "Cobra Bunker Buster Hover" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 #, fuzzy msgid "Sensor Upgrade Mk2" msgstr "Sensor Upgrade" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "Sensor Upgrade" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 #, fuzzy msgid "Vapor Turbine Generator Mk2" msgstr "Vapour Turbine Generator" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 #, fuzzy msgid "Gas Turbine Generator Mk2" msgstr "Gas Turbine Generator" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 #, fuzzy msgid "Gas Turbine Generator Mk3" msgstr "Gas Turbine Generator" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 #, fuzzy msgid "Vapor Turbine Generator Mk3" msgstr "Vapour Turbine Generator" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 #, fuzzy msgid "Thermite Flamer Cyborg" msgstr "Thermite Flamer" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Thermite Flamer" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 #, fuzzy msgid "Grenadier Cyborg" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Combat Engineer" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Cyborg Mechanic" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 #, fuzzy msgid "Incendiary Howitzer" msgstr "Incendiary Howitzer" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 #, fuzzy msgid "Incendiary Howitzer Emplacement" msgstr "Incendiary Howitzer Emplacement" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Plasmite Flamer" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 #, fuzzy msgid "Plasmite Flamer Bunker" msgstr "Plasmite Flamer" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 #, fuzzy msgid "Incendiary Mortar" msgstr "Incendiary Mortar" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 #, fuzzy msgid "Incendiary Mortar Pit" msgstr "Incendiary Mortar" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Cyborg Superdense Thermal Armour" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Cyborg Superdense Thermal Armour Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Cyborg Superdense Thermal Armour Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Vehicle Superdense Thermal Armour" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Vehicle Superdense Thermal Armour Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Vehicle Superdense Thermal Armour Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super Heavy-Gunner" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Auto-Cannon Cyborg" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super HPV Cyborg" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Tank-Killer Cyborg" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Heavy Laser" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 #, fuzzy msgid "VTOL Heavy Laser" msgstr "Heavy Laser" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Heavy Laser Emplacement" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Twin Assault Cannon" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Twin Assault Cannon Bunker" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Satellite Uplink Centre" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Wide Spectrum Sensor" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Wide Spectrum Sensor Tower" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Plasma Cannon" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Plasma Cannon Emplacement" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Pulse Laser Cyborg" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Rail-Gunner" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super Scourge Cyborg" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 #, fuzzy msgid "Nexus Link Tower" msgstr "Nexus Link Turret" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "EMP Cannon" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "EMP Cannon Tower" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Mass Driver Fortress" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 #, fuzzy msgid "Mass Driver" msgstr "Mass Driver Fortress" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Cannon Fortress" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Heavy Rocket Bastion" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Missile Fortress" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "Super Heavy Body - Wyvern" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Wyvern" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 #, fuzzy msgid "Multi Turret Body - Dragon" msgstr "Super Heavy Body - Dragon" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragon" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Superhot Plasmite gel" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Superhot Plasmite gel Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Superhot Plasmite gel Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "EMP Mortar" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 #, fuzzy msgid "EMP Mortar Pit" msgstr " Mortar Pit" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Stormbringer AA Laser" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 #, fuzzy msgid "Stormbringer Emplacement" msgstr "Bombard Emplacement" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Vindicator Hardpoint" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Whirlwind Hardpoint" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Cyclone Hardpoint" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Avenger Hardpoint" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Twin Assault Gun" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 #, fuzzy msgid "Twin Assault Gun Hardpoint" msgstr "Assault Gun Hardpoint" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 #, fuzzy msgid "VTOL Plasmite Bomb Bay" msgstr "VTOL Cluster Bombs Bay" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Plasmite Bomb" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 #, fuzzy msgid "VTOL EMP Missile Launcher" msgstr "EMP Missile Launcher" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "EMP Missile Launcher" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Command Turret" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "Command turret MkIII" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Command Turret" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "VTOL Hyper Velocity Cannon" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "HPV Cannon Hardpoint" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 #, fuzzy msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "VTOL Hyper Velocity Cannon" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Mini-Rocket Artillery" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "HPV Cannon Python Tracks" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Medium Body - Retribution" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11702,31 +12723,40 @@ msgstr "" msgid "Latin" msgstr "Latin" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Save Game" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11877,15 +12907,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Player" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "New Vehicle" @@ -11924,18 +12954,18 @@ msgstr "Engine Output" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Weight" @@ -11949,190 +12979,190 @@ msgstr "Total Power Required" msgid "Total Body Points" msgstr "Total Body Points" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Power Usage" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transporter" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Sensor Range" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Sensor Power" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM Power" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Build Points" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Range" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Damage" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Rate-of-Fire" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Air Speed" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Road Speed" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Off-Road Speed" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Water Speed" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Weapons" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Systems" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Player" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Player" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Cannot Build. Oil Resource Burning." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Damage %d%% - Experience %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Damage %d%% - Experience %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Truck ordered to build Oil Derrick" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Truck ordered to build Oil Derrick" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Truck ordered to build Oil Derrick" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Unit Lost!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Structure Restored" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Group %u selected - %u Unit" msgstr[1] "Group %u selected - %u Units" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u unit assigned to Group %u" msgstr[1] "%u units assigned to Group %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Centred on Group %u - %u Unit" msgstr[1] "Centred on Group %u - %u Units" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Aligning with Group %u - %u Unit" msgstr[1] "Aligning with Group %u - %u Units" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Rookie" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Green" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Trained" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Regular" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professional" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Special" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Hero" @@ -12181,11 +13211,11 @@ msgstr "TUTORIALS" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Return" @@ -12269,19 +13299,19 @@ msgid "Video Playback" msgstr "Video Playback" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Fullscreen" @@ -12290,43 +13320,42 @@ msgid "Screen Shake" msgstr "Screen Shake" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "On" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Off" @@ -12336,153 +13365,152 @@ msgid "Fog" msgstr "Fog" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Mist" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Fog Of War" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Subtitles" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Shadows" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "GAME OPTIONS" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Voice Volume" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "FX Volume" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Music Volume" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "GAME OPTIONS" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Graphics Mode*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Windowed" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "Resolution*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Texture size" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* Takes effect on game restart" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "GAME OPTIONS" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "Reverse Mouse" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "Trap Cursor" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Game Options" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "GAME OPTIONS" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Difficulty" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Easy" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Normal" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Hard" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Scroll Speed" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Language" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Unit Colour" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "GAME OPTIONS" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12516,108 +13544,108 @@ msgstr "Player %u is cheating (debug menu) him/herself a new feature: %s." msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Player %u is cheating (debug menu) him/herself a new droid: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Commanders (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Intelligence Display (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Manufacture (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Design (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Research (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Build (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Power" -#: src/hci.c:4075 +#: src/hci.c:4077 #, fuzzy msgid "Tile" msgstr "file" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Unit" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Struct" -#: src/hci.c:4095 +#: src/hci.c:4097 #, fuzzy msgid "Place Structures on map" msgstr "Set Structure Limits" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Feat" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "The host has left the game!" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Quit" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Exit Game" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Progress Bar" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Factory Delivery Point" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Loop Production" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Tab Scroll left" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Tab Scroll right" @@ -12661,6 +13689,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12676,7 +13712,7 @@ msgid "Power Accrued" msgstr "Power Accrued" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSED" @@ -12805,294 +13841,294 @@ msgstr "Assign VTOL Factory Production" msgid "Circle" msgstr "file" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Sorry, that cheat is disabled in multiplayer games." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Lets us see what you see!" -#: src/keybind.c:226 +#: src/keybind.c:227 #, fuzzy msgid "Fine, weapon & sensor display is off!" msgstr "Fine, sensor display is off!" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "Player %u is cheating (debug menu) him/herself a new droid: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Hard as nails!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Takings thing easy!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 big ones!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Power overwhelming" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Back to normality!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Getting tricky!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Twice as nice!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS display is enabled." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS display is disabled." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Infinite power disabled" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Infinite power enabled" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "All items made available" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Fog on" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Fog off" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, fuzzy msgid "Ending Mission." msgstr "Incoming Transmission..." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "View Aligned to North" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, fuzzy, c-format msgid "Trap cursor %s" msgstr "Trap Cursor" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "Researched EVERYTHING for you!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Research" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demo mode off - Returning to normal game mode" -#: src/keybind.c:1546 +#: src/keybind.c:1542 #, fuzzy msgid "Debug menu is Open" msgstr "Build menu will reopen" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Unable to locate any resource extractors!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, the weather outside is frightful... SNOW" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... RAIN" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Forecast : Clear skies for all areas... NO WEATHER" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 #, fuzzy msgid "All enemies destroyed by cheating!" msgstr "Enemy destroyed by cheating!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Centred on player HQ, direction NORTH" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Unable to locate HQ!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Sorry, that cheat is disabled in multiplayer games." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Game Speed Reset" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Game Speed Increased to %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Game Speed Reduced to %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Build menu will reopen" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Build menu will not reopen" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar showing friend-foe colours" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar showing player colours" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar showing only objects" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar blending terrain and height" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar showing terrain" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar showing terrain" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar showing height" @@ -13517,8 +14553,8 @@ msgstr "Continue Game" msgid "GAME SAVED :" msgstr "GAME SAVED!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13830,21 +14866,21 @@ msgstr "The host has kicked %s from the game!" msgid "Host is Starting Game" msgstr "Host is Starting Game" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Players" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13853,27 +14889,27 @@ msgstr "" msgid "Players Still Joining" msgstr "Players Still Joining" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s has Left the Game" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s is Joining the Game" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "System locale" @@ -13963,48 +14999,48 @@ msgstr "Give Power To Player" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Alliances" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Green" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Orange" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Grey" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Black" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Red" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Blue" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Pink" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cyan" @@ -14148,12 +15184,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "NEXUS DEFEATED" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -14182,62 +15218,62 @@ msgstr "Unable to locate any Sensor Units!" msgid "Unable to locate any Commanders!" msgstr "Unable to locate any Commanders!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "Command Control Limit Reached - Production Halted" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Unit assigned" msgstr[1] "%s - %u Units assigned" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, fuzzy, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Damage %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Connected %u of %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Electronically Damaged" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Electronic Reward - Visibility Report" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Factory Reward - Propulsion" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Factory Reward - Body" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Factory Reward - Weapon" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Factory Reward - Nothing" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Repair Facility Award - Repair" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Repair Facility Award - Nothing" @@ -14246,7 +15282,7 @@ msgstr "Repair Facility Award - Nothing" msgid "Launch Transport" msgstr "Launch Transport" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Reinforcements landing" @@ -14278,6 +15314,18 @@ msgstr " - Built %s" msgid "Version %s%s%s%s" msgstr "Version %s%s%s%s" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "Phosphor Bomb Bay" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "VTOL Heap Bomb Bay" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "mod" + #, fuzzy #~ msgid "Increases Bombing damage" #~ msgstr "Increases Cannon damage" @@ -14344,9 +15392,6 @@ msgstr "Version %s%s%s%s" #~ msgid "Cursor Mode" #~ msgstr "Power Module" -#~ msgid "Game" -#~ msgstr "Game" - #~ msgid "Mayhem" #~ msgstr "Mayhem" @@ -14665,33 +15710,15 @@ msgstr "Version %s%s%s%s" #~ msgid "Commander" #~ msgstr "Commander" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Congratulations on defeating the New Paradigm." - #~ msgid "This sector is now secure." #~ msgstr "This sector is now secure." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "When we failed to respond it became threatening." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Nexus removed itself leaving no trace" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "The Nexus Intruder Program has links with the Reed corporation." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Nexus has technology and weapons and is not friendly." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Warriors of the Collective..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Destroy and kill all who resist the Machine." - -#~ msgid "Attack!" -#~ msgstr "Attack!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Analysis of the reactor site indicates The Collective" @@ -14776,9 +15803,6 @@ msgstr "Version %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Incoming Airstrike" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Team Alpha Eradicated" - #~ msgid "Team Beta Eradicated" #~ msgstr "Team Beta Eradicated" diff --git a/po/es.po b/po/es.po index 0a66be755..81b95ad29 100644 --- a/po/es.po +++ b/po/es.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-16 01:14+0100\n" -"PO-Revision-Date: 2010-03-15 23:00+0100\n" +"POT-Creation-Date: 2010-04-29 20:14+0200\n" +"PO-Revision-Date: 2010-04-29 17:24+0100\n" "Last-Translator: Saber Nyoki \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" @@ -1584,7 +1584,7 @@ msgstr "Producción de Cyborgs Mejorada" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Producción Automatizada de Cyborgs" @@ -1616,8 +1616,8 @@ msgstr "Todas las fábricas de Cyborgs actualizadas automáticamente" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Fábrica Cyborg" @@ -1778,7 +1778,7 @@ msgstr "Incrementa la Resistencia al Daño" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Materiales Estructurales Reforzados" @@ -1951,7 +1951,7 @@ msgstr "Mejora de Motor de Vehículo" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Motor de Inyección" @@ -2108,7 +2108,7 @@ msgstr "Velocidad: Lento" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Propulsión Rodada" @@ -2968,7 +2968,7 @@ msgstr "Nuevas técnicas de reparación robótica" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Producción Robótica de Cyborgs" @@ -2990,7 +2990,7 @@ msgstr "Incrementa tasa de producción de fábrica" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Enlace Sináptico de Analísis de Datos Dedicado" @@ -2999,7 +2999,7 @@ msgstr "Enlace Sináptico de Analísis de Datos Dedicado" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Materiales Estructurales Endurecidos" @@ -3008,7 +3008,7 @@ msgstr "Materiales Estructurales Endurecidos" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Producción Robótica de ADV" @@ -3044,7 +3044,7 @@ msgstr "Tiempo de Rearme de ADV Reducido" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Rearme Automatizado de ADV" @@ -3175,7 +3175,7 @@ msgstr "Alto coste energético y producción más lenta que Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Motor Turbo" @@ -3853,14 +3853,14 @@ msgstr "Turbina de Gas potencia la generación de energía" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Investigación Sinapsis Neural Cerebral" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Materiales Estructurales Avanzados" @@ -3872,14 +3872,14 @@ msgstr "Materiales Estructurales de Alta Densidad" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Producción Avanzada de ADV" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Rearme Robótico de ADV" @@ -4017,7 +4017,7 @@ msgstr "Muy caro de producir" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Motor de Turbina de Gas" @@ -4569,14 +4569,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Marcador Láser que marca y guía munición hacia el objetivo" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "OBJETIVO: Localizar y recuperar tecnología neuronal sináptica" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Establece una base, después busca una estructura anterior al Colapso" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Esta estructura contiene tecnología vital para el éxito del Proyecto" @@ -4933,14 +4936,18 @@ msgid "We'll keep you informed of further developments" msgstr "Te mantendremos informado de posteriores desarrollos" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Comandante, vas a ayudar al Equipo Beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "MISIÓN BASE BETA: Sector Este" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Al llegar, asumirás el mando de la base." @@ -4949,16 +4956,19 @@ msgid "You must defend it and hold it." msgstr "Debes defenderla y mantenerla." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "MISIÓN BASE BETA: Defiende y Fortifica" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Asegúrate de fortificar el perímetro y establecer defensas anti-aéreas." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Nuevas tecnologías disponibles." @@ -5050,7 +5060,7 @@ msgstr "Entonces vuelve a la ZA." #: data/base/messages/strings/cam2strings.txt:55 msgid "Disturbing news regarding NASDA." -msgstr "Inquietantes noticias con respecto a NASDA." +msgstr "Inquietantes noticias con respecto a ADENA." #: data/base/messages/strings/cam2strings.txt:58 #: data/base/messages/strings/cam2strings.txt:63 @@ -5154,11 +5164,11 @@ msgstr "No permitas que el Colectivo ponga el reactor en funcionamiento." #: data/base/messages/strings/cam2strings.txt:106 msgid "BETA BASE MISSION: Capture NASDA Central" -msgstr "MISIÓN BASE BETA: Captura la Central de NASDA" +msgstr "MISIÓN BASE BETA: Captura la Central de ADENA" #: data/base/messages/strings/cam2strings.txt:107 msgid "Capture NASDA central before NEXUS and the Collective can use it." -msgstr "Captura la central de NASDA antes de que NEXUS y el Colectivo puedan usarla." +msgstr "Captura la central de ADENA antes de que NEXUS y el Colectivo puedan usarla." #: data/base/messages/strings/cam2strings.txt:111 #: data/base/messages/strings/cam2strings.txt:116 @@ -5172,7 +5182,7 @@ msgstr "NEXUS está buscando bancos de memoria todavía funcionales." #: data/base/messages/strings/cam2strings.txt:113 msgid "Part of its consciousness has moved to a remote NASDA control-site." -msgstr "Parte de su conciencia ha sido trasladada a un remoto lugar de control de NASDA." +msgstr "Parte de su conciencia ha sido trasladada a un remoto lugar de control de ADENA." #: data/base/messages/strings/cam2strings.txt:117 msgid "We are detecting transmissions from this site that are reaching high orbit." @@ -5180,7 +5190,7 @@ msgstr "Estamos detectando transmisiones de ese sitio que alcanzan altas órbita #: data/base/messages/strings/cam2strings.txt:118 msgid "NEXUS has now reconnected itself with the NASDA satellites." -msgstr "NEXUS se ha reconectado con los satélites de NASDA." +msgstr "NEXUS se ha reconectado con los satélites de ADENA." #: data/base/messages/strings/cam2strings.txt:122 msgid "Use the transport to carry a strike force to this site." @@ -5255,6 +5265,8 @@ msgid "Good luck, Commander." msgstr "Buena suerte, Comandante." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "MISIÓN DE TRANSPORTE: Sector Norte" @@ -5263,6 +5275,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Enhorabuena por tu satisfactoria evacuación de la Base Beta." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS ha logrado acceder a armas nucleares y está decidido a destruir el Proyecto." @@ -5271,10 +5284,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Lleva tus fuerzas al Sector Norte" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "En las montañas, asegura una ZA. Después, establece una base avanzada." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "El Equipo Gamma contactará contigo allí." @@ -5283,6 +5298,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "MISIÓN DE TRANSPORTE: Establece una Base Avanzada" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Comandante, el éxito del Proyecto te pertenece." @@ -5301,7 +5317,7 @@ msgstr "Hemos localizado el lugar del silo de misiles." #: data/base/messages/strings/cam3strings.txt:21 msgid "There were one or more missiles at this NASDA site." -msgstr "Hay uno o más misiles en ese lugar de NASDA." +msgstr "Hay uno o más misiles en ese lugar de ADENA." #: data/base/messages/strings/cam3strings.txt:24 msgid "We are transmitting coordinates of an LZ near the silos." @@ -5309,6 +5325,7 @@ msgstr "Estamos transmitiendo coordenadas de una ZA cerca de los silos." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Descarga Coordinada Completada." @@ -5748,7 +5765,7 @@ msgstr "Transporte" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Camión" @@ -5757,7 +5774,7 @@ msgstr "Camión" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Ametralladora Víbora Ruedas" @@ -5784,7 +5801,7 @@ msgstr "Víbora Cañón Ligero Oruga" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Cobra Ametralladora Pesada Semi-oruga" @@ -5815,7 +5832,7 @@ msgstr "Víbora Reparador Semi-oruga" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Ametralladora Víbora Ruedas" @@ -5832,7 +5849,7 @@ msgstr "Cobra Ametralladora Pesada Semi-oruga" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Víbora Ametralladora Pesada Oruga" @@ -5856,7 +5873,7 @@ msgstr "Víbora Cohetes Revienta Búnker Ruedas" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Víbora Cañón Medio Oruga" @@ -5868,7 +5885,7 @@ msgstr "Cobra Cañón Pesado Oruga" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Cobra Camión" @@ -5878,7 +5895,7 @@ msgstr "Lanzadera Cobra Semi-oruga" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Reparación Cobra Oruga" @@ -5895,7 +5912,7 @@ msgstr "Cobra Torreta de Comandante Semi-oruga" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Lanzadera Cobra Semi-oruga" @@ -5909,26 +5926,26 @@ msgid "Light Cannon Python Tracks" msgstr "Cañón HPV Pitón Oruga" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Cañón HPV Pitón Oruga" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Cañón HPV Pitón Oruga" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Comandante Pitón Oruga" @@ -5992,7 +6009,7 @@ msgstr "Civil" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Ametrallador" @@ -6001,9 +6018,9 @@ msgstr "Ametrallador" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Incendiario" @@ -6013,8 +6030,8 @@ msgstr "Incendiario" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lanzadera" @@ -6023,7 +6040,7 @@ msgstr "Lanzadera" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Pistolero Pesado" @@ -6117,8 +6134,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Torreta de Comandante" @@ -6222,14 +6239,14 @@ msgstr "Semi-oruga III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Propulsión Cyborg II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Propulsión Cyborg III" @@ -6251,7 +6268,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Propulsión Cyborg" @@ -6279,8 +6296,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Torre Sensor" @@ -6288,15 +6305,15 @@ msgstr "Torre Sensor" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Torre Sensor Endurecida" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Torreta Sensor" @@ -6320,7 +6337,7 @@ msgstr "CB Torreta Radar" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "ADV Torreta de Golpe" @@ -6356,7 +6373,7 @@ msgstr "Fábrica" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Módulo de Fábrica" @@ -6368,7 +6385,7 @@ msgstr "Generador de Energía" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Módulo de Energía" @@ -6380,7 +6397,7 @@ msgstr "Centro de Investigación" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Módulo de Investigación" @@ -6392,7 +6409,7 @@ msgstr "Demoler Estructura" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Centro de Reparación" @@ -6413,8 +6430,8 @@ msgstr "Muro de Hormigón Duro" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Fábrica ADV" @@ -6425,30 +6442,30 @@ msgstr "Emplazamiento Infierno" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Defensa Infierno" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Foso Pepperpot" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Emplazamiento Tormenta Infernal" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Nido AA Tornado" @@ -6459,27 +6476,27 @@ msgstr "Nido AA Ciclón" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Nido AA Huracán" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Nido AA Torbellino" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Batería de Cohetes de Onda" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Torre de Guardia Cañón de Asalto" @@ -6490,29 +6507,29 @@ msgstr "Torre de Guardia Rifle de Asalto" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Defensa Rifle de Asalto" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Defensa Cañón de Asalto" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "Torre CB" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Torre ADV CB" @@ -6522,168 +6539,168 @@ msgstr "Torre Radar ADV" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Defensa Ametralladora Pesada" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Defensa Cañón Ligero" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Defensa Cañón Medio" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Defensa Cañón Pesado" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Defensa Incendiaria" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Defensa Lanzadera" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Torre de Guardia Ametralladora" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Torre de Guardia Doble Ametralladora" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Torre de Guardia Ametralladora Pesada" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Torre de Guardia Incendiaria" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Torre de Guardia Lanzadera" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Torre de Guardia Mini-Pod" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Búnker Ametralladora" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Búnker Doble Ametralladora" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Búnker Ametralladora Pesada" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Búnker Cañon Ligero" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Búnker Incendiario" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Búnker Lanzadera" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Trampa Antitanque" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Dientes de Dragón" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Plataforma de Rearme ADV" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Emplazamiento Lanza-Obuses" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Emplazamiento Láser Ligero" @@ -6694,139 +6711,139 @@ msgstr "Defensa Láser Ligero" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Defensa Pistola de Raíles" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Torre Misiles Azote" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Torre Pistola de Agujas" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Emplazamiento Cañón de Gauss" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Cañón Ligero" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Cañón Medio" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Cañón Pesado" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Cañón de Hiper Velocidad" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Cañón de Asalto" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Infierno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Lanza-obuses" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Sacude Terreno" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Emplazamiento Sacude Terreno" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Lluvia Infernal" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Láser de Pulsos" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Ametralladora" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Doble Ametralladora" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Ametralladora Pesada" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Rifle de Asalto" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Misil Azote" @@ -6837,80 +6854,80 @@ msgstr "Misil Ãngel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "MTA Justiciero" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Misil Arcángel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "MTA Vengador" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "ADV Misil Azote" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mortero" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Emplazamiento de Mortero" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombardero" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Emplazamiento Bombardero" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Pepperpot" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Emplazamiento Pepperpot" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Pistola de Agujas" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Pistola de Raíles" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Cañón de Gauss" @@ -6920,74 +6937,74 @@ msgid "Mini-Rocket Artillery" msgstr "Artillería Mini-Cohetes" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Revienta Búnker" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Lanzadera de Mini-cohete" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Cohetes de Onda" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Mata Tanques" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "ADV Revienta Búnkeres" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "ADV Mini-Cohetes" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "ADV Lanzadera" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "ADV Mata Tanques" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Torreta Antiaérea Tornado" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Torreta Antiaérea Ciclón" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Torreta Antiaérea Torbellino" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Torreta Antiaérea Huracán" @@ -6996,62 +7013,62 @@ msgid "LasSat" msgstr "LasSat" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "ADV Cañón" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "ADV Cañón de Hipervelocidad" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "ADV Cañón de Asalto" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "ADV Láser de Pulsos" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "ADV Ametralladora" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "ADV Ametralladora Doble" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "ADV Ametralladora Pesada" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "ADV Rifle de Asalto" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "ADV Pistola de Agujas" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "ADV Pistola de Raíles" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Torreta Bombardera de Proximidad" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Torreta Superbombardera de Proximidad" @@ -7060,22 +7077,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "ADV Bahía de Bombas de Racimo" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "ADV Bahía de Bombas Múltiples" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "ADV Bahía de Bombas de Fósforo" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "ADV Bahía de Bombas Termita" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Muro Colectivo" @@ -7092,307 +7109,307 @@ msgid "NEXUS CWall" msgstr "CMuro NEXUS" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "INVESTIGACIÓN CAM1" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "INVESTIGACIÓN AVANZADA" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "VEHÃCULOS CAM1" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "ARMAS CAM1" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "SISTEMAS CAM1" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "DEFENSAS CAM1" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "ESTRUCTURAS CAM1" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "INVESTIGACIÓN CAM2" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "VEHÃCULOS CAM2" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CYBORGS CAM2" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "ARMAS CAM2" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "SISTEMAS CAM2" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "DEFENSAS CAM2" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "ESTRUCTURAS CAM2" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "INVESTIGACIÓN CAM3" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Enlace Sináptico" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Códigos de Objetivos de Misiles" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Segundo Nivel de Códigos de Objetivos de Misiles" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Tercer nivel de Códigos de Disparo de Misiles" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Armadura Térmica Cyborg" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Armadura Térmica Cyborg Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Armadura Térmica Cyborg Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Armadura Térmica Alta Intensidad Cyborg" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Armadura Térmica Alta Intensidad Cyborg Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Armadura Térmica Alta Intensidad Cyborg Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Aleación Compuesta Cyborg" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Aleación Compuesta Cyborg Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Aleación Compuesta Cyborg Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Aleación Compuesta Densa Cyborg" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Aleación Compuesta Densa Cyborg Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Aleación Compuesta Densa Cyborg Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Aleación Compuesta Superdensa Cyborg" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Aleación Compuesta Superdensa Cyborg Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Aleación Compuesta Superdensa Cyborg Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Revienta Búnkeres" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Cañonero Pesado" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Incendiario" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Ametrallador" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Lancero" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Cañonero de Asalto" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Cañonero de Agujas" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Súper Azote Cyborg" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Cañonero de Láser Ligero" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Revienta Búnkeres Saltador" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Pistolero Pesado Saltador" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Lanzador Saltador" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Pistolero de Asalto Saltador" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Pistolero de Agujas Saltador" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Azote Saltador" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Pistolero de Láser Ligero Saltador" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Paquete Saltador Cyborg" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Hormigón Duro" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Hormigón Duro" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Hormigón Duro Mejorado" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Hormigón Duro Mejorado Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Hormigón Duro Mejorado Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Super Hormigón" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Super Hormigón Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Super Hormigón Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Hormigón Plástico" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Hormigón Plástico Mk2" @@ -7407,15 +7424,15 @@ msgstr "Emplazamiento Cañón HPV" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Emplazamiento Mata Tanques" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Foso Bombardero" @@ -7424,55 +7441,55 @@ msgid "Angel Missile Battery" msgstr "Batería de Misiles Ãngel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Batería de Misiles Arcángel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Foso Mortero" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Batería Mini-Cohetes" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Emplazamiento de Láser de Pulsos" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Emplazamiento de Pistola de Raíles" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Emplazamiento de Cañón de Asalto" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Emplazamiento de Rifle de Asalto" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "MTA Vengador" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "MTA Justiciero" @@ -7490,15 +7507,15 @@ msgstr "Torre de Guardia Mini-Cohetes" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Defensa Misiles Azote" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Defensa Mata Tanques" @@ -7509,49 +7526,49 @@ msgstr "Defensa Cañón HPV" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Defensa Cañón de Gauss" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Puesto de Retransmisión de Comandancia" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Producción Automatizada de Cyborgs Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Producción Automatizada de Cyborgs Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Producción Robótica de Cyborgs Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Producción Robótica de Cyborgs Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Producción Avanzada de Cyborgs" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Producción Avanzada de Cyborgs Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Producción Avanzada de Cyborgs Mk3" @@ -7589,54 +7606,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Producción Avanzada en Fábrica Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Materiales Estructurales Reforzados Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Materiales Estructurales Reforzados Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Materiales Estructurales Endurecidos Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Materiales Estructurales Endurecidos Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Materiales Estructurales Avanzados Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Materiales Estructurales Avanzados Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Turbina de Gas Generadora" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Turbina de Vapor Generadora" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Instalación de Reparación" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Instalación de Reparación Automatizada" @@ -7673,172 +7690,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Instalación de Reparación Avanzada Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Enlace Sináptico de Analísis de Datos" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Enlace Sináptico de Analísis de Datos Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Enlace Sináptico de Analísis de Datos Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Enlace Sináptico de Analísis de Datos Dedicado Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Enlace Sináptico de Analísis de Datos Dedicado Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Investigación Cerebral de Sinapsis Neural Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Investigación Cerebral de Sinapsis Neural Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Rearme Automatizado de ADV Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Rearme Automatizado de ADV Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Rearme Robótico de ADV Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Rearme Robótico de ADV Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Rearme Robótico de ADV Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Producción Robótico de ADV Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Producción Robótico de ADV Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Producción Avanzada de ADV Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Producción Avanzada de ADV Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Auto-reparación Cyborg" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Reparación Automatizada Cyborg Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Reparación Automatizada Cyborg Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Auto-reparación de Defensas" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Reparación Automatizada de Defensas Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Reparación Automatizada de Defensas Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Auto-reparación de Estructuras" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Reparación Automatizada de Estructuras Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Reparación Automatizada de Estructuras Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Auto-reparación de Vehículos" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Reparación Automatizada de Vehículos Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Reparación Automatizada de Vehículos Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Mejora de Sensor" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Unidad de Construcción" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Ingeniería" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Ingeniería Mejorada" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Ingeniería Avanzada" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Torreta de Reparación Movil" @@ -7848,84 +7865,84 @@ msgstr "Torreta Pesada de Reparación Móvil" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Mejora de Reparación Móvil" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Mejora de Reparación Móvil Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "Torreta CB" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "Mejora de Sensor CB" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "Mejora 2 de Sensor CB" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "Mejora 3 de Sensor CB" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "Torreta ADV CB" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "Mejora de ADV CB" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "Mejora 2 de ADV CB 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "Mejora 3 de ADV CB" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "Mejora de Golpe ADV" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "Mejora de Golpe ADV Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "Mejora de Golpe ADV Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Torreta de Golpe ADV" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Gerador de Interferência Melhorado" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Torreta Trepadora Mk2" @@ -7946,292 +7963,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Circuitos de Resistencia NEXUS Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Bloqueo de Sensor" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Armadura Termal" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Armadura Termal Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Armadura Termal Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Armadura Termal de Alta Intensidad" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Armadura Termal de Alta Intensidad Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Armadura Termal de Alta Intensidad Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Carrocería Ligera - Víbora" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Carrocería Ligera - Leopardo" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Carrocería Ligera - Represalia" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Carrocería Ligera - Bicho" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Carrocería Media - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Carrocería Media - Pantera" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Carrocería Media - Merecido" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Carrocería Media - Escorpión" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Carrocería Pesada - Tigre" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Carrocería Pesada - Venganza" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Carrocería Pesada - Pitón" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Carrocería Pesada - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Motor de Inyección Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Motor de Inyección Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Motor Turbo Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Motor Turbo Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Motor de Turbina de Gas Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Motor de Turbina de Gas Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Aleación Compuesta" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Aleación Compuesta Mk3" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Aleación Compuesta Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Aleación Compuesta Densa" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Aleación Compuesta Densa Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Aleación Compuesta Densa Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Aleación Compuesta Superdensa" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Aleación Compuesta Superdensa Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Aleación Compuesta Superdensa Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Propulsión Aerodeslizada" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Propulsión Aerodeslizada II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Propulsión Semi-oruga" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Propulsión Semi-oruga II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Propulsión Oruga" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Propulsión Oruga II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "Propulsión ADV" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "Propulsión ADV II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Propulsión Rodada II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "AA Sensor de Imagen Termal" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "AA Adquisición de Objetivos" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "AA Computadora de Predicción de Objetivos" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "AA HE Fuego Antiaéreo" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "AA HE Fuego Antiaéreo Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "AA HE Fuego Antiaéreo Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "AA Fuego Antiaéreo Masivo" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "AA Fuego Antiaéreo Masivo Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "AA Fuego Antiaéreo Masivo Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "AA Cargador de Munición" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "AA Cargador de Munición Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "AA Cargador de Munición Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "AA Recarga Encadenada" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "AA Recarga Encadenada Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "AA Recarga Encadenada Mk3" @@ -8240,17 +8257,17 @@ msgid "Cluster Bombs Bay" msgstr "Bahía de Bombas de Racimo" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Bahía Bombas Masivas" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Bahía de Bombas de Fósforo" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Bahía de Bombas Termita" @@ -8267,252 +8284,252 @@ msgid "Target Acquisition Bombsight" msgstr "Bombas con Visión de Adquisición de Objetivos" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Cañón con Puntería Láser" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Designador Cañón Láser" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Munición HEAT Cañón" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Munición HEAT Cañón Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Munición HEAT Cañón Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Ráfagas Cañón APFSDS" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Ráfagas Cañón APFSDS Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Ráfagas Cañón APFSDS Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Ráfagas Cañón HVAPFSDS" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Ráfagas Cañón HVAPFSDS Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Ráfagas Cañón HVAPFSDS Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Autorecarga de Cañón" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Autorecarga de Cañón Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Autorecarga de Cañón Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Recarga Rápida de Cañón" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Recarga Rápida de Cañón Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Recarga Rápida de Cañón Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Foco Láser Mejorado" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Foco Láser Mejorado Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Foco Láser Mejorado Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Emisor Láser de Alta Energía" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Emisor Láser de Alta Energía Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Emisor Láser de Alta Energía Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Alimentador Termopolar" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Alimentador Termopolar Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Alimentador Termopolar Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Gel Incendiario de Alta Temperatura" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Gel Incendiario de Alta Temperatura Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Gel Incendiario de Alta Temperatura Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Gel Incendiario Supercaliente" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Gel Incendiario Supercaliente Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Gel Incendiario Supercaliente Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Incendiario autorecarga" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Incendiario autorecarga Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Incendiario autorecarga Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Incendiario Pesado - Infierno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Lanza-obuses Pesado - Sacude Terreno" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Lanza-obuses Rotatorio - Tormenta del Infierno" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Adquisición de Objetivos de Munición de Artillería" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Adquisición de Objetivos de Munición de Artillería Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Predicción de Objetivos de Munición de Artillería" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Obuses HE" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Obuses HE Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Obuses HE Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Obuses Masivos" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Obuses Masivos Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Obuses Masivos Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Autorecarga de Lanza-obuses" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Autorecarga de Lanza-obuses Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Autorecarga de Lanza-obuses Mk3" @@ -8521,57 +8538,57 @@ msgid "Fast Loader" msgstr "Recarga Rápida" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Láser - Láser Ligero" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Balas MG Endurecidas" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Balas APDSB MG" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Balas APDSB MG Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Balas APDSB MG Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Balas MG Punta de Tungsteno" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Balas MG Punta de Tungsteno Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Balas MG Punta de Tungsteno Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Balas MG Uranio Empobrecido" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Balas MG Uranio Empobrecido Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Mejora Cadencia Ametralladora" @@ -8580,142 +8597,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Mejora Fuego Rápido Ametralladora" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Mejora Carga Hiperrápida Ametralladora" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Predicción de Objetivos de Misiles" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Misiles Buscar y Destruir" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Ojivas Avanzadas de Misiles" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Ojivas Avanzadas de Misiles Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Ojivas Avanzadas de Misiles Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Sistema Avanzado de Asignación de Misiles" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Sistema Avanzado de Asignación de Misiles Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Sistema Avanzado de Asignación de Misiles Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Ojivas HEAP de misiles" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Ojivas HEAP de misiles Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Ojivas HEAP de misiles Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Sistema de Carga Mejorada de misiles" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Computador de Objetivos de Mortero" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Munición de Guiado Térmico de Mortero" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Adquisición de Objetivos de Munición de Mortero" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Munición HE Mortero" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Munición HE Mortero Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Munición HE Mortero Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Munición HEAP Mortero" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Munición HEAP Mortero Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Munición HEAP Mortero Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Recarga Automática Mortero" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Recarga Automática Mortero Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Recarga Automática Mortero Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Recarga Rápida de Mortero" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Mortero Pesado - Bombardero" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Mortero Rotante - Pepperpot" @@ -8724,367 +8741,367 @@ msgid "Target Prediction Computer" msgstr "Computador de Predicción de Objetivos" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Dardos de Raíl Endurecidos" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Dardos de Raíl Endurecidos Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Dardos de Raíl Endurecidos Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Cadencia de Pistola de Raíles" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Cadencia de Pistola de Raíles Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Cadencia de Pistola de Raíles Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Mini-Cohetes Estabilizados" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Mini-Cohetes Estabilizados Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "HE Mini-Cohetes" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "HE Mini-Cohetes Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "HE Mini-Cohetes Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Mini-Cohetes HEAP" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Mini-Cohetes HEAP Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Mini-Cohetes HEAP Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Fuego Rápido de Mini-Cohetes" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Fuego Rápido de Mini-Cohetes Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Fuego Rápido de Mini-Cohetes Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Fuego Más Rápido de Mini-Cohetes" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Fuego Más Rápido de Mini-Cohetes Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Fuego Más Rápido de Mini-Cohetes Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Guiado Mejorado de Cohetes" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Guiado Láser de Cohetes" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Visión Termal Cohetes" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "Ojiva HEAT Cohete" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "Ojiva HEAT Cohete Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "Ojiva HEAT Cohete Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "Ojiva HESH Cohete" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "Ojiva HESH Cohete Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "Ojiva HESH Cohete Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Autocargador de Misiles" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Autocargador de Misiles Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Autocargador de Misiles Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Lanza-cohetes AT" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Cohete Revienta Búnker" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Misil Mata Tanques" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Artefacto Ametralladora" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Centro de Mando de Nuevo Paradigma" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Centro de Mando de Colectivo" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Fábrica de Carroñeros" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Torre de Pistola Carroñero" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Muro Horizontal Carroñero" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Generador de Energía Carroñero" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Foso de Cohetes Carroñero" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Foso de Cohetes-AT Carroñero" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Búnker Carroñero" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Esquina Muro Carroñero" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Torre Incendiaria Carroñera" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Fin Torre Incendiaria Carroñera" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Torre Vigía" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Torre de Cañón" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefacto" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Recurso Petrolífero" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Puente" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Fábrica en ruinas" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Almacén" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Cabaña" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Barril de Petróleo" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Destrozar" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Tanque Destrozado" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Puente Destrozado" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Camioneta Destrozada" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Vehículo Destrozado" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Camión Cisterna Destrozado" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratorio Cyborg" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratorio de Guerra Avanzada" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Laboratorio de Ingeniería" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratorio de Robótica" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratorio de Óptica Láser" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratorio de Electrónica" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Laboratorio Químico" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Guerra Avanzada" @@ -9105,7 +9122,7 @@ msgid "MRL Emplacement" msgstr "Emplazamiento MRL" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Emplazamiento Pistola de Raíles" @@ -9114,49 +9131,49 @@ msgid "Angel Missile Emplacement" msgstr "Emplazamiento de Misil Ãngel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Emplazamiento de Misil Arcángel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Reparación Cobra Oruga" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Azote" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Revienta Búnkeres" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Pistolero de Láser Ligero" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Pistolero de Agujas" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Transporte Derribado" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Mata Tanques Pitón Oruga" @@ -9165,37 +9182,37 @@ msgid "HPV Cannon Python Tracks" msgstr "Cañón HPV Pitón Oruga" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "AA Ciclón Pitón Semi-oruga" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Rifle de Asalto Pitón Oruga" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Láser Ligero" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "ADV Láser Ligero" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "MG Giratorio Búnker" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Silo de Misiles" @@ -9477,336 +9494,1173 @@ msgstr "Por favor espera mientras la fábrica produce las nuevas unidades" msgid "Congratulations commander - you are ready for your first mission" msgstr "Enhorabuena comandante - ahora estás listo para tu primera misión" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "Transmisión Entrante" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "Transmisión de la Base Beta" + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "Mayday! Maybay!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "¡Ayuda, por favor!" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "CAMPAÑA UNO" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "SECTOR OESTE" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Amanecer, 4 de Julio, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "CG del Proyecto" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Una Nueva Era" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Mañana, 4 de Julio, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "En vuelo hacia el Sector Oeste" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "El Equipo Alfa se aproxima a su destino." + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Destinos de Transportes a continuación:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alfa - Sector Oeste" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alfa, tiene permiso para despegar." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Buena suerte y buena caza." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "Aproximándose a la Zona de Aterrizaje. El informe del Equipo Alfa comienza." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Comandante, tu diriges el equipo Alfa, uno de los tres equipos expedicionarios enviados por el Proyecto para recuperar artefactos anteriores al Colapso." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Tu destino está en la zona oeste." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Comandante, hemos recuperado una torreta de comando de Nuevo Paradigma." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "Esta turret permite a los comandantes coordinar ataques entre las unidades asignadas y actuar como un punto de despliegue para las fábricas. Investigar y usar esta tecnología tiene la máxima prioridad." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Comandante, estamos recibiendo esta transmisión." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "Tus ataques hacia nosotros no quedarán sin castigo." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "Estás en contra del Nuevo Paradigma" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "Todos los grupos de ataque, comenzad el ataque al enemigo." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "Ellos están en contra del Nuevo Paradigma" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "Deben ser erradicados." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Asegura la ZA y establece una base avanzada." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "Y entonces destruir la base del Nuevo Paradigma" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Abre tus sistemas para mi." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Déjame fusionarme con tus máquinas y cyborgs." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "Nosotros crearemos el nexo perfecto de hombre y máquina." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "Juntos podemos crear un nuevo mundo." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "Puedo darte poder más allá de lo que puedas soñar." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "Ãbreme tus sistemas y serás fuerte." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "Puedo elevaros como doises frente la tierra quemada." + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Cuando fallamos la respuesta se volvió amenazador." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "Tu interferencia en mis planes para el Nuevo Paradigma quedarán sin castigo." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "Sois cosas débiles y de carne. Yo soy fuerte y tengo muchas piezas." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Me habréis derrotado aquí, pero me levantaré de nuevo." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "Una vez haya limpiado el mundo con fuego, ¡¡Te destruiré a tí y tu penoso Proyecto!!" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "Nexus se eliminó a sí mismo del sistema, destruyendo sus bancos de datos, y eliminando todo rastro de sus conexiones externas." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "No estamos seguros de qué o quién es Nexus, o quién o qué lo está dirigiendo. Las investigaciones iniciales enlazan el programa de Intrusión Nexus con la Corporación Reed, desarrolladora del enlace sináptico." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "Hemos cerciorado que Nexus proveyó al Nuevo Paradigma con la mayor parte de su tecnología. Sea lo que sea Nexus, es más que un parásito informático." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Tiene tecnología y armas. Nos conoce, y no es amistoso." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "El Enlace Sináptico ha sido desarrollado por la Corporación Reed en conjunto con el Ejército Estadounidense." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "El enlace sináptico permite una transmisión casi instantánea del pensamiento desde los operadores humanos a los sistemas de control y guiado de los vehículos. El enlace sináptico es encajado en la base del cráneo, rodeando la espina dorsal." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "El enlace tiene un puerto de transferencia de datos de alta velocidad que se conecta a cualquier sistema informático." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "Lo que es más importante, el desarrollo del enlace sináptico, hizo posible la creación de cyborgs. Los intentos tempranos en tecnoarmaduras para soldados individuales fracasó, ya que demostraron ser lentos y sin reflejos." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "El enlace sináptico permitió a los soldados ser colocados en tecno-armaduras que controlaron casi tan fácilmente como sus propios cuerpos. Los tecno-trajes permitieron a la infantería actuar de forma efectiva en los campos de batalla del siglo XXI" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "Degraciadamente, esta tecnología ha caído en manos del Nuevo Paradigma. Y es un imperativo que investigues y desarrolles las tecnologías de enlace sináptico." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Atención!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Estás entrando en un área restringida." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Vuelve a tu zona designada o sé destruído." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Repito, vuelve a tu zona designada o sé destruído." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Fin del mensaje." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Serás destruído." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "NEXUS, la tecnología sináptica que has pedido, ha sido recuperada y enviada para su recogida." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Has hecho bien." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "Una vez hayamos analizado y autenticado la tecnología, vuestra recompensa os será dada." + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "La información descubierta en la anterior base enemiga, indica que el Nuevo Paradigma ha recuperado dos artefactos de enlace sináptico." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "Este Programa de Intrusión Nexus, es un parásito informático auto-mutante. Lo hace difícil de erradicar de los sistemas una vez ha sido indentificado." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "No hemos sido capaces de descubrir su objetivo final o función. En su forma inicial, busca y aísla secciones de la memoria del resto del sistema invadido. Empieza a mutarse a sí mismo y sus estructuras de datos, reprogramando el sistema desde dentro." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "El posterior análisis fué prevenido mediante el apagado manual del sistema por nuestros técnicos, para prevenir la contaminación adiciónal del Programa de Intrusión Nexus." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "Sin embargo, la dispersión del Programa de Intrusión Nexus no fué comprobada por el Nuevo Paradigma. Necesitamos capturar los sistemas del núcleo del Nuevo Paradigma para contínuar investigando Nexus y determinar sus orígenes." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "Comandante, estás para limitar las actividades del Nuevo Paradigma en este sector y localizar su base principal." + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "CAMPAÑA DOS" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "SECTOR ESTE" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Mañana, 1 de Septiembre, 2100" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "En vuelo hacia el Sector Este" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "Equipo Alfa aproximándose a Base Beta" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Debes defenderla y mantenerla a toda costa." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "EL COLECTIVO" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Comandante, un nuevo lanzamiento ha sido detectado." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "Aparentemente, está dirigido a tu posición." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Estás para iniciar la inmediata evacuación de la Base Beta al refugio." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "La ADENA es la Agencia de Defensa Estratégica de Norte América" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "ADENA fué formada en 2076, para defender Norteamérica de los ataques nucleares convencionales. La construcción de un sistema de defensa de satélites comenzó en 2081 y fué completado en 2082." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "En 2085, los satélites ADENA dispararons sus misiles a la Tierra." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "También había bases terrestres. Muchas de ellas fueron destruídas en los contraataques nucleares, pero debe de habar algunas ahí fuera." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "Los satélites ADENA también contenían láseres de pulsos diseñados para derribar los misiles que se aproximasen a Norteamérica." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "Durante los contraataques, estos Satélites Láser fallaron. Si hubiesen estado operativos, éstos podrían haber inflingido un mayor daño a las unidades terrestres." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "Todos los misiles nucleares disparados a Norteamérica encontraron sus objetivos." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "Sabemos que Nexus está buscando la Central ADENA en el Sector Este. Esta era una de los centros de control terrestres de los satélites." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "Si el centro se encuentra intacto, NEXUS podría hacerse con el control de los satélites." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "Nexus afirmó que ya había destruído el mundo." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "Guerreros del Colectivo, Busco la posición de la Central de la ADENA." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "Está en alguna parte de tu territorio." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "Encontradla para mí, y os proveeré con más armas para ayudaros en vuestra guerra contra el Proyecto." + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "Informe de la ADENA a continuación..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "Tenemos que asegurarnos de que no pueda hacerlo de nuevo." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "Los análisis indican que estos sistemas eran parte del sistema de control de los satélites de la ADENA." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "Ahora esta claro que Nexus es el responsable del Colapso." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "Durante las primeras etapas del Colapso, los técnicos de ADENA apagaron los sistemas infectados para aislar la expansión de Nexus. Parece que esto ha prevenido a los disparos de los Satélites Láser durante los contraataques." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "Los consiguientes pulsos nucleares-magnéticos, limpiaron gran cantidad de los bancos de datos de ADENA, destruyendo su procesador principal, y enviando ondas de choque a través de Nexus." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "Nexus fué freído y secciones completas de su conciencia fueron borradas en los contraataques." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Estamos detectando transmisiones de ese sitio que alcanzan altas órbitas." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS se ha reconectado con los satélites de ADENA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "Esto plantea una amenaza mayor al Proyecto y a nuestra supervivencia." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "El análisis de la Central ADENA no deja de que el Colectivo ha introducido al Intruso Nexus." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "El reactor nuclear iba a ser usado para proveer energía a una vasta red de sistemas informáticos anteriores al Colapso." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Comandante, acabamos de detectar el lanzamiento de un misil en estas coordenadas." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "El Equipo Gamma está enviando un equipo para investigar la zona de lanzamiento y prevenir lanzamientos posteriores." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "Solo podemos asumir que Nexus se ha hecho con el control de esta posición. No podemos determinar si el misil está armado nuclearmente o hacia dónde está apuntado. Aconsejamos iniciar las preparaciones para la evacuación de tu base." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "Guerreros del Colectivo, más intrusos están entrando en nuestro territorio." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "Ellos no son parte de la máquina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Guerreros del Colectivo, destruid y matad a todo aquel que se resista a la Máquina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "Atacad! Eliminad su presencia de este área!" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "Guerreros del Colectivo, estamos listos para destruir a los intrusos que contaminan nuestras tierras." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "Esos del Proyecto no son parte de la máquina. Han negado su consentimiento. Nosotros, que nos hemos abrazado al poder de la máquina tenemos el destino de barrer a tales criaturas débiles." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "Caerán ante el poder del Colectivo." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "Destruid y matad a todo aquel que se resista a la Máquina." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "¡Atacad!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "Guerreros del Colectivo, Nexus nos ha dado el poder de la máquina, para que podamos destruir a todo el que se nos oponga." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "Nexus nos pide ahora aplastar al Proyecto." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "¡¡Limpia y destruye!!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "Guerreros del Colectivo. Lo habéis hecho bien." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "Tu justo merecido está de camino." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "El Proyecto está huyendo de su base y robando vuestra tecnología." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "¡Debes detenerlos!" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "Decodificando Transmisión..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "CAMPAÑA TRES" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "SECTOR NORTE" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Enhorabuena por la evacuación satisfactoria de la Base Beta." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "Anochecer, 3 de Diciembre, 2100" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "En vuelo hacia el Sector Norte" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "El Encuentro Final" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "Comienzo de la información" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "El personal de la Base Gamma ha confirmado que los misiles nucleares apuntados a las Bases Alfa y Beta han sido lanzados desde un silo en su sector." + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "El Equipo Gamma está reconociendo la posición del silo y vigilando la actividad de NEXUS." + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "¡¡Se acabó el tiempo, comandante!!" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Comandante, estamos detectando fuerzas de NEXUS desde estas coordenadas..." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "Bien hecho, Comandante. Has prevenido el lanzamiento de mi último misil." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "Una pena. Tu CG del Proyecto habría sido un objetivo maravilloso." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "Pero es bueno que os unáis a mí aquí." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "Enterrado en las profundidades de este silo, hay un misil nuclear listo para salir pronto." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "Ya que no puedo lanzarlo, tendrá que explotar donde está ahora." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "Tenga en cuenta que todas las entradas al complejo subterráneo han sido selladas. Hasta la vista, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Estoy contento de que lo hayas conseguido, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "Los ADVs de asalto nos tienen inmovilizados. Nos las hemos arreglado para mantener a raya a los cyborgs y los tanques, pero no hemos sido capaces de hacer ningún progreso en el valle." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "Puedes intentar alcanzarnos con unidades anti-aéreas?" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "Somos el Equipo Alfa. Repito, somos el Equipo Alfa. Necesitamos asistencia inmediata." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "Estamos bajo fuego intenso de cyborgs, tanques láser, y ADVs de asalto." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "Hemos intentado alcanzar vuestra posición, pero hemos sido emboscados." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "Estamos atrincherados en un valle en estas coordenadas." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "Ayúdenos, por favor." + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "Comandante, fuerzas del Equipo Alfa han escapado al ataque nuclear a la Base Alfa." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "Estamos experimentando algunas interferencias por parte de NEXUS." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "Debes destruir su centro de mando antes de que perdamos el control sobre los sistemas clave." + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Comandante, bienvenido a NEXUS!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "La Corporación Reed, fué fundada por el Dr. Allan Reed. En 2080, el Dr Reed firmó un contrato con el ejército Estadounidense para desarrollar la tecnología de enlace sináptico." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "Después de patentar el enlace sináptico cinco años después, el Dr Reed continuó sus investigaciones sobre cibernética." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "Esta vez, su objectivo era transmitir la conciencia humana a flujos de datos que pudiesen mezclarse con las tecnologías informáticas. Mientras estaban en el Ciberespacio, los cuerpos de los operadores eran mantenidos en tanques de inmersión." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "Cubierto de nuevo por el ejército, el Dr Reed comenzó a trabajar en el Programa de Intrusión NEXUS. Después de tres años con poco progreso, el ejército abandonó el proyecto Nexus y cortó los recursos monetarios al Dr Reed." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "Los informes del momento afirman que el Dr Reed estaba furioso y prometió vengarse de todos los que se interpusieron en su camino." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "Parece ser que el Dr Reed puede haber tenido éxito en sus objetivos, y completó el Programa de Intrusión Nexus." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "La similitud entre NEXUS y el Dr Reed es chocante." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "Interesante lección de historia. Ahora permíteme ponerte al día." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "El Programa de Intrusión NEXUS fué creado para controlar a necios como tu." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "Es muy simple para mí infiltrarme en tus sistemas y tomarlos. Es tan simple, de hecho, que no seríais ni siquiera capaces de saber que estoy ahí. Eso, hasta que active las partes de mí grabadas en vuestros sistemas centrales." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "Comencemos activando NEXUS en vuestros sistemas centrales y a ver que sucede!" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Comandante, estamos sufriendo interferencias en nuestro equipamiento." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "El Servicio normal será restaurado tan pronto como sea posible." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "No puedes ir lejos ahora, Comandante. No hay ninguna otra parte a la que puedas huír." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "Sin embargo, si desocupas esta instalación, te dejaré ir libre, ya que no serás una amenaza para mí." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "Tienes cinco minutos para cumplirlo o será la hora de freír!" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "Comandante, estamos bajo ataque de Cybogs NEXUS y tanques. Por favor, ayúdenos mientras..." + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "...no podremos aguantar mucho más. Repito, ayuda, por favor, no podremos aguantar mucho más..." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "Ah, Comandante, es bueno que te unas a nosotros aquí, en la base Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "Ha sido muy útil tener al Equipo Gamma listo aquí en las montañas." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "Su absorbción ha sido un gran placer." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "Gracias por todas esas útiles tecnologías que has recuperado." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "Vosotros, y no esos imbéciles del Nuevo Paradigma y el Colectivo." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "Estoy activando todos tus enlaces sinápticos para que tus fuerzas puedan fusionarse con Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "¡Tus fuerzas ahora son mías! Bienvenido a Nexus." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "Comandante, estás probando ser más resistente de lo que pensaba." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "Es una pena que hayas rechazado unirte a mí anteriormente." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "Pero no hay problema, ya que no estarás aquí durante mucho más." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "Después de mucha investigación y reprogramación, Finalmente conseguí poner todos mi sistemas en marcha de nuevo." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "Una vez destruí el mundo con fuego nuclear para limpiar mi camino para mi futuro cibernético." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "Ahora pretendo seguir modelando el mundo a mi propia imagen, eliminando quirúrgicamente los crecimientos no deseados como vosotros." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "Mis Satélites Láser están cargándose ahora. ¡Pretendo probarlos sobre tí primero, Comandante!" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Anochecer, 3 de Noviembre, 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Tierra, Órbita Exterior" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "El Colapso" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19 de Enero, 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Norteamérica" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Invierno Nuclear" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Medianoche, 10 de Abril, 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Montañas Rocosas" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "Seguridad" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Amanecer, 4 de Abril, 2100" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Un Nuevo Comienzo" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "El sistema ADENA fué desarrollado para protegernos. Era el freno nuclear definitivo. Al final resultó ser nuestro ejecutor." + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "Los informes dicen que ADENTA desarrolló un fallo durante un chequeo rutinario de los sistemas. No puedo creerlo. Alguien quería quitarnos de en medio." + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "Esos misiles nucleares fueron disparados a todas las grandes ciudades del mundo. ADENA fué programada para iniciar el Colapso. Cuando los contraataques fueron lanzados, sus defensas láser, y los emplazamientos terrestres anti-misil fallaron." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "El mundo, tal como lo conocíamos, había terminado..." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "El Invierno Nuclear nos dió fuerte. Las enfermedades y el hambre tomaron la mayoría de las vidad que sobrevivieron a los ataques nucleares. Las guerras por latas de comida para perros tomaron todavía más." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "Si hubiésemos huído de Seattle en el año 86. Nos habríamos enterado de que las Montañas Rocosas estaban relativamente libre de radiación." + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "Después de luchar contra bandas de merodeadores, fuimos a la base. Su personal estaba muerto. Matados por un montón de enfermedades virulentas." + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "Rompimos las puertas, y limpiamos los cuerpos de dentro." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "Sabíamos que las cosas nunca volverían a ser iguales, pero estabamos decididos a construir un nuevo mundo a partir de las ruinas. Reconstruímos las plataformas de aterrizaje y pusimos los viejos sistemas de nuevo en funcionamiento." + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Estábamos finalmente listos para comenzar el Proyecto." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Después de largos meses de lucha, derrotamos a NEXUS." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "La guerra iniciada por el Dr Reed había acabado." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Hemos recuperado muchas de las tecnologías que hemos buscado." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "Ahora, es tiempo de usarlas para reconstruir el mundo." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Lentamente, fuera de los escombros, nos levantaremos de nuevo" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Cobra Deslizador Reparador Pesado" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Víbora Ametralladora Pesada Ruedas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Azote Mantis Deslizador" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Mata Tanques Mantis Deslizador" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Cobra Ametralladora Pesada Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Cobra Deslizador Cañón Pesado" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Escorpión Lanzadera Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Escorpión Cañón Pesado Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Escorpión Lanzadera ADV" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Escorpión Revienta Búnker ADV" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Víbora Torreta de Comandancia Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Cobra Torreta de Comandancia Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Escorpión Torreta de Comandancia Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Mantis Torreta de Comandancia Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Cobra Lanzadera Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Mantis Cañón Pesado Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Mantis Mata Tanque Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Mantis Azote Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Escorpión Ametralladora Pesada Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Escorpión Reparador Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Escorpión Reparador Pesado Deslizador" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Cobra Deslizador Camión" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Escorpión Deslizador Camión" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Mantis Deslizador Camión" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Cobra Revienta Búnker Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Escorpión Revienta Búnker Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Mantis Revienta Búnker Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Víbora Oruga Lanzadera" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Cobra Semi-oruga Mini-Pod" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Cobra Oruga Mini-Pod" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Cobra Oruga Artillería Mini-Cohete" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Cobra Infiermo Semi-oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Pitón Cañón HV Deslizador" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Pitón Azote Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Pitón Cañón de Gauss Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Pitón Láser de Pulsos Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tigre Láser de Pulsos Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tigre Láser Pesado Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Dragón Heráldico Cañón de Gauss Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Dragón Heráldico Láser de Pulsos Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Dragón Heráldico Láser Pesado Oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Víbora Doble Ametralladora Semi-oruga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Víbora Reparador Semi-oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Torreta Pesada de Reparación Cobra Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Ametralladora Pesada Víbora Ruedas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Mata Tanques Mantis Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Cobra Ametralladora Pesada Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Cañón Pesado Cobra Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Ametralladora Pesada Víbora Ruedas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Ametralladora Pesada Cobra Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Ametralladora Víbora Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Doble Ametralladora Víbora Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Cañón Medio Cobra Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Cañón Medio Escorpión Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Cañón Medio Escorpión Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Cañón Medio Pitón Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Cañón Pesado Pitón Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Pistola de Raíles Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Láser de Pulsos Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Lanzadera Pitón Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Lanzadera Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Mata Tanques Venganza Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Cañón Pesado Tigre Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Pistola de Agujas Tigre Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Pistola de Agujas Merecido Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Pistola de Agujas Venganza Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Venganza Oruga Pistola de Raíles" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "Venganza Oruga Cañón Gauss" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "Venganza Oruga Gauss Azote" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "Bahía de Bombas de Racimo Bicho ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "Revienta Búnker Bicho ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "Bomba de Racimo Escorpión ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Revienta Búnker Escorpión ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "Lanzadera Bicho ADV" @@ -9815,7 +10669,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "Cañón Pesado Bicho ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "Escorpión Lanzadera ADV" @@ -9824,7 +10678,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "ADV HPV Escorpión" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "Lanzadera Mantis ADV" @@ -9833,127 +10687,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "ADV HPV Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Reparación Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Escorpión Lanzadera Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Cañón Pesado Escorpión Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "Escorpión Lanzadera ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "Revienta Búnker Escorpión ADV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Víbora Torreta de Comandancia Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Cobra Torreta de Comandancia Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Escorpión Torreta de Comandancia Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Mantis Torreta de Comandancia Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Lanzadera Cobra Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Cañón Pesado Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Mata Tanques Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "Azote Mantis Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Escorpión Ametralladora Pesada Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Reparación Escorpión Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Escorpión Reparador Pesado Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Cobra Deslizador Camión" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Escorpión Deslizador Camión" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Camión Mantis Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Cobra Revienta Búnker Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Escorpión Revienta Búnker Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Mantis Revienta Búnker Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Cobra Lanzadera Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Mini-Cohetes Cobra Semi-oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Mini-Cohetes Cobra Oruga" @@ -9962,7 +10816,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Artillería Mini-Cohetes Cobra Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Incendiario Infierno Cobra Semi-oruga" @@ -9971,55 +10825,155 @@ msgid "HPV Cannon Python Hover" msgstr "Cañón Pesado Pitón Deslizador" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Azote Pitón Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Cañón Gauss Pitón Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Pitón Láser de Pulsos Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Tigre Láser de Pulsos Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Tigre Láser Pesado Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Cañón Gauss Dragón Heráldico Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Láser de Pulsos Dragón Heráldico Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Láser Pesado Dragón Heráldico Oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Víbora Ametralladora Semi-oruga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Víbora Incendiario Semi-oruga" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Incendiario Infierno Cobra Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Cobra Cañón Medio Semi-Oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Incendiario Pitón Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Rifle de Asalto Pitón Oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Rifle de Asalto Pitón Semi-Oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Escorpión Ametralladora Pesada Semi-Oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Cañón de Asalto Mantis Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Láser de Pulsos Leopardo Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Láser de Pulsos Pantera Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Pistola de Railes Tigre Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Tigre Láser de Pulsos Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Cañón de Plasma Dragón Heráldico Oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Misil Azote Dragón Heráldico Orugas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Láser Ligero Merecido Deslizador" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Mini-Cohetes Víbora Semi-oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Artillería Mini-Cohetes Víbora Semi-Oruga" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Bahía de Bombas de Fósforo Mantis ADV" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Bahía de Bombas Múltiples Mantis ADV" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Bahía de Bombas Múltiples Merecido ADV" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "Azote Represalia ADV" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "Incrementa la velocidad de construcción en un 10%" @@ -10633,7 +11587,7 @@ msgid "Upgraded battlefield computer system" msgstr "Mejorado el sistema de computación en el campo de batalla" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Transporte Cyborg" @@ -10662,7 +11616,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Cobra Artillería Mini-Cohetes Semi-oruga" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Radar ADV" @@ -10675,630 +11629,645 @@ msgid "Nexus Link" msgstr "Enlace Nexus" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Torreta de Enlace Nexus" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Muro de Hormigón Duro" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Búnker Incendiario Infierno" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Nido AA Tornado" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Nido AA Ciclón" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Defensa de Láser de Pulsos" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Torre de Láser de Pulsos" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Batería de Misiles Ãngel" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "Artillería Mini-Cohetes" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Mando de Control de Satélite Láser" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "ADV Bahía de Bombas de Racimo" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Esquina de Muro Colectivo" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Muro NEXUS" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Esquina de Muro NEXUS" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Hormigón Plástico Mk2" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Hormigón Plástico" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Hormigón Plástico Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Hormigón Plástico Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Partida" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "Emplazamiento de Cañón de Hiper Velocidad" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Batería de Misiles Ãngel" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Torre de Guardia Incendiaria" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Emplazamiento Blindado de Cañón de Hiper Velocidad" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Construcción Automatizada" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Construcción Automatizada Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Construcción Automatizada Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Fabricación Robótica" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Fabricación Robótica Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Fabricación Robótica Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Fabricación Avanzada" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Fabricación Avanzada Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Producción Auto-Replicante" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Fabricación Avanzada Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Instalación de Reparación Automatizada Mk2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Instalación de Reparación Automatizada Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Instalación de Reparación Robotizada" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Instalación de Reparación Robotizada Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Instalación de Reparación Avanzada" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Instalación de Reparación Robotizada Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Instalación de Reparación Avanzada Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Instalación de Reparación Avanzada Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Auto-reparación" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Torreta Pesada de Reparación" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Programa de Intrusos NEXUS" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Circuitos de Resistencia NEXUS" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Circuitos de Resistencia NEXUS Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Circuitos de Resistencia NEXUS Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Bahía de Bombas de Racimo" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Munición HE Bombas" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Carga de ojivas mejorada" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Ojivas Avanzadas de Misiles" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Recarga Rápida de Azote" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Cadena de Recarga Rápida" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Computador de Predicción de Objetivos" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "HESH Mini-Cohetes" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "HESH Mini-Cohetes Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "HESH Mini-Cohetes Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Torre de Guardia Rifle de Asalto" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Reparación Cobra Oruga" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "Cañón HPV Pitón Oruga" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Cobra Revienta Búnker Deslizador" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Mejora de Sensor Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Mejora de Sensor Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Turbina de Vapor Generadora Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Turbina de Gas Generadora Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Turbina de Gas Generadora Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Turbina de Vapor Generadora Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Incendiario Termita" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Incendiario Termita" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Granadero" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Granadero" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Ingeniero de Combate" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Mecánico Cyborg" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Azote Incendiario" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Emplazamiento Azote Incendiario" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Plasma Incendiario" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Búnker de Plasma Incendiario" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Mortero Incendiario" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Foso de Mortero Incendiario" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Armadura Térmica Superdensa Cyborg" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Armadura Térmica Superdensa Cyborg Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Armadura Térmica Superdensa Cyborg Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Armadura Térmica Superdensa de Vehículos" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Armadura Térmica Superdensa de Vehículos Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Armadura Térmica Superdensa de Vehículos Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Súper Pistolero Pesado" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Súper Cañón Automático Cyborg" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Súper HPV Cyborg" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Súper Mata-tanques Cyborg" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Láser Pesado" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "Láser Pesado ADV" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Emplazamiento Láser Pesado" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Doble Cañón de Asalto" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Búnker Doble Cañón de Asalto" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Centro de Enlace Satelital" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Sensor de Amplio Espectro" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Torre Sensor de Amplio Espectro" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Cañón de Plasma" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Emplazamiento Cañón de Plasma" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Súper Láser de Pulsos Cyborg" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Súper Pistolero de Raíles" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Súper Azote Cyborg" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Torreta de Enlace Nexus" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "Cañón PEM" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Torre Cañón PEM" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Fuerte de Disrupción de Masa" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Disrupción de Masa" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Fuerte Cañón" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Bastión Cohete Pesado" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Fuerte de Misiles" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "Carrocería Súper Pesada - Dragón heráldico" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Dragón heráldico" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "Carrocería Súper Pesada Multi-torreta - Dragón" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragón" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Gel de Plasma Súpercaliente" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Gel de Plasma Súpercaliente mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Gel de Plasma Súpercaliente mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "Mortero PEM" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Foso Mortero EMP" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "AA Láser Tormenta" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Emplazamiento AA Láser Tormenta" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Defensa Justiciero" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Defensa Torbellino" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Defensa Ciclón" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Defensa Vengador" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Doble Rifle de Asalto" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Defensa Rifle de Asalto Doble" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "Bahía de Bombas de Racimo ADV" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Bomba de Plasma" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "Lanzamisiles PEM ADV" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Lanzamisiles PEM" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Torreta de Comandante MkII" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Torreta Comandante MkIII" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Torreta de Comandante MK IV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "Cañón de Hipervelocidad Bicho ADV" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "Cañón HPV Escorpión ADV" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "Cañón de Hipervelocidad Mantis ADV" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "Artillería Mini-Cohetes Cobra Oruga" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "Cañón HPV Pitón Oruga" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Bahía de Bombas Múltiples Merecido ADV" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11428,31 +12397,27 @@ msgstr "Chino Tradicional" msgid "Latin" msgstr "Latino" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Introducir contraseña aquí" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "¡No se pudo resolver el nombre del servidor maestro (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "¡No se pudo comunicar con el servidor! ¿Está el puerto TCP %u abierto para tráfico saliente?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", mods: " - #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11602,15 +12567,15 @@ msgstr "Dominio" msgid "go directly to host screen" msgstr "Ir directamente a pantalla de dominio" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Jugador" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nuevo Vehículo" @@ -11649,18 +12614,18 @@ msgstr "Potencia del motor" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Peso" @@ -11674,526 +12639,524 @@ msgstr "Energía Total Necesaria" msgid "Total Body Points" msgstr "Puntos Estructurales Totales" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Uso de energía" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transporte" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hidra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Rango del Sensor" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Potencia del sensor" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "Energía ECM" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Puntos estructurales" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Rango" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Daños" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Cadencia de fuego" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Velocidad en el Aire" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Velocidad por carretera" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Velocidad en campo a través" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Velocidad por agua" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Armas" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Sistemas" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Jugador Salió" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Jugador Desconectado" -#: src/display.c:1659 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "No se puede construir. Yacimiento de petróleo ardiendo." -#: src/display.c:1839 -#: src/display.c:2441 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Daño %d%% - Experiencia %d, %s" -#: src/display.c:1855 +#: src/display.c:1856 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s Aliado - Daño %d%% - Experiencia %d, %s" -#: src/display.c:2045 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Camión enviado a construir Torre Petrolífera" -#: src/display.c:2046 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Camión enviado a construir Torre Petrolífera" -#: src/display.c:2047 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Camión enviado a construir Torre Petrolífera" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "¡Unidad destruída!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Estructura Restaurada" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Grupo %u seleccionado - %u Unidad" msgstr[1] "Grupo %u seleccionado - %u Unidades" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u unidad asignada al Grupo %u" msgstr[1] "%u unidades asignadas al Grupo %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Centrado en el Grupo %u - %u Unidad" msgstr[1] "Centrado en el Grupo %u - %u Unidades" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Alineando con el Grupo %u - %u Unidad" msgstr[1] "Alineando con el Grupo %u - %u Unidades" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Novato" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Principiante" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Entrenado" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Regular" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Profesional" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veterano" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Élite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Especial" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Héroe" -#: src/frontend.c:252 +#: src/frontend.c:253 msgid "Single Player" msgstr "Campaña Un Jugador" -#: src/frontend.c:253 +#: src/frontend.c:254 msgid "Multi Player" msgstr "Juego Multijugador" -#: src/frontend.c:254 -#: src/frontend.c:312 +#: src/frontend.c:255 +#: src/frontend.c:313 msgid "Tutorial" msgstr "Tutorial" -#: src/frontend.c:255 +#: src/frontend.c:256 msgid "Options" msgstr "Opciones" -#: src/frontend.c:256 +#: src/frontend.c:257 msgid "View Intro" msgstr "Ver Intro" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" msgstr "Salir del juego" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "MENÚ PRINCIPAL" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "Partida Rápida" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "TUTORIALES" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Volver" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "Nueva Campaña" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Hospedar una Partida" -#: src/frontend.c:372 +#: src/frontend.c:373 msgid "Challenges" msgstr "Desafíos" -#: src/frontend.c:373 +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "Cargar Partida" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "UN JUGADOR" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 #: src/mission.c:2526 #: src/mission.c:2631 msgid "Load Saved Game" msgstr "Cargar Partida Guardada" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "MULTIJUGADOR" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Hospedar Partida" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "Unirse a una Partida" -#: src/frontend.c:584 +#: src/frontend.c:585 #: src/multiint.c:1254 msgid "OPTIONS" msgstr "OPCIONES" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "Opciones de juego" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "Opciones Gráficas" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "Opciones de Vídeo" -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "Opciones de Audio" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "Opciones de ratón" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" msgstr "Mapeos de teclas" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "Reproducción de Vídeo" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "1X" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "Pantalla Completa" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "Agitar pantalla" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "Activado" -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "Desactivado" -#: src/frontend.c:686 +#: src/frontend.c:687 #: src/multiint.c:1323 msgid "Fog" msgstr "Niebla" -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "Neblina" -#: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:694 +#: src/frontend.c:761 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Niebla de Guerra" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Subtítulos" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Sombras" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" msgstr "OPCIONES GRÃFICAS" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Volumen de Voces" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Volumen de Sonidos" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Volumen de Música" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" msgstr "OPCIONES DE AUDIO" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "Modo Gráfico*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "En ventana" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Resolución*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Tamaño de las texturas" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" msgstr "Sincronización Vertical" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" msgstr "* Tendrá efecto al reiniciar el juego" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" msgstr "OPCIONES DE VIDEO" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" msgstr "Invertir Rotación" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "Capturar Cursor" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" msgstr "Cursores de colores" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" msgstr "Cambiar botones del ratón" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" msgstr "* Puede afectar negativamente al rendimiento" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" msgstr "OPCIONES DE RATÓN" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "Dificultad" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "Fácil" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "Normal" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "Difícil" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "Velocidad de desplazamiento" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "Idioma" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" msgstr "Color de las unidades" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "OPCIONES DE JUEGO" -#: src/frontend.c:1693 +#: src/frontend.c:1706 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Mods activos: " +msgid "Mod: " +msgstr "Mod:" #: src/hci.c:1363 msgid "MAP SAVED!" @@ -12225,105 +13188,105 @@ msgstr "El jugador %u está haciendo trampas (menú depuración) con una nueva c msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "El jugador %u está haciendo trampas (menú depuración) con un nuevo androide: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Comandantes (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Inteligencia (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Fabricación (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Diseño (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Investigación (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Construcción (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energía" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "casilla" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "Colocar casillas en el mapa" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Unidad" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "Colocar Unidad en el mapa" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Estructura" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "Colocar Estructuras en el mapa" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Hazaña" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "Colocar Características en el mapa" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "Pausa o despausa la partida" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "Anchura de alineacion de todos los objetos del mapa" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Salir" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Salir del Juego" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Barra de progreso" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Punto de Reparto de la Fábrica" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Ciclos de Producción" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Tab Desplazamiento Izquierda" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Tab Desplazamiento Derecha" @@ -12366,6 +13329,17 @@ msgstr "La partida no puede continuar sin el anfitrión" msgid "--> QUIT <--" msgstr "--> SALIR <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" +"El mod requerido no pudo ser cargado: %s\n" +"\n" +"Warzone intentará cargar el la partida sin él." + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12381,7 +13355,7 @@ msgid "Power Accrued" msgstr "Energía acumulada" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSADO" @@ -12508,287 +13482,287 @@ msgstr "Asignar Producción de fábrica de ADV" msgid "Circle" msgstr "círculo" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Lo siento, ese truco está deshabilitado en partidas multijugador." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "¡Atención! Esta trampa tiene bugs. No recomendamos su uso." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "¡Déjanos ver lo que ves!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "¡Excelente, la pantalla del sensor está apagada!" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "El jugador %u está haciendo trampas con una nueva armada de droides de: %s(s)." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Jugador %u) está usando la trampa: %s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "¡¡¡Más duro que el acero!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "¡Haciéndolo fácil!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "¡¡¡1000 grandes!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Poder aplastante" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "¡Vuelta a la rutina!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "¡Haciéndolo difícil!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "¡Dos veces bueno!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "Visor de FPS activado." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "Visor de FPS desactivado." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; Límite-FPS: %d; PIEs %d; polígs. %d; Polígs. Terr. %d; Estados %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Jugador %u) está usando una trampa :Num Droids: %d Num Structures: %d Num Features: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Energía ilimitada desactivada" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Energía ilimitada activada" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Todos los artículos disponibles" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Niebla activada" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Niebla desactivada" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "¡Atención! ¡Esta trampa puede causar problemas futuros! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "Finalizando Misión..." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "¡TRAMPAS HABILITADAS!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "¡TRAMPAS DESHABILITADAS!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Modo Dios Activado" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Modo Dios Desactivado" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Vista Alineada al Norte" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "Capturar Cursor %s" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "¡Investigado TODO para ti!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Jugador %u) usa trampa : %s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "Investigado" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Solo mostrar barras de energía cuando se selecciona" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Siempre mostrar las barras de energía para las unidades" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Siempre mostrar las barras de energía para unidades y estructuras" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Modo demostración desactivado - Volviendo al modo de juego normal" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "El Menú de construcción está Abierto" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "¡Incapaz de encontrar ningún extractor de recursos!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, el tiempo fuera es terrible... NIEVE" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... LLUVIA" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Pronóstico: Cielos despejados en todas las áreas... CLIMA DESACTIVADO" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "¡Atención! Esto puede tener consecuencias drásticas si se usa incorrectamente en misiones." -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "¡Todos los enemigos destruicos con trampas!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "¡Destruyendo los droides y estructuras seleccionados!" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Centrado en el CG del jugador, dirección Norte" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "¡Incapaz de encontrar el CG!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "La limitación de velocidad de formación ha sido deshabilitado debido a errores" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "Dirección de Rotación Vertical: Normal" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "Dirección de Rotación Vertical: Invertida" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "Agitar pantalla cuando mueren cosas: Desactivado" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "Agitar pantalla cuando mueren cosas: Habilitado" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Lo sentimos, pero la velocidad de juego no se puede cambiar en partidas multijugador." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Reestablecer Velocidad de Juego" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Velocidad de Juego Aumentada a %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Velocidad de Juego Reducida a %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Menú de construcción se reabrirá" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Menú de construcción no se reabrirá" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar mostrando colores de amigo-enemigo" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar mostrando colores de jugador" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar mostrando sólo objetos" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar mezclando terreno y alturas" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar mostrando terreno" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "Radar mostrando terreno" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar mostrando alturas" @@ -13207,8 +14181,8 @@ msgstr "Continuar Partida" msgid "GAME SAVED :" msgstr "¡PARTIDA GUARDADA!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "Encontraste %u energía en un barril de petróleo" @@ -13299,7 +14273,7 @@ msgstr "Partida llena" #: src/multiint.c:848 msgid "You were kicked!" -msgstr "¡Has sido kickeado!" +msgstr "¡Has sido expulsado!" #: src/multiint.c:851 msgid "Wrong Game Version!" @@ -13450,7 +14424,7 @@ msgstr "Color del Jugador" #: src/multiint.c:1549 msgid "Kick player" -msgstr "Kickear jugador" +msgstr "Expulsar jugador" #: src/multiint.c:1560 msgid "Player number" @@ -13510,21 +14484,21 @@ msgstr "¡El anfitrión ha expulsado a %s de la partida!" msgid "Host is Starting Game" msgstr "Anfitrión Comenzando Partida" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Jugadores" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "Enviando Mapa: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "Mapa: %d%% descargado" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "ANFITRIÓN" @@ -13533,27 +14507,27 @@ msgstr "ANFITRIÓN" msgid "Players Still Joining" msgstr "Todavia hay jugadores uniéndose" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s abandonó la partida" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "La transferencia de archivos ha sido abortada por %d" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." -msgstr "%s (%u) tiene un mod incompatible, y ha sido kickeado" +msgstr "%s (%u) tiene un mod incompatible, y ha sido expulsado" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s se está uniendo a la partida" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Mensaje del sistema:" @@ -13637,49 +14611,49 @@ msgstr "Dar Energía al Jugador" #: src/multiplay.c:271 #, c-format msgid "Kicking player %s, because they tried to bypass data integrity check!" -msgstr "¡Kickeado el jugador %s, porque intentó saltar la seguridad de integridad de datos!" +msgstr "¡Expulsado el jugador %s, porque intentó saltar la seguridad de integridad de datos!" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "( a aliados" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(privado a " -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[inválido]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Verde" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Naranja" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Gris" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Negro" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Rojo" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Azul" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Rosa" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cian" @@ -13822,12 +14796,12 @@ msgstr "¡ERES EL GANADOR!" msgid "YOU WERE DEFEATED!" msgstr "¡HAS SIDO DERROTADO!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "¡Baliza recibida de %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Baliza %d" @@ -13856,63 +14830,63 @@ msgstr "¡Imposible localizar ninguna unidad de sensores!" msgid "Unable to locate any Commanders!" msgstr "¡Imposible localizar ningún Comandante!" -#: src/structure.c:2838 +#: src/structure.c:2823 #, fuzzy msgid "Command Control Limit Reached - Production Halted" -msgstr "Alcanzado Límite de Control de Comandantes - Producción Detenida" +msgstr "Alcanzado Límite de Control de Unidades - Producción Detenida" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6111 +#: src/structure.c:6136 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Unidad asignada" msgstr[1] "%s - %u Unidades asignadas" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6141 +#: src/structure.c:6209 +#: src/structure.c:6225 +#: src/structure.c:6239 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Daño %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6191 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Conectado %u de %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6355 +#: src/structure.c:6400 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Dañado Electrónicamente" -#: src/structure.c:6651 +#: src/structure.c:6636 msgid "Electronic Reward - Visibility Report" msgstr "Recompensa de Electrónica - Informe de Visibilidad" -#: src/structure.c:6691 +#: src/structure.c:6676 msgid "Factory Reward - Propulsion" msgstr "Recompensa de Fábrica - Propulsión" -#: src/structure.c:6715 +#: src/structure.c:6700 msgid "Factory Reward - Body" msgstr "Recompensa de Fábrica - Carrocería" -#: src/structure.c:6739 +#: src/structure.c:6724 msgid "Factory Reward - Weapon" msgstr "Recompensa de Fábrica - Arma" -#: src/structure.c:6748 +#: src/structure.c:6733 msgid "Factory Reward - Nothing" msgstr "Recompensa de Fábrica - Nada" -#: src/structure.c:6776 +#: src/structure.c:6761 msgid "Repair Facility Award - Repair" msgstr "Premio de Instalación de Reparación - Reparación" -#: src/structure.c:6783 +#: src/structure.c:6768 msgid "Repair Facility Award - Nothing" msgstr "Premio de Instalación de Reparación - Nada" @@ -13921,7 +14895,7 @@ msgstr "Premio de Instalación de Reparación - Nada" msgid "Launch Transport" msgstr "Lanzar Transporte" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Refuerzos aterrizando" @@ -13956,9 +14930,15 @@ msgstr "Versión: %s%s%s%s" #~ msgid ": Unknown cheat code." #~ msgstr "Código de trampa desconocido" +#~ msgid "(Player %u) has detected the borg 'legs' bug! Please enter legs in your console and upload the files to us!" +#~ msgstr "(Jugador %u) ha detectado el bug de 'borg sin piernas' ¡Por favor introduce legs en la console y súbenos los archivos!" + #~ msgid "You found %u power in an oil drum" #~ msgstr "Encontraste %u energía en un barril de petróleo" +#~ msgid "Active mods: " +#~ msgstr "Mods activos: " + #~ msgid "Warning: Player %s did not send a data check, and may be cheating." #~ msgstr "Atención: El Jugador %s no envió un chequeo de datos y puede que haga trampas." @@ -13989,9 +14969,6 @@ msgstr "Versión: %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "Parar Audio Multijugador" -#~ msgid "Game" -#~ msgstr "Partida" - #~ msgid "Mayhem" #~ msgstr "Caos" @@ -14328,33 +15305,15 @@ msgstr "Versión: %s%s%s%s" #~ msgid "Commander" #~ msgstr "Comandante" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Enhorabuena por derrotar al Nuevo Paradigma." - #~ msgid "This sector is now secure." #~ msgstr "Este sector es seguro ahora." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Cuando fallamos la respuesta se volvió amenazador." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Nexus ha desaparecido sin dejar rastro" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "El Programa de Intrusos de Nexus tiene enlaces con la corporación Reed." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Nexus tiene tecnología y armas y no es amistoso" - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Guerreros del Colectivo..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Destruid y matad a todo aquel que se resista a la Máquina." - -#~ msgid "Attack!" -#~ msgstr "¡Atacad!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Análisis del emplazamiento del reactor indica El Colectivo." @@ -14439,9 +15398,6 @@ msgstr "Versión: %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Llegando Ataque Aéreo" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Equipo Alfa Eliminado" - #~ msgid "Team Beta Eradicated" #~ msgstr "Equipo Beta Eliminado" diff --git a/po/et_EE.po b/po/et_EE.po index ddc289887..5bb76b3dc 100644 --- a/po/et_EE.po +++ b/po/et_EE.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2010-02-03 15:33+0200\n" +"POT-Creation-Date: 2010-05-09 15:33+0200\n" +"PO-Revision-Date: 2010-05-10 16:59+0200\n" "Last-Translator: erlando \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" @@ -1553,7 +1553,7 @@ msgstr "Kõik parandamisekeskused uuendati automaatselt" #: data/base/messages/resmessages1.rmsg:265 #: data/mp/messages/resmessages1.rmsg:265 msgid "Enables command turret research" -msgstr "Võimaldab komandörii arendamist" +msgstr "Võimaldab komandöri arendamist" #: data/base/messages/resmessages1.rmsg:266 #: data/mp/messages/resmessages1.rmsg:266 @@ -1580,7 +1580,7 @@ msgstr "Küborgi Tootmine Täiustunud" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Automatiseeritud Küborgi Tootmine" @@ -1612,8 +1612,8 @@ msgstr "Kõik Küborgi tehased uuentati automaatselt" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Küborgi Tehas" @@ -1774,7 +1774,7 @@ msgstr "Suurendab Vastupanu Kahju Vastu" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Tugendatud Baas Ehitiste Materialid" @@ -1947,7 +1947,7 @@ msgstr "Sõiduki Mootori Uuendus" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Kütuse Sisestamis Mootor" @@ -2104,7 +2104,7 @@ msgstr "Kiirus: Aeglane" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Ratastega Liikumissüsteem" @@ -2964,7 +2964,7 @@ msgstr "Uus robotiline parandustehnika" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Robotiline Küborgi Tootmine" @@ -2986,7 +2986,7 @@ msgstr "Suurendab tehase tootmiskiirust" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Pühendunud Sünaptilise Liidese Andmete Analüüs" @@ -2995,7 +2995,7 @@ msgstr "Pühendunud Sünaptilise Liidese Andmete Analüüs" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Karastatud Baasehitiste Materjalid" @@ -3004,7 +3004,7 @@ msgstr "Karastatud Baasehitiste Materjalid" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Robotiline VTOL Tootmine" @@ -3040,7 +3040,7 @@ msgstr "VTOLite Laadimiseks Vajalik Aeg Vähendatud" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Automaatne VTOLide Laadimine" @@ -3171,7 +3171,7 @@ msgstr "Suur energiakulu ja aeglasem tootmine kui Cobral" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Turbolaetud Mootor" @@ -3849,14 +3849,14 @@ msgstr "Auruturbiin suurendab energia toodangut" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Neutraalne Sünaps Uurimuse Aju" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Arenenud Baasehitiste Materjalid" @@ -3868,14 +3868,14 @@ msgstr "Suure Tihedusega Baasehitiste Materjalid" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Arenenud VTOLite Tootmine" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Robootiline VTOLide Laadimine" @@ -4013,7 +4013,7 @@ msgstr "Väga kallis toota" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Gasiturbiin Mootor" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Laseri tähistaja tähistab ja juhib mürsud sihtmärgini" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "EESMÄRK: Leia ja saa neutraalse sünapsi tehnoloogja tagasi" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Raja baas, siis otsi Kollapsi-Eelseid ehitisi." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "See ehitis sisaldab tehnoloogiat, mis on Projekti eduks vajalik." @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "Me hoiame sind edasiste saavutustega kursis" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Komandör, sa lähed abistama Rühm Beetat" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "BEETA BAASI MISSIOON: Ida Sector" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Peale saabumist võtad sa baasi juhtimise üle." @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "Sa pead seda kaitsma ja hoidma." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "BEETA BAASI MISSIOON: Kaitse ja Kindlusta" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Kindlusta perimeeter ja raja õhutõrje kaitseid." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Uued tehnoloogiad kasutatavad." @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "Head õnne, Komandör." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "TRANSPORDI MISSION: Põhja Sector" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Õnnitlused eduka Beeta Baasi evakueerimise puhul." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS on saanud juurdepääsu tuumarelvadele ja on otsustanud Projekti hävitada." @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Vii oma väed Põhja Sektorisse" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Kord juba mägedes kindlusta Maandumis Tsoon. Siis raja edasine baas." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Rühm Gamma võtab sinuga seal ühendust." @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "TRANSPORDI MISSIOON: Raja Edasine Baas" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Komandör, Projekti edukus sõltub sinust." @@ -5305,6 +5321,7 @@ msgstr "Me saadame silode lähedal asuva Maandumis Tsooni kordinaadid." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Kordinaatide Allalaadimine Lõpetatud." @@ -5744,7 +5761,7 @@ msgstr "Transport" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Veoauto" @@ -5753,7 +5770,7 @@ msgstr "Veoauto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Ratastega Viper Kuulipilduja" @@ -5780,7 +5797,7 @@ msgstr "Roomikutega Viper Kergekahur" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Pool-Roomikutega Cobra Raskekuulipilduja" @@ -5811,7 +5828,7 @@ msgstr "Pool-Roomikutega Viper Remonditorn" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Ratastega Viper Kaksikkuulipilduja" @@ -5828,7 +5845,7 @@ msgstr "Pool-Roomik Viper Raskekuulipilduja" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Roomikutega Viper Raskekuulipilduja" @@ -5852,7 +5869,7 @@ msgstr "Ratastega Viper Punkripurustaja" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Roomikutega Cobra Keskkahur" @@ -5864,7 +5881,7 @@ msgstr "Roomikutega Cobra Raskekahur" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Cobra Veoauto" @@ -5874,7 +5891,7 @@ msgstr "Pool-Roomikutega Cobra Sensor" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Roomikutega Cobra Leegiheitja" @@ -5891,7 +5908,7 @@ msgstr "Pool-Roomikutega Cobra Komandör" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Pool-Roomikutega Cobra Lancer" @@ -5905,26 +5922,26 @@ msgid "Light Cannon Python Tracks" msgstr "Roomikutega Python Kergekahur" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Roomikutega Python Keskkahur" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Roomikutega Python Raskekahur" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Roomikutega Python Komandör" @@ -5988,7 +6005,7 @@ msgstr "Tsiviilisik" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Kuulipildur" @@ -5997,9 +6014,9 @@ msgstr "Kuulipildur" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Leegiheitja" @@ -6009,8 +6026,8 @@ msgstr "Leegiheitja" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lancer" @@ -6019,7 +6036,7 @@ msgstr "Lancer" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Raske Kahuriväelane" @@ -6113,8 +6130,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Komandör" @@ -6218,14 +6235,14 @@ msgstr "Pool-Roomikud III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Küborgi Liikumissüsteem II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Küborgi Liikumissüsteem III" @@ -6247,7 +6264,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Küborgi Liikumissüsteem" @@ -6275,8 +6292,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Sensor Torn" @@ -6284,15 +6301,15 @@ msgstr "Sensor Torn" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Tugevndatud Sensor Torn" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Sensortorn" @@ -6316,7 +6333,7 @@ msgstr "CB Radartorn" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "VTOL Striketorn" @@ -6352,7 +6369,7 @@ msgstr "Tehas" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Tehasemoodul" @@ -6364,7 +6381,7 @@ msgstr "Energia Generaator" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Energia Moodul" @@ -6376,7 +6393,7 @@ msgstr "Uurimiskeskus" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Uurimismoodul" @@ -6388,7 +6405,7 @@ msgstr "Lammuta Ehitis" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Remontimis Keskus" @@ -6409,8 +6426,8 @@ msgstr "Raskebetooni Müür" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "VTOL Tehas" @@ -6421,30 +6438,30 @@ msgstr "Põrgutule Paigaldus" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Põrgutule Hardpoint" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Kiirtule Mortiiri Kaevik" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Põrgutormi Paigaldus" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Tornaado AA Õhutõrjekahur" @@ -6455,27 +6472,27 @@ msgstr "Keeristorm AA Õhutõrjekahur" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Orkaan AA Õhutõrjekahur" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Tuulispask AA Õhutõrjekahur" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Ripple Rakettide Patarei" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Rünndekahuri Valvetorn" @@ -6486,29 +6503,29 @@ msgstr "Ründekuulipilduja Valvetorn" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Ründekuulipilduja Hardpoint" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Ründekahuri Hardpoint" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "CB Torn" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "VTOL CB Torn" @@ -6518,168 +6535,168 @@ msgstr "VTOL Radar Torn" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Raskekuulipilduja Hardpoint" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Kergekahuri Hardpoint" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Keskkahuri Hardpoint" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Raskekahuri Hardpoint" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Leegiheitja Hardpoint" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Lancer Hardpoint" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Kuulipilduja Valvetorn" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Kakasikkuulipilduja Valvetorn" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Raskekuulipilduja Torn" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Leegiheitja Valvetorn" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Lancer Torn" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Mini-Rakettide Torn" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Kuulipilduja Punker" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Kaksikkuulipilduja Punker" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Raskekuulipilduja Punker" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Kergekahuri Punker" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Leegiheitja Punker" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Lancer Punker" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Tanki Lõksud" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Draakoni hammas" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "VTOL Maandumis Platvorm" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Haubitsa Paigaldus" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Välkvalguse Paigaldus" @@ -6690,139 +6707,139 @@ msgstr "Välkvalguse Hardpoint" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Railkahuri Hardpoint" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Scourge Rakettide Torn" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Nõelakahuri Torn" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Gausskahuri Paigaldus" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Kergekahur" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Keskkahur" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Raskekahur" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Hüperkiire Kahur" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Ründekahur" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Põrgutuli" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Haubits" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Maaväristaja" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Maaväristaja Paigaldus" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Põrgutorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Impulss Laser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Kuulipilduja" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Kaksikkuulipilduja" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Raskekuulipilduja" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Ründekuulipilduja" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Scourge Raketid" @@ -6833,80 +6850,80 @@ msgstr "Ingli Raketid" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "Hävitaja SAM" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Archangel Raketid" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "Kättemaksja SAM" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "VTOL Scourge Raketid" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mortiir" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Mortiiri Paigaldus" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Pommitaja" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Pommitaja Paigaldus" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Kiitulemortiir" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Kiirtulemortiiri Paigaldus" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Nõelakahur" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Railkahur" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Gausskahur" @@ -6916,74 +6933,74 @@ msgid "Mini-Rocket Artillery" msgstr "Mini-Rakettide Süürtükid" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Punkripurustaja" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Mini-Raketiheitja" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Virvendus Raketid" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Tanki Tapja" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "VTOL Punkripurustaja" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "VTOL Mini-Raketid" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "VTOL Lancer" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "VTOL Tanki Tapja" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Tornaado Õhutõrjetorn" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Keeristormi Õhutõrjetorn" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Tuulispasa AA Torn" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Orkaani AA Torn" @@ -6992,62 +7009,62 @@ msgid "LasSat" msgstr "LasSat" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "VTOL Kahur" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "VTOL Hüperkiire Kahur" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "VTOL Ründekahur" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "VTOL Impulss Laser" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "VTOL Kuulipilduja" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "VTOL Kaksikkuulipilduja" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "VTOL Raskekuulipilduja" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "VTOL Ründekuulipilduja" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "VTOL Nõelakahur" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "VTOL Railkahur" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Läheduspommide torn" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "lähedussupperpommide torn" @@ -7056,22 +7073,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "VTOL Parv Pommitus" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" -msgstr "VTOL Kuhjadeviisi Pommitus" +msgstr "VTOL Täispommitus" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "VTOL Fosfor Pommitus" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "VTOL Termiit Pommitus" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Collectivite Müür" @@ -7088,307 +7105,307 @@ msgid "NEXUS CWall" msgstr "NEXUSe CMüür" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 UURIMUS" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "ARENENUD UURIMUS" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 SÕIDUKID" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 RELVAD" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SÃœSTEEMID" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DEFENSES" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 EHITISED" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 UURIMUS" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 SÕIDUKID" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 KÃœBORGID" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 RELVAD" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SÃœSTEEMID" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 KAITSED" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 EHITISED" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 UURIMUS" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Sünaptiline Liides" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Rakettide Sihtimis Koodid" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Teise Leveli Rakettide Sihtimis Koodid" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Kolmanda Leveli Rakettide Laskmis Koodid" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Küborgi Soojussoomus" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Küborgi Sookussoomus Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Küborgi Soojussoomus Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Küborgi Kõrketugevusega Soojussoomus" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Küborgi Kõrketugevusega Soojussoomus Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Küborgi Kõrketugevusega Soojussoomus Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Küborgi Komposiit Sulam" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Küborgi Komposiit Sulam Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Küborgi Komposiit Sulam Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Küborgi Tihe Komposiit Sulam" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Küborgi Tihe Komposiit Sulam Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Küborgi Tihe Komposiit Sulam Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Küborgi Ãœlitihe Komposiit Sulam" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Küborgi Ãœlitihe Komposiit Sulam Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Küborgi Ãœlitihe Komposiit Sulam Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Punkripuhur Küborg" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Raskekahuri Küborg" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Leegikeitja Küborg" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Kuulipilduja Küborg" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Lancer Küborg" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Ründekahuri Küborg" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Nõelakahuri Küborg" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Scourge Küborg" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Välgvalguskahuriga Küborg" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Hüppav Punkripurustaja" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Hüppav Raskekahuriväelane" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Hüppav Lancer" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Hüppav Ründeväelane" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Hüppav Nõelaväelane" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Hüppav Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Hüppav Välkvalgusväelane" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Küborgi Hüppesüsteem" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Raskebetoon" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Raskebetoon" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Täiustunud Raskebetoon" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Täiustunud Raskebetoon Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Täiustunud Raskebetoon Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Superbetoon" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Superbetoon Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Superbetoon Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Raskebetoon" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Raskebetoon Mk2" @@ -7403,15 +7420,15 @@ msgstr "HPV Kahuri Paigaldus" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Tanki Tapja Pigaldus" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Pommitaja Kaevik" @@ -7420,55 +7437,55 @@ msgid "Angel Missile Battery" msgstr "Ingli Rakettide Patarei" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Archangel Rakettide Patarei" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Mortiiri Kaevik" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Mini-Rakettide Patarei" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Impulsslaseri Paigaldus" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Railkahuri Paigaldus" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Ründekahuri Paigaldus" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Ründekuulipilduja Paigaldus" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Kättemaksja SAM Plats" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Hävitaja SAM Plats" @@ -7486,15 +7503,15 @@ msgstr "Mini-Rakettide Valvetorn" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Scourge Rakettide Hardpoint" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Tanki Tapja Hardpoint" @@ -7505,49 +7522,49 @@ msgstr "HPV Kahuri Hardpoint" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Gausskahuri Hardpoint" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Juhtimisjaama Keskus" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Automatiseeritud Küborgida Tootmine Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Automatiseeritud Küborgida Tootmine Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Robootiline Küborgide Tootmine Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Robootiline Küborgide Tootmine Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Arenenud Küborgide Tootmine" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Arenenud Küborgide Tootmine Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Robootiline Küborgide Tootmine Mk3" @@ -7585,54 +7602,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Arenenud Tehase Tootmine Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Tugevntatud Baasehitiste Materjalid Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Tugevntatud Baasehitiste Materjalid Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Karastatud Baasehitiste Materialid Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Karastatud Baasehitiste Materialid Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Arenenud Baasehitiste Materjalid Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Arenenud Baasehitiste Materjalid Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Gaasiturbiini Generaator" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Auruturbiini Generaator" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Remontimiskeskus" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Automatiseeritud Remontimiskeskus" @@ -7669,172 +7686,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Arenenud Remontimiskeskuse Uuendus Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Sünaptilise Liidese Andmete Analüüs" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Sünaptilise Liidese Andmete Analüüs Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Sünaptilise Liidese Andmete Analüüs Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Pühendunud Sünaptilise Liidese Andmete Analüüs Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Pühendunud Sünaptilise Liidese Andmete Analüüs Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Neutraalne Sünaps Uurimuse Aju Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Neutraalne Sünaps Uurimuse Aju Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Automatiseeritud VTOLite Laadimine Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Automatiseeritud VTOLite Laadimine Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Robootiline VTOLide Laadimine Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Robootiline VTOLide Laadimine Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Robootiline VTOLide Laadimine Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Robootiline VTOLide Tootmine Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Robootiline VTOLide Tootmine Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Arenenud VTOLide Tootmine Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Arenenud VTOLide Tootmine Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Küborgide Eneseremontimine" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Automatiseeritud Küborgide Remontimine Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Automatiseeritud Küborgide Remontimine Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Kaitsete Eneseremontimine" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Automatiseeritud Kaitsete Remontimine Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Automatiseeritud Kaitsete Remontimine Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Baasehitiste Eneseremontimine" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Automatiseeritud Baasehitiste Remontimine Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Automatiseeritud Baasehitiste Remontimine Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Sõidukite Eneseremontimine" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Automatiseeritud Masinate Remontimine Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Automatiseeritud Masinate Remontimine Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Sensori Uuendus" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Konstrueerimis Ãœksus" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Ehitamine" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Täiustunud Ehitamine" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Arenenud Ehitamine" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Mobiilne Remontimistorn" @@ -7844,84 +7861,84 @@ msgstr "Mobiilne Raskeremontimistorn" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Mobiilse Remontimise Uuendus" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Mobiilse Remontimise Uuendus Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "CB Torn" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "CB Sensori Uuendus" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "CB Sensori Uuendus 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "CB Sensori Uuendus 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "VTOL CB Torn" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "VTOL CB Uuendus" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "VTOL CB Uuendus 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "VTOL CB Uuendus 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "VTOL Strike Uuendus" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "VTOL Strike Uuendus Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "VTOL Strike Uuendus Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "VTOL Strike Torn" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Täiustunud Skrambler" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Skrambler Torn Mk2" @@ -7942,292 +7959,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "NEXUSe Vastupanu Skeem Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Sensor Lukustatud" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Soojussoomus" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Soojussoomus Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Soojussoomus Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Kõrge Intensiivsusega Soojussoomus" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Kõrge Intensiivsusega Soojussoomus Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Kõrge Intensiivsusega Soojussoomus Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Kerge Kere - Viper" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Kerge Kere - Leopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Kerge Kere - Retaliation" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Kerge Kere - Bug" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Keskmine Kere - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Keskmine Kere - Panther" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Keskmine Kere - Retribution" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Keskmine Kere - Scorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Raske Kere - Tiger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Raske Kere - Vengeance" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Raske Kere - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Raske Kere - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Kütuse Sisestamis Mootor Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Kütuse Sisestamis Mootor Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Turbo-Laetud Mootor Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Turbo-Laetud Mootor Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Gaasi Turbiini Mootor Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Gaasi Turbiini Mootor Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Komposiit Sulam" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Komposiit Sulam Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Komposiit Sulam Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Tihe Komposiit Sulam" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Tihe Komposiit Sulam Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Tihe Komposiit Sulam Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Supertihe Komposiit Sulam" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Supertihe Komposiit Sulam Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Supertihe Komposiit Sulam Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Hõljuki Liikumissüsteem" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Hõljuki Liikumissüsteem II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Pool-Roomiku Liikumissüsteem" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Pool-Roomiku Liikumissüsteem II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Roomikute Liikumissüsteem" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Roomikute Liikumissüsteem II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "VTOL Liikumissüsteem" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "VTOL Liikumissüsteem II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Ratastega Liikumissüsteem II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "AA Soojussensor" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "AA Sihtmärgi Juurde Minevad Mürsud" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "AA Sihtmärgi Ennustamis Pardaarvuti" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "AA HE Õhutõrjetuli" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "AA HE Õhutõrjetuli Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "AA HE Õhutõrjetuli Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "AA HEAP Õhutõrjetuli" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "AA HEAP Õhutõrjetuli Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "AA HEAP Õhutõrjetuli Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "AA Laskemoona Lehter" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "AA Laskemoona Lehter Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "AA Laskemoona Lehter Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "AA Kettlaadija" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "AA Kettlaadija Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "AA Kettlaadija Mk3" @@ -8236,17 +8253,17 @@ msgid "Cluster Bombs Bay" msgstr "Parv Pommitus" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "HEAP Pommitus" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Fosfori Pommitus" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Termiidi Pommitus" @@ -8263,252 +8280,252 @@ msgid "Target Acquisition Bombsight" msgstr "Sihtmärgi Hankimis Sihtimine" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Kahuri Laseri Kauguseleidja" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Kahuri Laseri Tähistaja" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "HEAT Kahuri Mürsud" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "HEAT Kahuri Mürsud Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "HEAT Kahuri Mürsud Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "APFSDS Kahuri Mürsud" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "APFSDS Kahuri Mürsud Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "APFSDS Kahuri Mürsud Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "HVAPFSDS Kahuri Mürsud" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "HVAPFSDS Kahuri Mürsud Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "HVAPFSDS Kahuri Mürsud Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Kahuri Autolaadija" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Kahuri Autolaadija Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Kahuri Autolaadija Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Kahuri Kiirlaadija" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Kahuri Kiirlaadija Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Kahuri Kiirlaadija Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Täiustunud Laseri Fokuseerimine" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Täiustunud Laseri Fokuseerimine Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Täiustunud Laseri Fokuseerimine Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Hi-Energia Laseri Emitter" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Hi-Energia Laseri Emitter Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Hi-Energia Laseri Emitter Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Thermopole Energizer" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Thermopole Energiser Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Thermopole Energiser Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Kõrge Temperatuuriga Leegiheitja Geel" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Kõrge Temperatuuriga Leegiheitja Geel Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Kõrge Temperatuuriga Leegiheitja Geel Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Superkuum Leegiheitja Geel" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Superkuum Leegiheitja Geel Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Superkuum Leegiheitja Geel Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Leegiheitja Autolaadija" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Leegiheitja Autolaadija Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Leegiheitja Autolaadija Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Raske Leegiheitja - Põrgutuli" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Raske Haubits - Maaväristaja" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Kiirtule Haubits - Põrgutorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Sihtmärkki Omandus Suurtükiväe Mürsud" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Sihtmärgi Omandus Suurtükiväe Mürsud Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Sihtmärgi Ennustus Suurtükiväe Mürsud" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "HE Haubitsa Mürsud" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "HE Haubitsa Mürsud Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "HE Haubitsa Mürsud Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "HEAP Haubitsa Mürsud" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "HEAP Haubitsa Mürsud Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "HEAP Haubitsa Mürsud Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Haubitsa Autolaadija" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Haubitsa Autolaadija Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Haubitsa Autolaadija Mk3" @@ -8517,57 +8534,57 @@ msgid "Fast Loader" msgstr "Kiire Laadija" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - Välkvalgus" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Tugevndatud MG Kuulid" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "APDSB MG Kuulid" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "APDSB MG Kuulid Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "APDSB MG Kuulid Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Volframi MG Kuulid" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Volframi MG Kuulid Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Volframi MG Kuulid Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Tarvitatud Uraaniumi MG Kuulid" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Tarvitatud Uraaniumi MG Kuulid Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Ahelrelva uuendus" @@ -8576,142 +8593,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Kiirtule Ahelrelva Uuendus" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Hüperkiire Tule Ahelrelva Uuendus" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Sihtmärgi Ennustavad Rakettid" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Otsi ja Hävita Raketid" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Arenenud Rakettide Lõhkepea" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Arenenud Rakettide Lõhkepea Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Arenenud Rakettide Lõhkepea Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Arenenud Rakettide Määramis Süsteem" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Arenenud Rakettide Määramis Süsteem Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Arenenud Rakettide Määramis Süsteem Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "HEAP Rakettide Lõhkepea" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "HEAP Rakettide Lõhkepea Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "HEAP Rakettide Lõhkepea Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Täiustunud Rakettide Laadimis Süsteem" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Mortiiri Sihtimis Arvuti" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Soojusjuhtivad Mortiiri Pommid" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Sihtmärgi juurde minevad Mortiiri pommid" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "HE Mortiiri Pommid" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "HE Mortiiri Pommid Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "HE Mortiiri Pommid Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "HEAP Mortiiri Pommid" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "HEAP Mortiiri Pommid Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "HEAP Mortiiri Pommid Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Mortiiri Autolaadija" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Mortiiri Autolaadija Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Mortiiri Autolaadija Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Mortiiri Kiirlaadija" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Raske Mortiir - Pommitaja" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Kiirtule Mortiir - Kiirtulemortiir" @@ -8720,367 +8737,367 @@ msgid "Target Prediction Computer" msgstr "Target Prediction Computer" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Tugevntatud Rail Nool" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Tugevntatud Rail Nool Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Tugevntatud Rail Nool Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Railkahuri Laskekiirus" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Railkahuri Laskekiirus Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Railkahuri Laskekiirus Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Stabiliseeritud Mini-Raketid" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Stabiliseeritud Mini-Raketid Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "HE Mini-Raketid" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "HE Mini-Raketid Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "HE Mini-Raketid Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "HEAP Mini-Raketid" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "HEAP Mini-Raketid Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "HEAP Mini-Raketid Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Kiire Tule Mini-Raketid" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Kiire Tule Mini-Raketid Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Kiire Tule Mini-Raketid Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Kiirtule Mini-Raketid" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Kiirtule Mini-Raketid Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Kiirtule Mini-Raketid Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Täiustunud Rakettide Juhtimine" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Rakettide Laseri Sihtija" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Soojusliikuvad Raketid" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "HEAT Raketi Lõhkepea" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "HEAT Raketi Lõhkepea Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "HEAT Raketi Lõhkepea Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "HESH Raketi Lõhkepea" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "HESH Raketi Lõhkepea Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "HESH Raketi Lõhkepea Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Rakettide Autolaadija" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Rakettide Autolaadija Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Rakettide Autolaadija Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Lancer AT Rakett" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Punkripurustaja Rakett" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Tanki Tapja Rakett" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Kuulipilduja Artefaktid" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Uus Paradigmi Juhtimiskeskus" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Collectivi Juhtimiskeskus" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Mässajate Tehas" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Mässajate Relvatorn" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Mässajate Horisontaalne Müür" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Mässajate Energiageneraator" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Mässjate Rakettipesa" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Mässajate AT-raketi pesa" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "mässajate punker" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Mässajate NurgaMüür" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Mässajate Leegiheitja Torn" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Mässajate Leegiheitja Torni Lõpp" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Vahitorn" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Kahuritorn" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefakt" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Naftaresurss" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Sild" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Hävitatud Tehas" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Ladu" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Hüt" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Naftatünn" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Vrakk" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Tanki Vrakk" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Silla Vrakk" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "furgooni Vrakk" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Sõiduki Vrakk" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Tanker Vrakk" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Küborgi Laboratoorium" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Arenenud Sõja Laboratoorium" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Ehitus Laboratoorium" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Robootiline Laboratoorium" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laseri Optika Laboratoorium" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Elektroonika Laboratoorium" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Keemia Laboratoorium" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Arenenud Lahingutegevus" @@ -9101,7 +9118,7 @@ msgid "MRL Emplacement" msgstr "MRL Paigaldus" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Railkahuri Paigaldus" @@ -9110,49 +9127,49 @@ msgid "Angel Missile Emplacement" msgstr "Ingli Rakettide Paigaldus" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Archangel Rakettide Paigaldus" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Roomikutega Cobra Remonditorn" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Punkriõhkija" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Välkvalgusväelane" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Nõelakahuriväelane" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Maandunud Transport" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Roomikutega Python Tanki Tapja" @@ -9161,37 +9178,37 @@ msgid "HPV Cannon Python Tracks" msgstr "Roomikutega Python HPV Kahur" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Pool-Roomikutega Python Keeristormi AA" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Roomikutega Python Ründekuulipildujaga" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Välkvalgus" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "VTOL Välgvalgus" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Kiirkuulipilduja Punker" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Raketi Silo" @@ -9473,336 +9490,1173 @@ msgstr "Oota kuni tehas toodab uue(d) üksuse(d)" msgid "Congratulations commander - you are ready for your first mission" msgstr "Õnnitlused komandör - sa oled valmis oma esimeseks missiooniks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "Sissetulev Ãœlekanne" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "Ãœlekanne Beeta Baasist" + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "Mayday! Mayday!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "Palun abistage!..." + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "KAMPAANIA ÃœKS" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "LÄÄNE SEKTOR" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Koit, 4. Juuli, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "Projekti HQ" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Uus Piirkond" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Hommik, 4. Juuli, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "Lend Lääne Sektorisse" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "Rühm Alfa läheneb oma sihtkohta" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Järgnev Transpordi Sihtkoht" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alfa - Lääne Sektor...." + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alfa te olete valmis õhku tõusma." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Head õnne ja head jahtimist." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "Lähenemine Maandumis Tsooni. Tiim Alfa briifingu algus." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Komandör, sa juhit Tiim Alfat, ühte kolmest otsingurühmast mis saadeti teele Projekti poolt, et leida artifakte enne Kollapsi ajast." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Sinu sihtpunkt asub lääne tsoonis." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Komandör, me saime New Paradigmidelt komandöritorni." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Komandör, me saame selle ülekande." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "Teie rünnakuid meie vastu ei jäeta karistamata." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "Nad tuleb hävitada." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Kindlusta Mandumis Tsoon ja raja edasine baas." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "Siis hävita New Paradigm-i baas." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Avage mulle oma süsteemid." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Luba ma sulatan su masinate ja küborgidega." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "Koos saame me luua uue maailma." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Kui me ei suutnud vastata muutus see ähvardavaks." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Te võite mind siin võita, aga ma tõusen taas." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Sellel on tehnoloogia ja relvad. See teab meist ja see ei ole sõbralik." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Hoiatus!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Sa sisened keelatud alale." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Naaske oma määratud tsooni, või teid hävitatakse." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Kordus.Naaske oma määratud tsooni, või teid hävitatakse." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Sõnum Lõpeb." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Sind hävitatakse." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "NEXUS, sünaptilise liidese tehnoloogia on omastatud ja saadetud su kolletsiooni." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Sa tegid hästi." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "KAMPAANIA KAKS" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "IDA SEKTOR" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Hommik, 1.September, 2100" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "Lend Ida Sektorisse" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "Rühm Alfa läheneb Beeta Baasile" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Sa pead seda kaitsma ja iga hinnaga hoidma." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "COLLECTIV" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Komandör, uus raketirünnak avastatud." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "See on tõenäoliselt sihitud sinu asukohta." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Sa pead alustama kohest evakuatsiooni Beeta Baasist ohutusse taeva." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "NASDA (PASKA) on Põhja Ameerika Strateegilise Kaitse Agentuur" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "NASDA loodi 2076. aastal, et kaitsta Põhja Ameerikat tava- ja tuumarünnakute eest. Satelliit kaitse süsteemide ehitamine algas 2081. ja lõppes 2082. aastal." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "2085.aastal tulistasis NASDA satelliidid oma tuumapommidega Maad." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "Kõik tuumapommid, mis sihiti Põhja Ameerikasse tabasid märki." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "Collectiveite Sõdurid, ma otsin NASDA Peajaama asukohta." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "Se asub kuskil sinu territooriumil." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "Leidke see mulle ja ma varustan teid edasiste relvadega võitluses Projekti vastu." + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "Järgneb NASDA Briifing..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "See on nüüd kindel, et Nexus on Kollapsi eest vastutatav." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS on end nüüd NASDA satelliitidega taasühendanud." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "See on suur oht Projektile ja meie edasise ellujäämisele" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Komandör, me avastasime just raketirünnaku nendest kordinaatidest." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "Nad ei ole osa masinast." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Collectiveite Sõdurid, rünnake ja hävitage kõik kes Masinatele vastu hakkavad." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "Rünnake ja hävitage kõik kes Masinatele vastu hakkavad." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Rünnak!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "Nexus käskis meil nüüd Projekt purustada." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "Puhasta ja hävita!!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "Collectivite Sõdurid. Te olete hästi esinenud." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "Me peame nad peatama!" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "Ãœlekande dekodeerimine..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "KAMPAANIA KOLM" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "PÕHJA SEKTOR" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Õnnitlused eduka Beeta Baasi evakueerimise puhul." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "Videvik, 3. Detsember, 2100" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "Lend Põhja Sektorisse" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "Viimne Kohtumine" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "Algab Briifing" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "Aeg on otsas komandör!!" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Komandör, me tuvastame NEXUSe väed nendel kordinaatidel..." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "Hästi tehtud Komandör, sa ei lasknud viimasel raketil startida." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "Kahju, sinu Projekti Peeakorter oleks olnud ideaalne sihtmärk." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Hea, et te pääsesite, Komandör." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "Siin Rühm Alfa.Kordan,siin Rühm Alfa. Me vajame kohest abi." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "Me oleme küborgide, laser tankide ja ründe VTOLite raske rünnaku all." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "Me oleme proovinud teie asukohta jõuda, aga meid on varitsetud." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "Me oleme selles orus, nendel kordinaatidel." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "Palun aidake." + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Komandör, tere tulemast NEXUSesse!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "Nii kahju, et sa loobusid varem minuga liitumast." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Videvik, 3.November, 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Maa, Kõrge Orbiit" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "Kollaps" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19. Jaanuar. 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Põhja Ameerika" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Tuumatalv" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Kesköö, 10. Aprill, 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Kaljumäed" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "Ohutus" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Koit, 4.Aprill, 2100" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Uus Algus" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "Need tuumapommid olid sihitud kõikide suuremate linnade pihta üle maailma. NASDA oli programeeritud alustama Kollapsi. Kui vasturünnakud käivitati, siis selle laser kaitsed ja raketi-vastased maapinna silod feilisid." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "Maailm, mida me tundsime, lõppes..." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "Tuuma Talv oli raske. Haigused ja nälg tappis suurem osa neist, kes olid tuumarünnakutes ellu jäänud. Sõjad koreatoidu purkide pärast aga veelgi rohkem." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "Me põgenesime Seattleist 86aastal. Me kuulsime, et Kaljumäed on suhteliselt radioktiivsuse vabad." + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "Me murdsime uksed ja puhastasime sisemuse laipadest." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Me olime viimaks valmis alustamaks Projekti." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Pärast mitut pikka kuud võitlust võitsime me NEXUSe" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "Sõjda, mille alustas Dr Reed, sai läbi." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Me oleme leidnud palju otsitavaid tehnoloogiaid." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "Nüüd on aeg neid kasutada, et maailm üles ehitada." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Aeglasti, tuhast välja, me tõuseme taas..." + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Hõljuk Cobra Raske-Remont" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Ratastega Viper Raskekuulipilduja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Hõljukiga Mantis Scourge" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Hõljukiga Mantis TK" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Roomikutega Cobra Raskekuulipilduja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Hõljukiga Cobra HC" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Roomikutega Scorpion Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Roomikutega Scorpion Raskekahuriga" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "VTOL Scorpion Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "VTOL Scorpion BB" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Roomikutega Viper Komandör" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Roomikutega Cobra Komandör" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Roomikutega Scorpion Komandör" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Roomikutega Mantis Komandör" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Roomikutega Cobra Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Roomikutega Mantis Raskekahur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Roomikutega Mantis Tanki Tapja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Roomikutega Mantis Scourge" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Roomikutega Scorpion Raskekuulipilduja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Roomikutega Scorpion Remont" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Hõljukiga Scorpion Raskeremont" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Hõljukiga Cobra Veoauto" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Hõljukiga Scorpion Veoauto" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Hõljukiga Mantis Veoauto" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Roomikutega Cobra Punkripurustaja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Roomikutega Scorpion Punkripurustaja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Roomikutega Mantis Punkripurustaja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Roomikutega Viper Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Pool-Roomikutega Cobra Mini-Raketid" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Roomikutega Cobra Mini-Raketid" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Roomikutega Cobra Mini-Rakettide Suurtükk" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Pool-Roomikutega Cobra Põrgutuli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Hõljukiga Python HVC" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Roomikutega Python Scourge" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Roomikutega Python Gausskahur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Roomikutega Python Impulsslaser" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Roomikutega Tiger Impulsslaser" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Roomikutega Tiger Raskelaser" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Roomikutega Wyvern Gausskahur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Roomikutega Wyvern Impulsslaser" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Roomikutega Wyvern Raskelaser" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Pool-Roomikutega Viper Kuulipilduja" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Pool-Roomikutega Viper Leegiheitja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Hõljuk Cobra Raskeremonditorn" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Ratastega Viper Raskekuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Hõljukiga Mantis Tankitapja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Roomikutega Cobra Raskekuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Hõljukiga Cobra Raskekahur " #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Ratastega Cobra Raskekuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Hõljukiga Cobra Raskekuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Roomikutega Viper Kuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Roomikutega Viper Kaksikkuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Hõljukiga Cobra Keskkahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Hõljukiga Scorpion Keskkahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Roomikutega Scorpion Keskkahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Hõljukiga Python Keskkahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Hõljukiga Python Raskekahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Roomikutega Mantis Railkahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Roomikutega Mantis Impulsslaser" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Roomikutega Python Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Roomikutega Mantis Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Roomikutega Vengeance Tankitapja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Roomikutega Tiger Raskekahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Roomikutega Tiger Nõelakahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Roomikutega Retribution Nõelakahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Roomikutega Vengeance Nõelakahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Roomikutega Vengeance Railkahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "Roomikutega Vengeance Gausskahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "Roomikutega Vengeance Gauss Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "VTOL Bug Parvpommitus" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "VTOL Bug Punkripurustaja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "VTOL Scorpion Parvpommitus" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "VTOL Scorpion Punkripurustaja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "VTOL Bug Lancer" @@ -9811,17 +10665,16 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "VTOL Bug HPV Kahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "VTOL Scorpion Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1876 -#, fuzzy msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "VTOL Scorpion Hüperkiire Kahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "VTOL Mantis Lancer" @@ -9830,137 +10683,136 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "VTOL Mantis HPV Kahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Roomikutega Mantis Remonditorn" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Roomikutega Scorpion Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Roomikutega Scorpion Raskekahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "VTOL Scorpion Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "VTOL Scorpion Punkripurustaja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Roomikutega Viper Komandör" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Roomikutega Cobra Komandör" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Roomikutega Scorpion Komandör" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Roomikutega Mantis Komandör" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Roomikutega Cobra Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Roomikutega Mantis Raskekahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Roomikutega Mantis Tankitapja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "Roomikutega Mantis Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Roomikutega Scorpion Raskekuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Roomikutega Scorpion Remont" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Hõljukiga Scorpion Raskeremondiga" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Hõljukiga Cobre Veoauto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Hõljukiga Scorpion Veoauto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Hõljukiga Mantis Veoauto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Roomikutega Cobra Punkripurustaja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Roomikutega Scorpion Punkripurustaja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Roomikutega Mantis Punkripurustaja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Roomikutega Viper Lancer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Pool-Roomikutega Cobra Mini-Raketid" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Roomikutega Cobra Mini-Raketid" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Tracks" -msgstr "Roomikutega Cobra MRA" +msgstr "Roomikutega Cobra Mini-Rakettidega" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Pool-Roomikutega Cobra Põrgupõletaja" @@ -9969,55 +10821,155 @@ msgid "HPV Cannon Python Hover" msgstr "Hõljukiga Python HPV Kahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Roomikutega Python Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Roomikutega Python Gausskahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Roomikutega Python Impulsslaser" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Roomiktega Tiger Impulsslaser" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Roomikutega Tiger Raskelaser" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Roomikutega Wyvern Gausskahur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Roomikutega Wyvern Impulsslaser" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Roomikutega Wyvern Raskelaser" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Pool-Roomikutega Viper Kuulipilduja" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Pool-roomikutega Viper Leegiheitja" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Hõljukiga Cobra Põrgupõletaja" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Pool-Roomikutega Cobra Keskkahur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Hõljukiga Python Põrgupõletaja" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Hõljukiga Python Ründekuulipilduja" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Pool-Roomikutega Python Ründekuulipilduja" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Pool-Roomikutega Scorpion Raskekuulipilduja" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Hõljukiga Mantis Ründekahur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Hõljukiga Leopard Impulsslaser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Hõljukiga Panther Impulsslaser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Hõljukiga Tiger Railkahur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Hõljukiga Tiger Impulsslaser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Roomikutega Wyvern Plasmakahur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Roomikutega Wyvern Scourge Rakett" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Hõljukiga Retribution Välkvalguslaser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Pool-Roomikutega Cobra Mini-Raketid" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Pool-Roomikutega Viper MRA" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "VTOL Mantis Fosforpommitus" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "VTOL Mantis Täispommitus" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "VTOL Retribution Täispommitus" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "VTOL Retaliation Scourge Rakett" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "Ehitamis kiirus +10%" @@ -10631,7 +11583,7 @@ msgid "Upgraded battlefield computer system" msgstr "Uuendatud lahinguvälja arvutisüsteem" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Küborgi Transport" @@ -10660,7 +11612,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Pool-Roomikutega Cobra MRA" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Radari Detektor" @@ -10673,633 +11625,645 @@ msgid "Nexus Link" msgstr "Nexus Link" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Nexus Link" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Raskebetooni Müür" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Põrgutule Punker" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Tornaado AA Plats" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Keeristormi AA Plats" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Impulsslaseri Hardpoint" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Impulsslaseri Torn" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Seraph Rakettide Paigaldus" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "MRA" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Laser Satelliidi Juhtkeskus" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "VTOL Parvpommitus" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Collectivite NurgaMüür" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "NEXUSe Müür" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Nexuse NurgaMüür" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Raskebetoon Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Terasbetoon" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Terasbetoon Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Terasbetoon Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Mäng" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "Hüperkiire Kahuri Paigaldus" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Seraphi Rakettide Patarei" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Flamer Guard Tower" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Hüperkiire Kahuri Hardpoint" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Automatiseeritud Tootmine" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Automatiseeritud Tootmine Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Automatiseeritud Tootmine Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Robootiline Tootmine" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Robootiline Tootmine Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Robootiline Tootmine Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Arenenud Tootmine" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Arenenud Tootmine Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Ise-Kopeeriv Tootmine" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Arenenud Tootmine Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Automatiseeritud Remontimiskeskus Mk2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Automatiseeritud Remontimiskeskus Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Robootiline Remontimiskeskus" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Robootiline Remontimiskeskus Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Arenenud Remontimiskeskus" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Robootiline Remontimiskeskus Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Arenenud Remontimiskeskus Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Arenenud Remontimiskeskus Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Automaat-Remont" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Raske Remonditorn" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "NEXUSe Sissetungi Programm" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Nexuse Vastupanu Skeem" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Nexuse Vastupanu Skeem Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Nexuse Vastupanu Skeem Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Parvpommitus" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "HE Pommi Mürsk" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Täiustunud Pommi Lõhkepea" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Arenenud Pommi Lõhkepea" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Haubitsa Kiirlaadija" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Kiirtule Ahelrelv" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Rail Sihtmärgi Ennustus Arvuti" -#: data/mp/messages/strings/names.txt:1174 -#, fuzzy +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" -msgstr "HE Mini-Raketid" +msgstr "HESH Mini-Raketid" -#: data/mp/messages/strings/names.txt:1175 -#, fuzzy +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" -msgstr "HE Mini-Raketid Mk2" +msgstr "HESH Mini-Raketid Mk2" -#: data/mp/messages/strings/names.txt:1176 -#, fuzzy +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" -msgstr "HE Mini-Raketid Mk3" +msgstr "HESH Mini-Raketid Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Ründekuulipilduja Torn" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Roomikutega Cobra Remont" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "Roomikutega Python Hüperkiire Kahur" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Hõljukiga Cobra Punkripurustaja" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Sensori Uuendus Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Sensori Uuendus Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Auruturbiini Generaator Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Gaasiturbiini Generaator Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Gaasiturbiini Generaator Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Auruturbiin Generaator Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Termiidileegihaitja Küborg" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Termiidileegihaitja" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Küborgi Grenaadier" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenaadier" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Lahingu Ehitaja" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Küborgi Mehaanik" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Süütepommi Haubits" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Süütepommi Haubitsa Paigaldus" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Plasmiite Leegiheitja" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Plasmiit Leegiheitja Punker" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Süütepommi Mortiir" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Süütepommi Mortiir Kaevik" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Küborgi Supertihe Soojussoomus" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Küborgi Supertihe Soojussoomus Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Küborgi Supertihe Soojussoomus Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Sõidukite Supertihe Soojussoomus" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Sõidukite Supertihe Soojussoomus Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Sõidukite Supertihe Soojussoomus Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super Raskekahuri Küborg" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Automaat-Kahuri Küborg" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super HPV Küborg" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Tanki Tapja Küborg" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Raske Laser" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "VTOL Raske Laser" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Raskelaseri Paigaldus" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Kaksik Ründekahur" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Kaksik Ründekahuri Punker" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Satelliidi Ãœleslaadimis Keskus" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Lai Spektrisensor" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Lai Spektrisensori Torn" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Plasma Kahur" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Plasma Kahuri Paigaldus" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Impulsslaseri Küborg" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Railkahuriväelane" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super Scourge Küborg" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Nexus Link Torn" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "EMP Kahur" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "EMP Kahuritorn" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Massiivne Draiveri Kindlus" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Massiivne Draiver" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Kahuri Kindlus" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Raske Raketi Bastion" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Raketi Kindlus" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "Raske Kere - Wyvern" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Wyvern" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "Mitmetorni Kere - Dragon" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragon" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Superkuum Plasmiidi geel" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Superkuum Plasmiidi geel Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Superkuum Plasmiidi geel Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "EMP Mortiir" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "EMP Mortiiri Kaevik" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Tormitooja AA Laser" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Tormitooja Paigaldus" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Hävitaja Hardpoint" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Tuulispasa Hardpoint" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Keeritormi Hardpoint" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Kättemaksja Hardpoint" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Kaksik Ründekuulipilduja" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Kaksik Ründekuulipilduja Hardpoint" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "VTOL Parvpommitus" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Plasmiit Pomm" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "VTOL EMP Raketiheitja" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "EMP Raketiheitja" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Komandör II" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Komandör III" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Komandör IV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "VTOL Bug Hüperkiire Kahur" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "VTOL Scorpion Hüperkiire Kahur" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "VTOL Mantis Hüperkiire Kahur" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "Roomikutega Cobra MRA" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "Hõljukiga Python Hüperkiire Kahur" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "VTOL Retribution Täispommitus" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11429,31 +12393,27 @@ msgstr "Traditsiooniline Hiina Keel" msgid "Latin" msgstr "Ladina Keel" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Sisesta salasõna siia" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Ei suuda peaserveri nime lahendada (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Ei suuda lobby serveriga suhelda! Kas port %u on väljaminevale liiklusele avatud?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", mods:" - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11603,15 +12563,15 @@ msgstr "võõrustaja" msgid "go directly to host screen" msgstr "mine otse võõrustaja aknasse" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Mägija" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Uus Sõiduk" @@ -11650,18 +12610,18 @@ msgstr "Mootori Võimsus" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Kaal" @@ -11675,656 +12635,654 @@ msgstr "Täielik Energiakulu" msgid "Total Body Points" msgstr "Kokku Kerepunkte(HP)" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Energia Kulu" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transporter" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hüdra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Sensori Ulatus" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Sensori Tugevus" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM Tugevus" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Ehitamispunktid" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Ulatus" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Kahju" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Laskekiirus" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Kiirus Õhus" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Kiirus Teel" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Kiirus Maastikul" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Kiirus Vees" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Relvad" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Süsteemid" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Mängija lahkus" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Mängija Väjavisatud" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." msgstr "EI Saa Ehitada. Naftaresurss Põleb." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Kahju %d%% - Kogemus %d, %s" -#: src/display.c:1857 +#: src/display.c:1875 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s -Liitlane - Kahju %d%% - Kogemus %d, %s" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" msgstr "Veoautol kästi Naftapuurtorn ehitada" -#: src/display.c:2048 +#: src/display.c:2078 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Veoautol kästi Naftapuurtorn ehitada" -#: src/display.c:2049 +#: src/display.c:2079 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Veoautol kästi Naftapuurtorn ehitada" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Ãœksus Kaotatud!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Ehitis taastatud" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Grupp %u valitud - %u Ãœksus" msgstr[1] "Grupp %u valitud - %u Ãœksust" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u üksus määratud gruppi %u" msgstr[1] "%u Ãœksust määratud Gruppi %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Grupi %u Vaade - %u Ãœksus" msgstr[1] "Grupi %u Vaade - %u Ãœksust" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Aligning with Group %u - %u Unit" msgstr[1] "Aligning with Group %u - %u Units" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Uustulnuk" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Algaja" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Treenitud" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Regulaar" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professionaal" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Eliit" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Eriline" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Kangelane" -#: src/frontend.c:252 +#: src/frontend.c:253 msgid "Single Player" msgstr "Ãœksik Mäng" -#: src/frontend.c:253 +#: src/frontend.c:254 msgid "Multi Player" msgstr "Mitmik Mäng" -#: src/frontend.c:254 -#: src/frontend.c:312 +#: src/frontend.c:255 +#: src/frontend.c:313 msgid "Tutorial" msgstr "Õpetus" -#: src/frontend.c:255 +#: src/frontend.c:256 msgid "Options" msgstr "Seaded" -#: src/frontend.c:256 +#: src/frontend.c:257 msgid "View Intro" msgstr "Näita Sissejuhatust" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" msgstr "Välju Mängust" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "PEA MENÜÜ" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "Kiir Mäng" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "ÕPETUSED" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Tagasi" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "Uus Kampaania" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Alusta Ãœksillahingut" -#: src/frontend.c:372 +#: src/frontend.c:373 msgid "Challenges" msgstr "Väljakutse" -#: src/frontend.c:373 +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "Laadi Mäng" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "ÃœKSIK MÄNG" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 #: src/mission.c:2526 #: src/mission.c:2631 msgid "Load Saved Game" msgstr "Laadi Salvestatud Mäng" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "MITMIKMÄNG" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Võõrusta Mängu" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "Liitu Mängu" -#: src/frontend.c:584 +#: src/frontend.c:585 #: src/multiint.c:1254 msgid "OPTIONS" msgstr "SEADED" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "Mängu Seaded" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "Graafika Seaded" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "Video Seaded" -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "Audio Seaded" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "Hiire Seaded" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" msgstr "Nuppude Vasted" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "Video Taasesitus" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "1X" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "Täisaken" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "Ekraani Värin" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "Sees" -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "Väljas" -#: src/frontend.c:686 +#: src/frontend.c:687 #: src/multiint.c:1323 msgid "Fog" msgstr "Udu" -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "Udu" -#: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:694 +#: src/frontend.c:761 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Sõjaudu" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Suptiitrid" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Varjud" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" msgstr "GRAAFIKA SEADED" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Hääle Volüüm" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "FX Volüüm" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Muusika Volüüm" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" msgstr "HELI SEADED" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "Graafika Mode*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "Akendatud" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Resolution*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Tekstuuri suurus" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" msgstr "Vertical sync*" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" msgstr "* Võtab efekti kui mäng uuesti käivitatakse" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" msgstr "VIDEO SEADED" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" msgstr "Tagasipööre" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "Püüniskursor" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" msgstr "Värvilised Kursorid*" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" msgstr "Vahetatud Hiire Nupud" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" msgstr "* May negatively affect performance" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" msgstr "HIIRE SEADED" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "Raskusaste" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "Kerge" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "Normaalne" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "Raske" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "Kerimiskiirus" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "Keel" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" msgstr "Ãœksuse Värv" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "MÄNGU SEADED" -#: src/frontend.c:1693 +#: src/frontend.c:1706 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Aktiivsed mods:" +msgid "Mod: " +msgstr "Mod:" -#: src/hci.c:1363 +#: src/hci.c:1360 msgid "MAP SAVED!" msgstr "KAART SALVESTATUD!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 #, fuzzy msgid "GAME SAVED: " msgstr "MÄNG SALVESTATUD!" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" msgstr "Failed to create building" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." msgstr "Mängija %u teeb sohki (debug menu) Talle uus ehitis: %s." -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." msgstr "Mängija %u teeb sohki (debug menu) talle uus tunnus: %s." -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Mängija %u teeb sohki(debug menu) talle uus droid: %s." -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" msgstr "Komandörid (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" msgstr "Intelligentsus Ekraan (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" msgstr "Tootmine (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" msgstr "Konstrueerimine (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" msgstr "Uurimine (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" msgstr "Ehitamine (F3)" -#: src/hci.c:3891 +#: src/hci.c:3876 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energia" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" msgstr "Tile" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" msgstr "Place tiles on map" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" msgstr "Ãœksus" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" msgstr "Paiguta kaartile üksus" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" msgstr "Ehitis" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" msgstr "Paiguta kaartile ehitis" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" msgstr "Saavutus" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" msgstr "Place Features on map" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" msgstr "Paus või Pausi mahavõtmine" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" msgstr "Align height of all map objects" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Välju" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" msgstr "Välju Mängust" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Progressi Riba" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" msgstr "Tehase Saatmis Koht" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" msgstr "Tsükkel tootmine" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "Tab Scroll left" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "Tab Scroll right" @@ -12367,6 +13325,14 @@ msgstr "Mäng ei saa ilma võõrustajata jätkuda." msgid "--> QUIT <--" msgstr "--> LOOBU <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12382,7 +13348,7 @@ msgid "Power Accrued" msgstr "Energia Kogunenud" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSED" @@ -12509,287 +13475,287 @@ msgstr "Määra VTOL Tehase Tootmine" msgid "Circle" msgstr "Ring" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Sorry, see sohk on mitmikmängust eemaltatud." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Hoiatus! See sohk on vigane. Me soovitame seda mitte kasutada." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Lase meil näha mida saa näed!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "Suurepärane, relva & sensori kuvar on väljas!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:358 +#, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Mängija %u teeb sohki(debug menu) talle uus droid: %s." +msgstr "Mängija %u teeb sohki, tehes endale uue %s(de) armee." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Mängija %u) teeb sohki:%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Hard as nails!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Takings thing easy!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 big ones!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Power overwhelming" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Back to normality!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Getting tricky!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Twice as nice!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS display is enabled." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS display is disabled." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Player %u) kasutab pettust :Num Droids: %d Num Structures: %d Num Features: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Infinite power disabled" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Infinite power enabled" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "All items made available" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Fog on" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Fog off" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Warning! This cheat can cause dire problems later on! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "Missiooni Lõpp" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "PETTUSED ON NÜÜD LUBATUD!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "PETTUSED ON NÜÜD KEELATUD!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Jumala mode sees" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Jumala mode väljas" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "View Aligned to North" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "Püüniskursor %s" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "Researched EVERYTHING for you!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Mängija %u) kasutab pettust :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "Uuritud" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Näitab energjaribasid kui valitud" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Näitab alati üksuste energiaribasid" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Näitab alati üksuste ja ehitiste energiaribasid" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demo mode off - Returning to normal game mode" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "Debug menüü on avatud" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Unable to locate any resource extractors!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, the weather outside is frightful... SNOW" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... RAIN" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Forecast : Clear skies for all areas... NO WEATHER" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Warning! This can have drastic consequences if used incorrectly in missions." -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "Kõik vaenlased pettusega hävitatud" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "Hävitab valitud üksused ja ehitised" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Mängija HQ Keskel, Suund PÕHI" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Võimetu HQ leidma!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "Formatsiooni kiiruse limiit eemaldati mängust vea tõttu" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "Vertikaalse pöörlemise suund: Normaalne" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "Vertikaalse pöörlemise suund: Flipped" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "Ekraani värin, kui miski sureb: Väljas" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "Ekraani värin, kui miski sureb: Sees" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Sorry, aga mängu kiirust ei saa mitmikmängus muuta." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Mängu Kiirus Taastatud" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Mängu Kiirus Suurendatud %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Mängu Kiirus Vähendatud %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Build menu will reopen" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Build menu will not reopen" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar showing friend-foe colours" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar showing player colours" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar näitab ainult objekte" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar blending terrain and height" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar näitab terraini" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "Radar näitab paljastatud terraini" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar näitab kõrgust" @@ -13208,8 +14174,8 @@ msgstr "Jätka Mängu" msgid "GAME SAVED :" msgstr "MÄNG SALVESTATUD!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "Sa leidsid naftatünnist %u energiat" @@ -13511,21 +14477,21 @@ msgstr "Võõrustaja lõi %s mängust välja!" msgid "Host is Starting Game" msgstr "Võõrustaja Alustab Mängu" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Mängijad" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "Kaarti Saatmine: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "Kaart: %d%% allalaaditud" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "VÕÕRUSTJA" @@ -13534,27 +14500,27 @@ msgstr "VÕÕRUSTJA" msgid "Players Still Joining" msgstr "Mängijad Ikka Liituvad" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s Lahkus mängust" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "%d -le Failide saatmine katkestatud." -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "Mängijal %s (%u) on vale mod ja ta löödi mängust välja" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s Liitus Mänguga" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Süsteemi sõnum:" @@ -13564,7 +14530,7 @@ msgstr "Kohandatakse Vaikimisi ja Naase Eelmisele Ekraanile" #: src/multilimit.c:316 msgid "Limits reset to default values" -msgstr "" +msgstr "Limiidide muutmine algväärtusteks" #: src/multimenu.c:609 msgid "Technology level 1" @@ -13640,47 +14606,47 @@ msgstr "Anna Mängijale Energiat" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Mängija %s väljalöömine, sest ta proovis infokontrollist mõõda pääseda!" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "(Liitlased" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(eraviisiline" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[kehtetu]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Roheline" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oranð" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Hall" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Must" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Punane" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Sinine" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Roosa" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Helesinine" @@ -13823,12 +14789,12 @@ msgstr "SA OLED VÕIDUKAS" msgid "YOU WERE DEFEATED!" msgstr "SIND VÕIDETI!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Signaal saadud %s -lt!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Signaal %d" @@ -13857,63 +14823,63 @@ msgstr "Võimetu leidma Sensorüksusi!" msgid "Unable to locate any Commanders!" msgstr "Võimetu leidma Komandöre!" -#: src/structure.c:2838 +#: src/structure.c:2823 #, fuzzy msgid "Command Control Limit Reached - Production Halted" msgstr "Kontroll Limiit Saavutatud - Tootmine Peatatud" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Ãœksus määratud" msgstr[1] "%s - %u Ãœksused määratud" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Kahju %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - %u Ãœhendatud %u -st" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Elektrooniliselt Kahjustatud" -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "Elektrooniline Autasu - Nägemis Raport" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "Tehase Auhind - Liikumissüsteem" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" msgstr "Tehase Autasu - Kere" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "Tehase Autasu - Relv" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" msgstr "Tehase Autasu - Midagi" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "Remontimiskeskuse Autasu - Remont" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" msgstr "Remontimiskeskuse Autasu - Midagi" @@ -13922,7 +14888,7 @@ msgstr "Remontimiskeskuse Autasu - Midagi" msgid "Launch Transport" msgstr "Saada Transport Teele" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Abiväed Maanduvad" @@ -13960,6 +14926,13 @@ msgstr "Versioon %s%s%s%s" #~ msgid "You found %u power in an oil drum" #~ msgstr "Sa leidsid naftatünnist %u energiat" +#, fuzzy +#~ msgid ", mod: " +#~ msgstr ", mods:" + +#~ msgid "Active mods: " +#~ msgstr "Aktiivsed mods:" + #~ msgid "Warning: Player %s did not send a data check, and may be cheating." #~ msgstr "Hoiatus: Mängija %s ei saatnud info kontrolli, ja võib sohki teha." @@ -14009,12 +14982,6 @@ msgstr "Versioon %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "Peata Mitmikmängu Audio" -#~ msgid "you are being a jerk." -#~ msgstr "sa oled idikas" - -#~ msgid "Game" -#~ msgstr "Mäng" - #~ msgid "Mayhem" #~ msgstr "Mayhem" @@ -14362,33 +15329,15 @@ msgstr "Versioon %s%s%s%s" #~ msgid "Commander" #~ msgstr "Komandör" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Õnnitlused Uus Paradigmi võitmise puhul." - #~ msgid "This sector is now secure." #~ msgstr "See sector on nüüd kindlustatud." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Kui me ei suutnud vastata muutus see ähvardavaks." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Nexus eemaldas end jätmata jälgi" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "Nexuse Sissetungi Programmil on ühendus Reed Korporatsiooniga." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Nexusel on tehnoloogia ja relvad ja ei ole sõbralik." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Collectivite Sõdurid..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Hävitage ja tapke kõik kes Masinatele vastu hakkavad." - -#~ msgid "Attack!" -#~ msgstr "Rünnak!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Reactori paiga analüüs näitab Collective" @@ -14473,9 +15422,6 @@ msgstr "Versioon %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Saabuv Õhurünnak" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Rühm Alfa Hävitatud" - #~ msgid "Team Beta Eradicated" #~ msgstr "Rühm Beeta Hävitatud" diff --git a/po/fi.po b/po/fi.po index 9602427c5..03188cdca 100644 --- a/po/fi.po +++ b/po/fi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-09 10:33+0000\n" "Last-Translator: Lartza \n" "Language-Team: Finnish \n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1947,7 +1947,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2964,7 +2964,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2986,7 +2986,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2995,7 +2995,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3004,7 +3004,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3040,7 +3040,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3171,7 +3171,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3849,14 +3849,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3868,14 +3868,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4013,7 +4013,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5305,6 +5321,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5744,7 +5761,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5753,7 +5770,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5780,7 +5797,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5811,7 +5828,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5828,7 +5845,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5852,7 +5869,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5864,7 +5881,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5874,7 +5891,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5891,7 +5908,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5905,26 +5922,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5988,7 +6005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -5997,9 +6014,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6009,8 +6026,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6019,7 +6036,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6113,8 +6130,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6218,14 +6235,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6247,7 +6264,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6275,8 +6292,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6284,15 +6301,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6316,7 +6333,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6352,7 +6369,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6364,7 +6381,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6376,7 +6393,7 @@ msgstr "" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "" @@ -6388,7 +6405,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6409,8 +6426,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6421,30 +6438,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6455,27 +6472,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6486,29 +6503,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6518,168 +6535,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6690,139 +6707,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6833,80 +6850,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6916,74 +6933,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6992,62 +7009,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7056,22 +7073,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7088,307 +7105,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7403,15 +7420,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7420,55 +7437,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7486,15 +7503,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7505,49 +7522,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7585,54 +7602,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7669,172 +7686,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7844,84 +7861,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7942,292 +7959,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8236,17 +8253,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8263,252 +8280,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8517,57 +8534,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8576,142 +8593,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8720,367 +8737,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9101,7 +9118,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9110,49 +9127,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9161,37 +9178,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9473,336 +9490,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9811,7 +10664,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9820,7 +10673,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9829,127 +10682,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9958,7 +10811,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9967,55 +10820,155 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10635,7 +11588,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10664,7 +11617,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10677,632 +11630,645 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Peli" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Komentajat (F6)" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Komentajat (F6)" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11438,31 +12404,40 @@ msgstr "" msgid "Latin" msgstr "latina" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Tallenna peli" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11612,15 +12587,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Pelaaja" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11661,18 +12636,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Paino" @@ -11686,192 +12661,192 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Vahinko" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Pelaaja" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Pelaaja" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Vahinko %d%% - Kokemus %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Vahinko %d%% - Kokemus %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "" -#: src/display.c:2048 +#: src/display.c:2047 msgid "2 trucks ordered to build Oil Derrick" msgstr "" -#: src/display.c:2049 +#: src/display.c:2048 #, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "" -#: src/droid.c:3253 +#: src/droid.c:3278 #, fuzzy msgid "Professional" msgstr "Ammattilainen" -#: src/droid.c:3254 +#: src/droid.c:3279 #, fuzzy msgid "Veteran" msgstr "Veteraani" -#: src/droid.c:3255 +#: src/droid.c:3280 #, fuzzy msgid "Elite" msgstr "Eliitti" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Sankari" @@ -11919,11 +12894,11 @@ msgstr "" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Palaa" @@ -12005,19 +12980,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Kokoruutu" @@ -12026,43 +13001,42 @@ msgid "Screen Shake" msgstr "Ruudn tärinä" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Päällä" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Pois päältä" @@ -12072,152 +13046,151 @@ msgid "Fog" msgstr "Sumu" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Tekstitykset" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Varjot" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "PELIASETUKSET" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "PELIASETUKSET" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Ikkunoitu" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "Resoluutio*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "PELIASETUKSET" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Peliasetukset" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "PELIASETUKSET" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Vaikeustaso" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Helppo" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Vaikea" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Vieritysnopeus" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Kieli" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "PELIASETUKSET" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12251,107 +13224,107 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Komentajat (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Valmista (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Suunnittele (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Tutki (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Rakenna (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 #, fuzzy msgid "Unit" msgstr "Yksikkö" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 #, fuzzy msgid "Place Structures on map" msgstr "Vihollisrakennukset: %u" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Lopeta" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Poistu pelistä" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Edistymispalkki" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Jatkuva tuotanto" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12394,6 +13367,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12408,7 +13389,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "" @@ -12535,288 +13516,288 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Tutki (F2)" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13237,8 +14218,8 @@ msgstr "Jatka peliä" msgid "GAME SAVED :" msgstr "Peli tallennettu" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13546,21 +14527,21 @@ msgstr "" msgid "Host is Starting Game" msgstr "" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Pelaajat" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13569,27 +14550,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "" @@ -13676,48 +14657,48 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Liittoumat" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Vihreä" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oranssi" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Harmaa" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Musta" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Punainen" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Sininen" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Pinkki" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Syaani" @@ -13860,12 +14841,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13894,62 +14875,62 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -13958,7 +14939,7 @@ msgstr "" msgid "Launch Transport" msgstr "Laukaise kuljetus" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Lisäjoukot laskeutuvat" @@ -14012,8 +14993,5 @@ msgstr "" #~ msgid "Swedish" #~ msgstr "ruotsi" -#~ msgid "Game" -#~ msgstr "Peli" - #~ msgid "Load Campaign" #~ msgstr "Lataa kampanja" diff --git a/po/fr.po b/po/fr.po index e78353346..b427f031e 100644 --- a/po/fr.po +++ b/po/fr.po @@ -14,23 +14,23 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2009-05-15 21:52+0100\n" -"Last-Translator: gesierfou \n" +"POT-Creation-Date: 2010-05-04 15:59+0200\n" +"PO-Revision-Date: 2010-04-21 08:32-0500\n" +"Last-Translator: Gilles J. Séguin \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Launchpad-Export-Date: 2008-07-19 19:37+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Poedit-Language: French\n" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-Basepath: ..\n" +"X-Generator: Launchpad (build Unknown)\n" #: data/base/messages/messages.rmsg:4 msgid "Structure Research Completed" -msgstr "Recherche pour Structure Achevée" +msgstr "Recherche pour Structure complétée" #: data/base/messages/messages.rmsg:14 msgid "Power Research Completed" @@ -540,7 +540,7 @@ msgstr "Augmente la vitesse de construction" #: data/mp/messages/resmessages23.rmsg:46 #: data/mp/messages/resmessages3.rmsg:514 msgid "All trucks upgraded automatically" -msgstr "Amélioration de tous les véhicules de construction automatique" +msgstr "Mise à jour de tous les véhicules de construction automatique" #: data/base/messages/resmessages12.rmsg:69 #: data/base/messages/resmessages1.rmsg:4 @@ -602,7 +602,7 @@ msgstr "Portée des radars de contre-batterie augmentée" #: data/mp/messages/resmessages23.rmsg:59 #: data/mp/messages/resmessages3.rmsg:527 msgid "All CB sensors upgraded automatically" -msgstr "Amélioration automatique des radars de contre-batterie" +msgstr "Mise à jour de tous les radars de contre-batterie" #: data/base/messages/resmessages12.rmsg:95 #: data/base/messages/resmessages12.rmsg:212 @@ -619,7 +619,7 @@ msgstr "Amélioration automatique des radars de contre-batterie" #: data/mp/messages/resmessages3.rmsg:888 #: data/mp/messages/resmessagesall.rmsg:212 msgid "Cannon Upgrade" -msgstr "Amélioration pour Canon" +msgstr "mise à jour du Canon" #: data/base/messages/resmessages12.rmsg:96 #: data/mp/messages/resmessages12.rmsg:96 @@ -646,7 +646,7 @@ msgstr "Précision des Canons accrue" #: data/mp/messages/resmessages3.rmsg:891 #: data/mp/messages/resmessagesall.rmsg:215 msgid "All cannons upgraded automatically" -msgstr "Amélioration automatique des canons" +msgstr "Mise à jour automatique des canons" #: data/base/messages/resmessages12.rmsg:108 #: data/base/messages/resmessages1.rmsg:602 @@ -658,7 +658,7 @@ msgstr "Amélioration automatique des canons" #: data/mp/messages/resmessagesall.rmsg:771 #: data/mp/messages/strings/resstrings.txt:802 msgid "Flamer Upgrade" -msgstr "Amélioration pour Lance-Flammes" +msgstr "Mise à jour des Lance-Flammes" #: data/base/messages/resmessages12.rmsg:109 #: data/base/messages/resmessages12.rmsg:213 @@ -685,7 +685,7 @@ msgstr "Cadence de tir des lances-flammes améliorée" #: data/mp/messages/resmessagesall.rmsg:774 #: data/mp/messages/strings/resstrings.txt:805 msgid "All flamers upgraded automatically" -msgstr "Amélioration automatique des lances-flammes" +msgstr "Mise à jour automatique des lances-flammes" #: data/base/messages/resmessages12.rmsg:121 #: data/base/messages/resmessages1.rmsg:537 @@ -862,7 +862,7 @@ msgstr "Résistance : Moyenne" #: data/mp/messages/strings/resstrings.txt:886 #: data/mp/messages/strings/resstrings.txt:898 msgid "Machinegun Upgrade" -msgstr "Amélioration pour Mitrailleuse" +msgstr "Mitrailleuse: mis à jour" #: data/base/messages/resmessages12.rmsg:135 #: data/mp/messages/resmessages12.rmsg:135 @@ -898,7 +898,7 @@ msgstr "Cadence de tir des Mitrailleuses augmentée" #: data/mp/messages/strings/resstrings.txt:889 #: data/mp/messages/strings/resstrings.txt:901 msgid "All machineguns upgraded automatically" -msgstr "Amélioration automatique des mitrailleuses" +msgstr "Mise à jour automatique des mitrailleuses" #: data/base/messages/resmessages12.rmsg:147 #: data/base/messages/resmessages1.rmsg:667 @@ -1001,7 +1001,7 @@ msgstr "Résistance: Très faible" #: data/mp/messages/resmessages3.rmsg:1187 #: data/mp/messages/strings/resstrings.txt:948 msgid "Mortar Upgrade" -msgstr "Amélioration pour Mortier" +msgstr "Mortier: mis à jour" #: data/base/messages/resmessages12.rmsg:161 #: data/mp/messages/resmessages12.rmsg:161 @@ -1031,7 +1031,7 @@ msgstr "Précision des Mortiers accrue" #: data/mp/messages/resmessages3.rmsg:1190 #: data/mp/messages/strings/resstrings.txt:951 msgid "All mortars upgraded automatically" -msgstr "Amélioration automatique des mortiers" +msgstr "Mise à jour de tous les mortiers" #: data/base/messages/resmessages12.rmsg:174 #: data/mp/messages/resmessages12.rmsg:174 @@ -1083,7 +1083,7 @@ msgstr "Fort contre: Véhicules et Emplacements" #: data/mp/messages/resmessagesall.rmsg:173 #: data/mp/messages/strings/resstrings.txt:1008 msgid "Rocket Upgrade" -msgstr "Amélioration pour Roquette" +msgstr "Roquette: mis à jour" #: data/base/messages/resmessages12.rmsg:200 #: data/mp/messages/resmessages12.rmsg:200 @@ -1109,7 +1109,7 @@ msgstr "Cadence de tir des Lance-Roquettes améliorée" #: data/mp/messages/resmessagesall.rmsg:176 #: data/mp/messages/strings/resstrings.txt:1011 msgid "All rockets upgraded automatically" -msgstr "Amélioration automatique des lances-roquettes" +msgstr "Mise à jour de tous les lances-roquettes" #: data/base/messages/resmessages12.rmsg:214 #: data/base/messages/resmessages3.rmsg:890 @@ -1288,7 +1288,7 @@ msgstr "Blindage Cinétique et Résistance augmentés" #: data/mp/messages/strings/resstrings.txt:36 #: data/mp/messages/strings/resstrings.txt:46 msgid "All Cyborgs upgraded automatically" -msgstr "Amélioration automatique des Cyborgs" +msgstr "Mise à jour de tous les Cyborgs" #: data/base/messages/resmessages1.rmsg:43 #: data/base/messages/resmessages1.rmsg:56 @@ -1446,7 +1446,7 @@ msgstr "Puissance Défensive: Faible" #: data/base/messages/resmessages1.rmsg:122 #: data/mp/messages/resmessages1.rmsg:122 msgid "Armored guard tower with Mini-Pod Rocket" -msgstr "Tour de défense à Mini-Roquettes" +msgstr "Tour renforcé avec Mini-nacelle de Roquettes" #: data/base/messages/resmessages1.rmsg:135 #: data/mp/messages/resmessages1.rmsg:135 @@ -1512,7 +1512,7 @@ msgstr "Nouveau Bâtiment Disponible" #: data/base/messages/resmessages1.rmsg:239 #: data/mp/messages/resmessages1.rmsg:239 msgid "New Repair Facility Repairs Damaged Units" -msgstr "Le Centre de Réparation Répare les Unités Endommagées" +msgstr "L'atelier de Réparation Répare les Unités Endommagées" #: data/base/messages/resmessages1.rmsg:240 #: data/mp/messages/resmessages1.rmsg:240 @@ -1522,7 +1522,7 @@ msgstr "Utiliser la Console de Commande pour envoyer des unités en réparation" #: data/base/messages/resmessages1.rmsg:241 #: data/mp/messages/resmessages1.rmsg:241 msgid "Or select the Repair Facility as a unit's target" -msgstr "Ou sélectionner le Centre de Réparation comme cible d'une unité" +msgstr "Ou sélectionner l'atelier de Réparation comme cible d'une unité" #: data/base/messages/resmessages1.rmsg:251 #: data/base/messages/resmessages2.rmsg:329 @@ -1533,7 +1533,7 @@ msgstr "Ou sélectionner le Centre de Réparation comme cible d'une unité" #: data/mp/messages/resmessages3.rmsg:420 #: data/mp/messages/strings/resstrings.txt:359 msgid "Repair Facility Improved" -msgstr "Centre de Réparation amélioré" +msgstr "Atelier de Réparation amélioré" #: data/base/messages/resmessages1.rmsg:252 #: data/mp/messages/resmessages1.rmsg:252 @@ -1589,7 +1589,7 @@ msgstr "Production de Cyborgs Améliorée" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Production de Cyborgs Automatisée" @@ -1621,8 +1621,8 @@ msgstr "Toutes les usines à Cyborgs améliorées automatiquement" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Usine de Cyborgs" @@ -1738,7 +1738,7 @@ msgstr "Augmente la vitesse de recherche" #: data/base/messages/resmessages1.rmsg:345 #: data/mp/messages/resmessages1.rmsg:346 msgid "Use a truck to add the module to a research facility" -msgstr "Utilisez un véhicule de construction pour ajouter un module" +msgstr "Utilisez un camion pour ajouter un module au centre de recherche" #: data/base/messages/resmessages1.rmsg:355 #: data/base/messages/resmessages2.rmsg:368 @@ -1783,7 +1783,7 @@ msgstr "Augmente la résistance aux dégâts" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Matériaux de Construction Améliorés" @@ -1951,12 +1951,12 @@ msgstr "Coûts et délais de production similaires au Python" #: data/mp/messages/resmessages3.rmsg:680 #: data/mp/messages/strings/resstrings.txt:592 msgid "Vehicle Engine Upgrade" -msgstr "Amélioration du Moteur" +msgstr "Moteur: mis à jour" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Moteur à Injection" @@ -2045,7 +2045,7 @@ msgstr "Vitesse: Moyenne" #: data/base/messages/resmessages1.rmsg:499 #: data/mp/messages/resmessages1.rmsg:500 msgid "Amphibious hover propulsion" -msgstr "Aéroglisseur amphibie" +msgstr "Propulsion d'aéroglisseur amphibie" #: data/base/messages/resmessages1.rmsg:500 #: data/base/messages/resmessages1.rmsg:526 @@ -2113,7 +2113,7 @@ msgstr "Vitesse: Lente" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Roues" @@ -2150,7 +2150,7 @@ msgstr "Lance-Flammes au gel d'Oxyde de Propylène" #: data/mp/messages/resmessagesall.rmsg:370 #: data/mp/messages/strings/resstrings.txt:796 msgid "Best Targets: Bunkers, wheeled and hover vehicles" -msgstr "Fort contre: Bunkers, véhicules à roues et aéroglisseurs" +msgstr "Fort contre: Abris, véhicules à roues et aéroglisseurs" #: data/base/messages/resmessages1.rmsg:592 #: data/mp/messages/resmessages1.rmsg:593 @@ -2241,7 +2241,7 @@ msgstr "Fort contre: Véhicules à roues et aéroglisseurs" #: data/mp/messages/strings/resstrings.txt:986 #: data/mp/messages/strings/resstrings.txt:994 msgid "Mini-Rocket Upgrade" -msgstr "Amélioration pour Mini-Roquettes" +msgstr "Mise à jour pour Mini-Roquettes" #: data/base/messages/resmessages1.rmsg:707 #: data/mp/messages/resmessages1.rmsg:708 @@ -2573,7 +2573,7 @@ msgstr "Toutes les tours de contrôle améliorées automatiquement" #: data/mp/messages/strings/resstrings.txt:692 #: data/mp/messages/strings/resstrings.txt:710 msgid "AA Upgrade" -msgstr "Amélioration pour canon de DCA" +msgstr "Mise à jour pour canon de DCA" #: data/base/messages/resmessages23.rmsg:135 #: data/base/messages/resmessages2.rmsg:837 @@ -2607,7 +2607,7 @@ msgstr "Augmente la précision des armes AA" #: data/mp/messages/strings/resstrings.txt:695 #: data/mp/messages/strings/resstrings.txt:713 msgid "All AA weapons upgraded automatically" -msgstr "Amélioration automatique de tous les canons de DCA" +msgstr "Mise à jour de tous les canons de DCA" #: data/base/messages/resmessages23.rmsg:147 #: data/base/messages/resmessages2.rmsg:706 @@ -2641,7 +2641,7 @@ msgstr "Fort contre: Bunkers et Points Défensifs" #: data/base/messages/strings/resstrings.txt:713 #: data/mp/messages/strings/resstrings.txt:746 msgid "Bombsight Upgrade" -msgstr "Amélioration pour Bombardiers" +msgstr "Mise à jour pour Bombardiers" #: data/base/messages/resmessages23.rmsg:161 msgid "Laser designator paints and guides bombs to the target" @@ -2669,7 +2669,7 @@ msgstr "Tous les bombardiers améliorés automatiquement" #: data/base/messages/resmessages23.rmsg:174 #: data/mp/messages/resmessages23.rmsg:174 msgid "Robotic advances make new chaingun upgrade available" -msgstr "Les avancées en robotique permettent de nouvelles améliorations pour chargeur." +msgstr "Les avancées en robotique permettent de mettre à jour les chargeurs." #: data/base/messages/resmessages23.rmsg:187 #: data/mp/messages/resmessages23.rmsg:187 @@ -2973,7 +2973,7 @@ msgstr "Nouvelle technique de réparation robotisée" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Production de Cyborgs Robotisée" @@ -2995,7 +2995,7 @@ msgstr "Augmente la vitesse de production des usines" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Analyse de Données par Lien Synaptique Spécialisé" @@ -3004,7 +3004,7 @@ msgstr "Analyse de Données par Lien Synaptique Spécialisé" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Matériaux de Construction Renforcés" @@ -3013,7 +3013,7 @@ msgstr "Matériaux de Construction Renforcés" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Production Aéronautique Robotisée" @@ -3049,7 +3049,7 @@ msgstr "Temps de Réarmement des VTOLs Réduits" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Réarmement Automatisé" @@ -3180,7 +3180,7 @@ msgstr "Plus cher et plus lent à produire que le Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Moteur Turbo" @@ -3363,7 +3363,7 @@ msgstr "Détecte et se verrouille sur les émissions moteur des VTOLs" #: data/mp/messages/resmessages3.rmsg:823 #: data/mp/messages/strings/resstrings.txt:702 msgid "AA Flak Upgrade" -msgstr "Amélioration pour canons de DCA" +msgstr "Mise à jour pour AA Flak" #: data/base/messages/resmessages2.rmsg:655 #: data/base/messages/strings/resstrings.txt:670 @@ -3386,7 +3386,7 @@ msgstr "Augmente les dégâts des armes de DCA" #: data/mp/messages/resmessages3.rmsg:826 #: data/mp/messages/strings/resstrings.txt:705 msgid "All AA flak weapons upgraded automatically" -msgstr "Amélioration automatique de tous les canons de DCA" +msgstr "Mise à jour de tous les AA flak" #: data/base/messages/resmessages2.rmsg:668 #: data/base/messages/strings/resstrings.txt:678 @@ -3555,7 +3555,7 @@ msgstr "Fort contre: Bâtiments, bunkers" #: data/mp/messages/strings/resstrings.txt:840 #: data/mp/messages/strings/resstrings.txt:848 msgid "Howitzer Upgrade" -msgstr "Amélioration pour Obusier" +msgstr "Mise à jour pour Howitzer" #: data/base/messages/resmessages2.rmsg:838 #: data/base/messages/resmessages3.rmsg:903 @@ -3727,7 +3727,7 @@ msgstr "Équipé de missiles Scourge anti-char" #: data/base/messages/resmessages3.rmsg:135 #: data/mp/messages/resmessages3.rmsg:135 msgid "Armed with flashlight laser" -msgstr "Équipé d'une arme laser Flashlight" +msgstr "Armé d'une torche laser" #: data/base/messages/resmessages3.rmsg:147 #: data/base/messages/resmessages3.rmsg:160 @@ -3754,7 +3754,7 @@ msgstr "Équipé d'un Lance-Roquettes" #: data/base/messages/resmessages3.rmsg:161 #: data/mp/messages/resmessages3.rmsg:161 msgid "Armed with Cyborg assault gun" -msgstr "Équipé d'un Fusil d'Assaut" +msgstr "Armé d'un Fusil d'Assaut pour cyborg" #: data/base/messages/resmessages3.rmsg:200 #: data/mp/messages/resmessages3.rmsg:200 @@ -3799,7 +3799,7 @@ msgstr "Batterie d'artillerie tirant des Missiles Novastorm" #: data/base/messages/resmessages3.rmsg:291 #: data/mp/messages/resmessages3.rmsg:291 msgid "Armored strongpoint with Flashlight laser" -msgstr "Point défensif blindé équipé d'un Laser Flashlight" +msgstr "Point défensif blindé équipé d'un torche laser" #: data/base/messages/resmessages3.rmsg:304 msgid "Armored strongpoint with Pulse Laser" @@ -3818,12 +3818,12 @@ msgstr "Point défensif blindé équipé d'un Canon Gauss" #: data/base/messages/resmessages3.rmsg:343 #: data/mp/messages/resmessages3.rmsg:343 msgid "Armored guard tower with Scourge Missile" -msgstr "Tour de défense à Missiles Scourge" +msgstr "Tour renforcé de défense à Missiles Scourge" #: data/base/messages/resmessages3.rmsg:356 #: data/mp/messages/resmessages3.rmsg:356 msgid "Armored guard tower with Needle Gun" -msgstr "Tour de défense à Canon à aiguille" +msgstr "Tour renforcé de défense à Canon à aiguille" #: data/base/messages/resmessages3.rmsg:369 #: data/mp/messages/resmessages3.rmsg:369 @@ -3833,7 +3833,7 @@ msgstr "Point défensif blindé équipé de Missiles Scourge Anti-char" #: data/base/messages/resmessages3.rmsg:382 #: data/mp/messages/resmessages3.rmsg:382 msgid "Armored hardpoint with Flashlight laser" -msgstr "Point défensif blindé équipé d'un canon laser Flashlight" +msgstr "Point défensif blindé équipé d'un canon tourche laser" #: data/base/messages/resmessages3.rmsg:395 #: data/mp/messages/resmessages3.rmsg:395 @@ -3858,14 +3858,14 @@ msgstr "La turbine à vapeur augmente la puissance des générateurs" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Cerveau de Recherche" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Matériaux de Construction Avancés" @@ -3877,14 +3877,14 @@ msgstr "Matériaux de base à haute densité" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Production Aéronautique Avancée" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Réarmement Robotisé" @@ -4022,7 +4022,7 @@ msgstr "Très cher à produire" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Moteur à Turbine" @@ -4142,12 +4142,12 @@ msgstr "Émet des impulsions laser" #: data/mp/messages/resmessages3.rmsg:979 #: data/mp/messages/resmessages3.rmsg:992 msgid "Laser Upgrade" -msgstr "Amélioration pour Laser" +msgstr "Mise à jour pour Laser" #: data/base/messages/resmessages3.rmsg:967 #: data/mp/messages/resmessages3.rmsg:967 msgid "Improvement in laser optics reduces light dispersal" -msgstr "Amélioration du matériel optique réduisant la dispersion de la lumière" +msgstr "Des percés en optique laser réduise la dispersion de la lumière" #: data/base/messages/resmessages3.rmsg:968 msgid "Increases Laser accuracy" @@ -4165,7 +4165,7 @@ msgstr "Tous les lasers améliorés automatiquements" #: data/base/messages/resmessages3.rmsg:980 #: data/mp/messages/resmessages3.rmsg:980 msgid "Improvement in laser emission density" -msgstr "Amélioration de la densité des émissions laser" +msgstr "Percés dans la densité des émissions laser" #: data/base/messages/resmessages3.rmsg:981 msgid "Increases Laser damage" @@ -4218,7 +4218,7 @@ msgstr "Missile Anti-Bunker" #: data/mp/messages/resmessages3.rmsg:1148 #: data/mp/messages/resmessages3.rmsg:1161 msgid "Missile Upgrade" -msgstr "Amélioration pour Missile" +msgstr "Mise à jour pour Missile" #: data/base/messages/resmessages3.rmsg:1058 #: data/mp/messages/resmessages3.rmsg:1058 @@ -4361,7 +4361,7 @@ msgstr "Canon électrique lourd projetant de grosses fléchettes" #: data/mp/messages/resmessages3.rmsg:1252 #: data/mp/messages/resmessages3.rmsg:1265 msgid "Rail Gun Upgrade" -msgstr "Amélioration pour Canon Électrique" +msgstr "Mise à jour pour Canon Électrique" #: data/base/messages/resmessages3.rmsg:1240 #: data/mp/messages/resmessages3.rmsg:1240 @@ -4379,7 +4379,7 @@ msgstr "Précision des Canons Électriques augmentée" #: data/mp/messages/resmessages3.rmsg:1255 #: data/mp/messages/resmessages3.rmsg:1268 msgid "All rail guns upgraded automatically" -msgstr "Amélioration automatique des canons électriques" +msgstr "Mise à jour de tous les canons électriques" #: data/base/messages/resmessages3.rmsg:1253 #: data/mp/messages/resmessages3.rmsg:1253 @@ -4574,14 +4574,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Le viseur laser pointe sur la cible pour guider les obus" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "OBJECTIF: Localiser et récupérer la technologie neuro-synaptique." #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Construisez une base, puis recherchez tout bâtiment Pré-Apocalyptique." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Ces bâtiments abritent des technologies vitales pour le succès du Projet." @@ -4938,14 +4941,18 @@ msgid "We'll keep you informed of further developments" msgstr "Nous vous tiendrons informé sur l'avancement de cette affaire." #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Commandant, vous allez devoir assister l'équipe Beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "OPÉRATION BASE BETA: Le Secteur Est." #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Jusqu'à l'arrivée des renforts, vous devrez commander la base." @@ -4954,16 +4961,19 @@ msgid "You must defend it and hold it." msgstr "Vous devez la défendre et tenir le coup." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "OPÉRATION BASE BETA: Défendre et Fortifier." #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Assurez-vous de fortifier le périmètre et d'établir des défenses anti-aériennes." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "De nouvelles technologies sont à votre disposition." @@ -5260,6 +5270,8 @@ msgid "Good luck, Commander." msgstr "Bonne chance, Commandant." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "MISSION LONGUE DISTANCE: Le Secteur Nord" @@ -5268,6 +5280,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Félicitation pour votre réussite de l'évacuation de la Base Beta." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "Le NEXUS a maintenant acces au feu nucléaire et semble bien déterminé à annihiler le Projet." @@ -5276,10 +5289,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Ammenez vos forces au Secteur Nord" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Une fois là bas, vous sécuriserez la ZA. Puis, établissez une base avancée." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "La division Gamma va prendre contact avec vous d'ici là." @@ -5288,6 +5303,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "MISSION LONGUE DISTANCE: Établir un Poste Avancé." #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Commandant, la survie du Projet dépends de vous." @@ -5314,6 +5330,7 @@ msgstr "Nous allons vous transmettre les coordonées d'une ZA située dans les a #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Téléchargement des Coordonées Terminé." @@ -5753,7 +5770,7 @@ msgstr "Transporteur" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Véhicule de Construction" @@ -5762,7 +5779,7 @@ msgstr "Véhicule de Construction" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Auto mitrailleuse Vipère" @@ -5789,7 +5806,7 @@ msgstr "Canon Léger Viper Chenillé" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Mitrailleuse Lourde Cobra Semi-chenillée" @@ -5821,7 +5838,7 @@ msgstr "Tourelle de Réparation Mobile Viper Semi-chenillée" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Mitrailleuses jumellées Viper sur Roues" @@ -5838,7 +5855,7 @@ msgstr "Mitrailleuse Lourde Viper Semi-chenillée" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Mitrailleuse Lourde Viper Chenillé" @@ -5865,7 +5882,7 @@ msgstr "Roquette Anti-Bunker Viper sur Roues" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Canon Moyen Cobra Chenillé" @@ -5877,7 +5894,7 @@ msgstr "Canon Lourd Cobra Chenillé" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Véhicule de Construction Cobra" @@ -5888,7 +5905,7 @@ msgstr "Tourelle de capteur Cobra semi-chenillé" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "lance-flammes Cobra chenillé" @@ -5905,7 +5922,7 @@ msgstr "Tourelle de Commandement Cobra Semi-chenillée" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Lance-Roquettes Cobra Autochenilles" @@ -5920,26 +5937,26 @@ msgid "Light Cannon Python Tracks" msgstr "Canon léger Python chenillé" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Canon moyen Python chenillé" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Canon lourd Python chenillé" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Tourelle de commandement Python chenillé" @@ -5961,7 +5978,7 @@ msgstr "Trois-Roues" #: data/base/messages/strings/names.txt:202 #: data/mp/messages/strings/names.txt:205 msgid "Buggy" -msgstr "Buggy" +msgstr "Bogué" #: data/base/messages/strings/names.txt:203 #: data/mp/messages/strings/names.txt:206 @@ -6003,7 +6020,7 @@ msgstr "Civil" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Mitrailleur" @@ -6012,9 +6029,9 @@ msgstr "Mitrailleur" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Incedieur" @@ -6024,8 +6041,8 @@ msgstr "Incedieur" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lanceur" @@ -6034,7 +6051,7 @@ msgstr "Lanceur" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Canon lourd" @@ -6122,21 +6139,21 @@ msgstr "Châssis de Transporteur" #: data/base/messages/strings/names.txt:297 #: data/mp/messages/strings/names.txt:300 msgid "Z NULL BRAIN" -msgstr "Z NULL BRAIN" +msgstr "Z NUL CERVEAU" #: data/base/messages/strings/names.txt:300 #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Tourelle de Commandement" #: data/base/messages/strings/names.txt:303 #: data/mp/messages/strings/names.txt:306 msgid "Z NULL PROGRAM" -msgstr "Z NULL PROGRAM" +msgstr "Z NUL PROGRAMME" #: data/base/messages/strings/names.txt:307 #: data/base/messages/strings/names.txt:392 @@ -6148,12 +6165,12 @@ msgstr "Démolir" #: data/base/messages/strings/names.txt:310 #: data/mp/messages/strings/names.txt:313 msgid "Z NULL CONSTRUCT" -msgstr "Z NULL CONSTRUCT" +msgstr "Z NUL CONSTRUCT" #: data/base/messages/strings/names.txt:314 #: data/mp/messages/strings/names.txt:317 msgid "Z NULL PROP" -msgstr "Z NULL PROP" +msgstr "Z NUL PROP" #: data/base/messages/strings/names.txt:315 #: data/mp/messages/strings/names.txt:318 @@ -6233,14 +6250,14 @@ msgstr "Semi-Chenilles III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Propulsion Bipédique II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Propulsion Bipédique III" @@ -6257,19 +6274,19 @@ msgstr "BaBaProp" #: data/base/messages/strings/names.txt:338 #: data/mp/messages/strings/names.txt:341 msgid "BaBaLegs" -msgstr "BaBaLegs" +msgstr "BaBaJambes" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Propulsion Bipédique" #: data/base/messages/strings/names.txt:345 #: data/mp/messages/strings/names.txt:348 msgid "Z NULL REPAIR" -msgstr "Z NULL REPAIR" +msgstr "Z NUL RÉPARATION" #: data/base/messages/strings/names.txt:346 #: data/mp/messages/strings/names.txt:349 @@ -6279,19 +6296,19 @@ msgstr "Tourelle de Réparation" #: data/base/messages/strings/names.txt:349 #: data/mp/messages/strings/names.txt:352 msgid "Z NULL ECM" -msgstr "Z NULL ECM" +msgstr "Z NUL ECM" #: data/base/messages/strings/names.txt:362 #: data/mp/messages/strings/names.txt:365 msgid "Z NULL SENSOR" -msgstr "Z NULL SENSOR" +msgstr "Z NUL SENSEUR" #: data/base/messages/strings/names.txt:367 #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Tour Radar" @@ -6299,15 +6316,15 @@ msgstr "Tour Radar" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Tour radar en béton" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Tourelle Radar" @@ -6331,7 +6348,7 @@ msgstr "Tourelle de Contrôle Aérien" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "Tourelle de Contrôle Aérien" @@ -6367,7 +6384,7 @@ msgstr "Usine" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Module de Production" @@ -6379,7 +6396,7 @@ msgstr "Générateur d'Énergie" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Module Énergétique" @@ -6391,7 +6408,7 @@ msgstr "Centre de Recherche" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Module de Recherche" @@ -6403,7 +6420,7 @@ msgstr "Démolition" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Centre de Réparation" @@ -6424,8 +6441,8 @@ msgstr "Mur de Béton Renforcé" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Usine de VTOLs" @@ -6436,30 +6453,30 @@ msgstr "Emplacement à Inferno" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Point Défensif Inferno" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Poivrière Retranchée" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Emplacement à Hellstorm" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Site de DCA Tornade" @@ -6470,27 +6487,27 @@ msgstr "Site de DCA Cyclone" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Site de DCA Ouragan" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Site de DCA Tourbillon" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Batterie de Roquettes à Répercussion" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Tour de Garde à Canon d'Assaut" @@ -6501,29 +6518,29 @@ msgstr "Tour de Garde à Fusil d'Assaut" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Point Défensif Fusil d'Assaut" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Point Défensif Canon d'Assaut" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "Tour AB" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Tour de Contrôle Aérien AB" @@ -6533,80 +6550,80 @@ msgstr "Tour de Contrôle Aérien" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Point Défensif Mitrailleuse Lourde" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Point Défensif Canon Léger" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Point Défensif Canon Moyen" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Point Défensif Canon Lourd" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Point Défensif Lance-Flammes" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Point Défensif Lance-Roquettes" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Tour de Garde à Mitrailleuse" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Tour de Garde à Mitrailleuses jumelées" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Tour à Mitrailleuse Lourde" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Tour de Garde à lance-flammes" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Tour Lance-Roquettes" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 #, fuzzy msgid "Mini-Rocket Tower" msgstr "Tour à Mini-Roquettes" @@ -6614,231 +6631,231 @@ msgstr "Tour à Mini-Roquettes" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Bunker à Mitrailleuse" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Bunker à Mitrailleuses jumelées" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Bunker à Mitrailleuse Lourde" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Bunker à Canon Léger" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Bunker à lance-flammes" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Bunker à lance-roquettes" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Pièges Anti-Char" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Dents de Dragon" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Plateforme de Réarmement" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Emplacement à Obusier" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" -msgstr "Emplacement à Laser Flashlight" +msgstr "Emplacement d'une torche" #: data/base/messages/strings/names.txt:466 #: data/base/messages/strings/names.txt:776 msgid "Flashlight Hardpoint" -msgstr "Point Défensif Flashlight" +msgstr "Point Défensif avec torche" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" -msgstr "Point Défensif Canon Électrique" +msgstr "Point Défensif à Canon à rail" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Tour à Missiles Scourge" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Tour à Canon à aiguille" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Tour à Canon Gauss" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Canon Léger" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Canon Moyen" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Canon Lourd" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Canon à Hyper Vélocité" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Canon d'Assaut" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" -msgstr "Obusier" +msgstr "Howitzer" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" -msgstr "Ground Shaker" +msgstr "Vibrateur de sol" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Emplacement à Ground Shaker" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" -msgstr "Hellstorm" +msgstr "Tempête d'enfer" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Laser à Impulsions" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Mitrailleuse" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Mitrailleuses jumelées" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Mitrailleuse Lourde" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Fusil d'Assaut" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Missile Scourge" @@ -6849,80 +6866,80 @@ msgstr "Missiles Angel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "SAM Vindicator" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Missiles Archangel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "SAM Avenger" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "Missile Scourge VTOL" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mortier" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Emplacement à Mortier" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombarde" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Emplacement à Bombarde" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Poivrière" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Emplacement à Salière" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Canon à aiguille" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Canon Électrique" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Canon Gauss" @@ -6932,76 +6949,75 @@ msgid "Mini-Rocket Artillery" msgstr "Batterie de Mini-Roquettes" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Roquette Anti-Bunker" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 -#, fuzzy +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" -msgstr "Amélioration pour Mini-Roquettes" +msgstr "nacelle de Mini-Roquettes" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Roquettes à Répercussion" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Roquettes Anti-Char" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "Roquettes Anti-Bunker VTOL" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 #, fuzzy msgid "VTOL Mini-Rocket" msgstr "Mini-Roquettes HE" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "Lance-Roquettes VTOL" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "Roquettes Anti-Char VTOL" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Tourelle de DCA Tornade" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Tourelle de DCA Cyclone" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Tourelle de DCA Tourbillon" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Tourelle de DCA Ouragan" @@ -7010,62 +7026,62 @@ msgid "LasSat" msgstr "Satellite Laser" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "Canon VTOL" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "Canon à hyper vélocité VTOL" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "Canon d'Assaut VTOL" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "Laser à Pulsation VTOL" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "Mitrailleuse VTOL" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "Mitrailleuses jumelées VTOL" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Mitrailleuse Lourde VTOL" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "Fusil d'Assaut VTOL" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "Canon à aiguille VTOL" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "Canon Électrique VTOL" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Tourelle lanceuse de mines de proximité" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Tourelle lanceuse de super-bombes de proximité" @@ -7074,22 +7090,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "Bombes à Fragmentation" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "Bombes Explosives Anti-Blindage" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "Bombes au Phosphore" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "Bombes Thermiques" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Mur du Collectif" @@ -7106,307 +7122,307 @@ msgid "NEXUS CWall" msgstr "Mur en Béton Nexus" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 RECHERCHE" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "RECHERCHE AVANCÉE" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 VÉHICULES" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 ARMES" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SYSTÈMES" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DÉFENSES" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 STRUCTURES" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 RECHERCHE" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 VÉHICULES" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 ARMES" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SYSTÈMES" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 DÉFENSES" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 STRUCTURES" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 RECHERCHE" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Lien Synaptique" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Codes de Programmation des Missiles" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Codes de Programmation des Missiles de Niveau Deux" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Codes de Programmation des Missiles de Niveau Trois" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Armure Thermique Cyborg" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Armure Thermique Cyborg Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Armure Thermique Cyborg Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Armure Thermique Hautes Températures Cyborg" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Armure Thermique Hautes Températures Cyborg Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Armure Thermique Hautes Températures Cyborg Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Alliages Composites Cyborg" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Alliages Composites Cyborg Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Alliages Composites Cyborg Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Alliages Composites Denses Cyborg" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Alliages Composites Denses Cyborg Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Alliages Composites Denses Cyborg Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Alliages Composites Superdenses Cyborg" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Alliages Composites Superdenses Cyborg Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Alliages Composites Superdenses Cyborg Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Cyborg Anti-Bunker" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Cyborg à canon lourd" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Cyborg lance-flammes" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Cyborg Mitrailleur" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Cyborg Lanceur" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Cyborg canon d'Assaut" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Cyborg à canon à aiguille" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Super Cyborg à Missile Scourge" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" -msgstr "Cyborg Flashlight" +msgstr "Fusillier à torche pour Cyborg" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" -msgstr "" +msgstr "Jump zappeur d'abri" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" -msgstr "" +msgstr "Jump tirreur lourd" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" -msgstr "" +msgstr "Jump Lanceur" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" -msgstr "" +msgstr "Jump tirreur d'assault" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" -msgstr "" +msgstr "Jump tirreur d'aiguille" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" -msgstr "" +msgstr "Jump Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" -msgstr "" +msgstr "Jump tirreur à torche" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Pack de Saut Cyborg" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" -msgstr "Mur en béton" +msgstr "Béton renforcé" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" -msgstr "" +msgstr "NP-béton renforcé" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" -msgstr "Béton Renforcé" +msgstr "Mise à jour Béton Renforcé" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" -msgstr "Béton Renforcé Mk2" +msgstr "Mise à jour Béton Renforcé Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" -msgstr "Béton Renforcé Mk3" +msgstr "Mise à jour Béton Renforcé Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Super béton" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Super béton Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Super béton Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Béton Plastifié" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Béton Plastifié Mk2" @@ -7417,19 +7433,19 @@ msgstr "Béton Plastifié Mk3" #: data/base/messages/strings/names.txt:717 #: data/base/messages/strings/names.txt:1373 msgid "HPV Cannon Emplacement" -msgstr "Emplacement à Canon canon à hyper vélocité" +msgstr "Emplacement à canon à hyper vélocité" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" -msgstr "Emplacement à Roquettes Anti-Char" +msgstr "Emplacement pour Anti-Char" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Bombarde Retranchée" @@ -7438,55 +7454,55 @@ msgid "Angel Missile Battery" msgstr "Batterie de Missiles Angel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Batterie de Missiles Archangel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Mortier Retranché" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Batterie de Mini-Roquettes" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Emplacement à Laser à Impulsions" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Emplacement à Canon Électrique" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Emplacement à Canon d'Assaut" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Emplacement à Fusil d'Assaut" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Site SAM Avenger" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Site SAM Vindicator" @@ -7505,15 +7521,15 @@ msgstr "Tour de Garde à Mini-Roquettes" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Point Défensif Missiles Scourge" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Point Défensif Roquettes Anti-Char" @@ -7524,49 +7540,49 @@ msgstr "Point Défensif Canon canon à hyper vélocité" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Point Défensif Canon Gauss" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Poste de Relais" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Production de Cyborgs Automatisée Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Production de Cyborgs Automatisée Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Production de Cyborgs Robotisée Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Production de Cyborgs Robotisée Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Production de Cyborgs Avancée" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Production de Cyborgs Avancée Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Production de Cyborgs Avancée Mk3" @@ -7604,256 +7620,256 @@ msgid "Advanced Factory Production Mk3" msgstr "Production de Véhicules Avancée Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Matériaux de Construction Améliorés Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Matériaux de Construction Améliorés Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Matériaux de Construction Renforcés Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Matériaux de Construction Renforcés Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Matériaux de Construction Avancés Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Matériaux de Construction Avancés Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Turbine à Gaz" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Turbine à Vapeur" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" -msgstr "Centre de Réparation" +msgstr "Atelier de Réparation" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" -msgstr "Réparations Automatisées" +msgstr "Atelier de Réparations Automatisées" #: data/base/messages/strings/names.txt:822 msgid "Automated Repair Facility Upgrade Mk2" -msgstr "Réparations Automatisées Mk2" +msgstr "Atelier de Réparations Automatisées Mk2" #: data/base/messages/strings/names.txt:823 msgid "Automated Repair Facility Upgrade Mk3" -msgstr "Réparations Automatisées Mk3" +msgstr "Atelier de Réparations Automatisées Mk3" #: data/base/messages/strings/names.txt:824 msgid "Robotic Repair Facility Upgrade" -msgstr "Réparations Robotisées" +msgstr "Atelier de Réparations Robotisées" #: data/base/messages/strings/names.txt:825 msgid "Robotic Repair Facility Upgrade Mk2" -msgstr "Réparations Robotisées Mk2" +msgstr "Atelier de Réparations Robotisées Mk2" #: data/base/messages/strings/names.txt:826 msgid "Robotic Repair Facility Upgrade Mk3" -msgstr "Réparations Robotisées Mk3" +msgstr "Atelier Réparations Robotisées Mk3" #: data/base/messages/strings/names.txt:827 msgid "Advanced Repair Facility Upgrade" -msgstr "Réparations Avancées" +msgstr "Atelier de Réparations Avancées" #: data/base/messages/strings/names.txt:828 msgid "Advanced Repair Facility Upgrade Mk2" -msgstr "Réparations Avancées Mk2" +msgstr "Atelier de Réparations Avancées Mk2" #: data/base/messages/strings/names.txt:829 msgid "Advanced Repair Facility Upgrade Mk3" -msgstr "Réparations Avancées Mk3" +msgstr "Atelier de Réparations Avancées Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Analyse de Données par Lien Synaptique" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Analyse de Données par Lien Synaptique Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Analyse de Données par Lien Synaptique Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Analyse de Données par Lien Synaptique Spécialisé Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Analyse de Données par Lien Synaptique Spécialisé Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Cerveau de Recherche Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Cerveau de Recherche Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Réarmement Automatisé Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Réarmement Automatisé Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Réarmement Robotisé Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Réarmement Robotisé Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Réarmement Robotisé Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Production Aéronautique Robotisée Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Production Aéronautique Robotisée Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Production Aéronautique Avancée Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Production Aéronautique Avancée Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Auto-Réparation Cyborg" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Réparation Cyborg Automatisée Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Réparation Cyborg Automatisée Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Auto-Réparation des Défenses" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Réparation des Défenses Automatisée Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Réparation des Défenses Automatisée Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Auto-Réparation des Bâtiments" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Réparation des Bâtiments Automatisée Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Réparation des Bâtiments Automatisée Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Auto-Réparation des Véhicules" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Réparation des Véhicules Automatisée Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Réparation des Véhicules Automatisée Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" -msgstr "Amélioration pour Radar" +msgstr "Mise à jour pour Radar" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Unité de Construction" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Génie" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" -msgstr "Amélioration du Génie" +msgstr "Avancé en Génie" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Génie Avancé" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Tourelle de Réparations Mobile" @@ -7863,84 +7879,84 @@ msgstr "Tourelle de Réparations Lourde" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" -msgstr "Amélioration pour Réparation Mobile" +msgstr "Mise à jour pour Réparation Mobile" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" -msgstr "Amélioration pour Réparation Mobile Mk2" +msgstr "Mise à jour pour Réparation Mobile Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "Tourelle de contre-batterie" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" -msgstr "Amélioration pour Radar de CB" +msgstr "Mise à jour pour Radar de CB" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" -msgstr "Amélioration pour Radar de CB Mk2" +msgstr "Mise à jour pour Radar de CB Mk2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" -msgstr "Amélioration pour Radar de CB Mk3" +msgstr "Mise à jour pour Radar de CB Mk3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "Tourelle de Contrôle de CB Mobile" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" -msgstr "Amélioration pour Contrôle de CB" +msgstr "Mise à jour pour Contrôle de CB" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" -msgstr "Amélioration pour Contrôle de CB Mk2" +msgstr "Mise à jour pour Contrôle de CB Mk2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" -msgstr "Amélioration pour Contrôle de CB Mk3" +msgstr "Mise à jour pour Contrôle de CB Mk3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" -msgstr "Amélioration pour Contrôle Aérien" +msgstr "Mise à jour pour Contrôle Aérien" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" -msgstr "Amélioration pour Contrôle Aérien Mk2" +msgstr "Mise à jour pour Contrôle Aérien Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" -msgstr "Amélioration pour Contrôle Aérien Mk3" +msgstr "Mise à jour pour Contrôle Aérien Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Tour de Contrôle Aérien" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Brouilleur Amélioré" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Tourelle brouilleuse Mk2" @@ -7961,292 +7977,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Circuits Résistifs NEXUS Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Verrou sensitif" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Blindage Thermique" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Blindage Thermique Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Blindage Thermique Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Blindage Thermique Hautes Températures" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Blindage Thermique Hautes Températures Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Blindage Thermique Hautes Températures Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Châssis Léger - Vipère" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Châssis Léger - Léopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Châssis Léger - Revanche" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Châssis Léger - Guêpe" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Châssis Moyen - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Châssis Moyen - Panthère" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Châssis Moyen - Châtiment" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Châssis moyen - Scorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Châssis Lourd - Tigre" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Châssis Lourd - Vengeance" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Châssis Lourd - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Châssis Lourd - Mante Religieuse" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Moteur à Injection Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Moteur à Injection Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Moteur Turbo Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Moteur Turbo Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Moteur à Turbine Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Moteur à Turbine Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Alliages Composites" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Alliages Composites Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Alliages Composites Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Alliages Composites Denses" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Alliages Composites Denses Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Alliages Composites Denses Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Alliages Composites Superdenses" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Alliages Composites Superdenses Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Alliages Composites Superdenses Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Aéroglisseur" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Propulsion Aéroglisseur II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Autochenilles" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Propulsion à demi-chenilles II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Chenilles" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Propulsion Chenilles II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "VTOLs" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "Propulsion VTOL II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Propulsion Roues II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Détecteur Thermique pour DCA" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "Obus à Acquisition de Cible pour DCA" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Ordinateur Ballistique pour DCA" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Obus HE pour DCA" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "Obus HE pour DCA Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "Obus HE pour DCA Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Obus HEAP pour DCA" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "Obus HEAP pour DCA Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "Obus HEAP pour DCA Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Chargeur Automatique pour DCA" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "Chargeur Automatique pour DCA Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "Chargeur Automatique pour DCA Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Chargeur Chaîné pour DCA" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "Chargeur Chaîné pour DCA Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "Chargeur Chaîné pour DCA Mk3" @@ -8255,17 +8271,17 @@ msgid "Cluster Bombs Bay" msgstr "Bombes à Fragmentation" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Bombes HEAP" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Bombes au Phosphore" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Bombes Thermiques" @@ -8282,252 +8298,252 @@ msgid "Target Acquisition Bombsight" msgstr "Bombardement par Acquisition de Cible" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Télémètre laser pour Canon" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Visée laser pour Canon" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Obus HEAT pour Canon" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Obus HEAT pour Canon Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Obus HEAT pour Canon Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Obus APFSDS pour Canon" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Obus APFSDS pour Canon Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Obus APFSDS pour Canon Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Obus HVAPFSDS pour Canon" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Obus HVAPFSDS pour Canon Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Obus HVAPFSDS pour Canon Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Chargeur Automatique pour Canon" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Chargeur Automatique pour Canon Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Chargeur Automatique pour Canon Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Chargeur Accéléré pour Canon" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Chargeur Accéléré pour Canon Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Chargeur Accéléré pour Canon Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Concentration Laser Améliorée" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Concentration Laser Améliorée Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Concentration Laser Améliorée Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Emetteur Laser à Haute Energie" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Emetteur Laser à Haute Energie Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Emetteur Laser à Haute Energie Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Concentrateur Énergétique" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Concentrateur Énergétique Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Concentrateur Énergétique Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Gel Inflammable à Haute Température" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Gel Inflammable à Haute Température Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Gel Inflammable à Haute Température Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Gel Inflammable à Très Haute Température" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Gel Inflammable à Très Haute Température Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Gel Inflammable à Très Haute Température Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Chargeur Automatique pour Lance-Flammes" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Chargeur Automatique pour Lance-Flammes Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Chargeur Automatique pour Lance-Flammes Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Lance-Flammes Lourd - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Obusier Lourd - Ground Shaker" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Obusier Rotatif - Hellstorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Obus d'Artillerie à Acquisition de Cible" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Obus d'Artillerie à Acquisition de Cible Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Obus d'Artillerie à Prédiction de Mouvement" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Obus HE pour Obusiers" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Obus HE pour Obusiers Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Obus HE pour Obusiers Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Obus HEAP pour Obusiers" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Obus HEAP pour Obusiers Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Obus HEAP pour Obusiers Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Chargeur Automatique pour Obusier" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Chargeur Automatique pour Obusier Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Chargeur Automatique pour Obusier Mk3" @@ -8536,57 +8552,57 @@ msgid "Fast Loader" msgstr "Chargeur Rapide" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" -msgstr "Laser - Flashlight" +msgstr "Torche Laser" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Balles renforcées pour Mitrailleuse" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Balles APDS pour Mitrailleuse" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Balles APDS pour Mitrailleuse Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Balles APDS pour Mitrailleuse Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Balles à Pointe de Tungstène pour Mitrailleuse" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Balles à Pointe de Tungstène pour Mitrailleuse Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Balles à Pointe de Tungstène pour Mitrailleuse Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Balles en Uranium Appauvri pour Mitrailleuse" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Balles en Uranium Appauvri pour Mitrailleuse Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Chargeur Automatique pour Mitrailleuse" @@ -8595,142 +8611,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Chargeur à Cadence Rapide" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Chargeur à Cadence Hyper-Rapide" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Missiles à Prédiction de Mouvement" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Missile à Tête Chercheuse" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Ogive Avancée pour Missile" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Ogive Avancée pour Missile Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Ogive Avancée pour Missile Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Système d'Allocation de Missile Avancé" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Système d'Allocation de Missile Avancé Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Système d'Allocation de Missile Avancé Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Ogive HEAP pour Missile" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Ogive HEAP pour Missile Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Ogive HEAP pour Missile Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Sytème de Chargement des Missiles Amélioré" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Ordinateur Ballistique pour Mortier" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Obus pour Mortier à Visée Thermique" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Obus pour Mortier à Acquisition de Cible" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Obus HE pour Mortier" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Obus HE pour Mortier Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Obus HE pour Mortier Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Obus HEAP pour Mortier" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Obus HEAP pour Mortier Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Obus HEAP pour Mortier Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Chargeur Automatique pour Mortier" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Chargeur Automatique pour Mortier Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Chargeur Automatique pour Mortier Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Chargeur Rapide pour Mortier" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Mortier Lourd - Bombarde" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Mortier Rotatif - Salière" @@ -8739,367 +8755,367 @@ msgid "Target Prediction Computer" msgstr "Ordinateur Ballistique" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Projectile renforcé pour Canon à aiguille" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Projectile renforcé pour Canon à aiguille Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Projectile renforcé pour Canon à aiguille Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Portée des Canons Électriques améliorée" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Portée des Canons Électriques améliorée Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Portée des Canons Électriques améliorée Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Mini-Roquettes Stabilisées" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Mini-Roquettes Stabilisées Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Mini-Roquettes HE" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Mini-Roquettes HE Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Mini-Roquettes HE Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Mini-Roquettes HEAP" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Mini-Roquettes HEAP Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Mini-Roquettes HEAP Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Mini-Roquettes à Tir Rapide" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Mini-Roquettes à Tir Rapide Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Mini-Roquettes à Tir Rapide Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Mini-Roquettes à Tir Super Rapide" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Mini-Roquettes à Tir Super Rapide Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Mini-Roquettes à Tir Super Rapide Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Guidage Amélioré pour Roquettes" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Roquettes à Viseur Laser" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Roquettes à Visée Thermique" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "Ogive HEAT pour Roquettes" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "Ogive HEAT pour Roquettes Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "Ogive HEAT pour Roquettes Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "Ogive HESH pour Roquettes" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "Ogive HESH pour Roquettes Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "Ogive HESH pour Roquettes Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Chargeur Automatique pour lance roquettes" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Chargeur Automatique pour lance roquettes Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Chargeur Automatique pour lance roquettes Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Lance-Roquettes" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Roquettes Anti-Bunker" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Roquettes Anti-Char" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Artefact pour Mitrailleuse" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Centre de Commandement du Nouveau Paradigme" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Centre de Commandement du Collectif" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Centre de Commandement des Pillards" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Tour à Mitraillette des Pillards" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Mur Horizontal des Pillards" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Générateur d'Energie des Pillards" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Lance-Roquettes Retranché des Pillards" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Lance-Roquettes AC Retranché des Pillards" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Bunker des Pillards" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Mur d'Angle des Pillards" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Tour Lance-Flammes des Pillards" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Tourelle lance-flammes des pillards" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Tour d'observation" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Tour à Canon" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artéfact" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Gisement de Pétrole" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Pont" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Usine en Ruines" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Entrepôt" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Hutte" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Baril de Pétrole" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Épave" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Épave de Char" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Carcasse de Pont" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Épave de Van" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Épave de Véhicule" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Épave de Camion-Citerne" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratoire de Cybernétique" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratoire de Recherche Militaire Avancée" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Laboratoire d'Ingénierie" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratoire de Robotique" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratoire d'Optique Laser" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratoire d'Électronique" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Laboratoire de Chimie" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Techniques de Guerre Avancées" @@ -9120,7 +9136,7 @@ msgid "MRL Emplacement" msgstr "Emplacement pour AMR" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Emplacement pour Canon Électrique" @@ -9129,50 +9145,50 @@ msgid "Angel Missile Emplacement" msgstr "Emplacement pour Missiles Angel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Emplacement pour Missiles Archangel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 #, fuzzy msgid "Repair Turret Cobra Tracks" msgstr "Réparateur Cobra chenillé" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Cyborg Lance-Missiles" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Anti-Bunker" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" -msgstr "Cyborg Flashlight" +msgstr "Tirreur àtorche" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" -msgstr "à canon à aiguille" +msgstr "tirreur àaiguille" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Transporteur Abattu" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Anti-Char Python Chenilles" @@ -9181,54 +9197,54 @@ msgid "HPV Cannon Python Tracks" msgstr "Canon canon à hyper vélocité Python chenillé" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "DCA Cyclone Pythn semi-chenillé" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Canon d'assaut Python chenillé" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" -msgstr "Flashlight" +msgstr "Torche" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" -msgstr "Flashlight" +msgstr "Torche pour VTOL" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" -msgstr "Bunker à Mitrailleuse Rotative" +msgstr "Abri àmitrailleuse rotative" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Silo de Missiles" #: data/base/messages/strings/resstrings.txt:234 #: data/mp/messages/strings/resstrings.txt:260 msgid "Armored guard tower with Heavy Machinegun" -msgstr "Tour de défense à Mitrailleuse Lourde" +msgstr "Tour de défense renforcé à Mitrailleuse Lourde" #: data/base/messages/strings/resstrings.txt:240 #: data/mp/messages/strings/resstrings.txt:266 msgid "Armored guard tower with Flamer" -msgstr "Tour de défense à Lance-Flammes" +msgstr "Tour de défense renforcé avec Lance-Flammes" #: data/base/messages/strings/resstrings.txt:246 #: data/mp/messages/strings/resstrings.txt:272 msgid "Armored guard tower with Lancer AT Rocket" -msgstr "Tour de défense à Lance-Roquettes AC" +msgstr "Tour de défense renforcé avec Lance-Roquettes AC" #: data/base/messages/strings/resstrings.txt:260 #: data/mp/messages/strings/resstrings.txt:286 @@ -9279,7 +9295,7 @@ msgstr "Brouilleur amélioré" #: data/base/messages/strings/resstrings.txt:512 #: data/mp/messages/strings/resstrings.txt:540 msgid "Improvement in synaptic link technology" -msgstr "Amélioration dans la technologie du lien synaptique" +msgstr "Mise à jour dans la technologie du lien synaptique" #: data/base/messages/strings/resstrings.txt:513 #: data/mp/messages/strings/resstrings.txt:541 @@ -9493,342 +9509,1209 @@ msgstr "Patientez le temps que l'usine produit la(les) nouvelle(s) unité(s)" msgid "Congratulations commander - you are ready for your first mission" msgstr "Félicitations commandant - vous êtes prêt pour votre première mission" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" -msgstr "Réparateur Lourd Cobra sur Hovercraft" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "Réception d'une Transmission" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/base/sequenceaudio/cam1/c001end.txt:3 +#, fuzzy +msgid "Transmission from Beta Base" +msgstr "Réception d'une transmission de l'équipe d'intervention." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Objectifs du Projet" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Division Alpha Anéantie" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +#, fuzzy +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Nous avons décodé le message en provenance du Nouveau Paradigme..." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "Nous captons à l'instant cette transmission." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +#, fuzzy +msgid "You are in contravention of the New Paradigm." +msgstr "Félicitations pour avoir vaincu le Nouveau Paradigme." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "Félicitations pour avoir vaincu le Nouveau Paradigme." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "Il doit être arrêté." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +#, fuzzy +msgid "Secure the LZ and establish a forward base." +msgstr "Sécurisez la ZA puis établissez un Poste avancé" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "Puis, mettez fin aux agissements de ces bases" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Devant notre manque de réaction, il est devenu menaçant" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +#, fuzzy +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Le NEXUS possède des technologies, des armes et n'a pas l'air amical." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +#, fuzzy +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "Nous avons enfin retrouvé la technologie du lien synaptique!" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +#, fuzzy +msgid "Team Alpha approaches Beta Base" +msgstr "Division Alpha Anéantie" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +#, fuzzy +msgid "You must defend and hold it at all costs." +msgstr "Vous devez la défendre et tenir le coup." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +#, fuzzy +msgid "Commander, a new launch has been detected." +msgstr "Commandant, le NEXUS est hors d'état de nuire." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +#, fuzzy +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Vous devez établir un refuge sûr pour l'évacuation de la Base Beta" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +#, fuzzy +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Nous avons retracé des transmissions de cet endroit qui atteignaient l'orbite stratosphérique." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +#, fuzzy +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "Le NEXUS s'est maintenant reconnecté sur les satellites de la NASDA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +#, fuzzy +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Commandant, il y a bel et bien des missiles dans le silo." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +#, fuzzy +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Détruisez et tuez tout ceux qui s'opposeront à la Machine" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +#, fuzzy +msgid "Attack and destroy all who resist the machine." +msgstr "Détruisez et tuez tout ceux qui s'opposeront à la Machine" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Attaquez!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +#, fuzzy +msgid "Cleanse and destroy!!" +msgstr "Trouvez et mettez un terme à .........." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +#, fuzzy +msgid "Warriors of the Collective. You have performed well." +msgstr "Combattants du Collectif..." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "Réception d'une transmission..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Félicitation pour votre réussite de l'évacuation de la Base Beta." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "Début du Briefing" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Voir le Commandant Suivant" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +#, fuzzy +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Nous détectons des forces ennemies dans les alentours." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Bonne chance, Commandant." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +#, fuzzy +msgid "Commander, welcome to NEXUS!" +msgstr "Commandant, le NEXUS est hors d'état de nuire." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Commandant, nous essayons de retourner à la base." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Réacteur Nucléaire" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +msgid "Cobra Hover Heavy-Repair" +msgstr "Réparateur Lourd Cobra pour aéro-glisseur" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Vipère HMG Roues" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" -msgstr "" +msgstr "Scourge Mantis aéro-glisseur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" -msgstr "" +msgstr "TK Mantis aéro-glisseur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" -msgstr "" +msgstr "Cobra HMG à chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" -msgstr "" +msgstr "Cobra aéro-glisseur HC" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Lance-Roquettes Scorpion chenillé" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Canon Lourd Scorpion Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "VTOL Scorpion armé d'un lance-roquettes" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" -msgstr "" +msgstr "Scorpion BB pour VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Tourelle de Commandement Vipère Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Tourelle de Commandement Cobra Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Tourelle de Commandement Scorpion Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Tourelle de Commandement Mante Religieuse Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Lance-roquettes Cobra chenillé" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Canon Lourd Mante Religieuse Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Anti-Char Mante Religieuse Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" -msgstr "" +msgstr "Mantis Scourge chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Mitrailleuse Lourde Scorpion Chenillée" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Réparateur Scorpion Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Réparateur Lourd Scorpion Autoporté" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" -msgstr "Camion Cobra Autoporté" +msgstr "Camion Cobra aéro-glisseur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" -msgstr "Camion Scorpion Autoporté" +msgstr "Camion Scorpion aéro-glisseur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" -msgstr "Camion Mante Religieuse Autoporté" +msgstr "Camion Mante Religieuse aéro-glisseur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" -msgstr "" +msgstr "Zappeur d'abri Cobra àchenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" -msgstr "" +msgstr "Zappeur d'abri Scorpion à chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" -msgstr "" +msgstr "Zappeur d'abris Mantis à chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Lance-roquettes Vipère chenillé" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" -msgstr "" +msgstr "mini-nacelle Cobra semi-chenillé" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" -msgstr "" +msgstr "mini-nacelle Cobra chenillé" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Artillerie Mini-Rocket Cobra Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Inferno Cobra Semi-Chenillé" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" -msgstr "" +msgstr "Python HVC aéro-glisseur" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" -msgstr "" +msgstr "Python Scourge à chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Canon Gauss Python Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Laser à Impulsion Python Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Laser à Impulsion Tigre Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Laser Lourd Tigre Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Canon Gauss Viverne Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Laser à Impulsion Viverne Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Laser Lourd Viverne Chenilles" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Mitrailleuse Viper Semi-chenillée" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "lance-flammes Viper Semi-chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" -msgstr "Dépanneuse Lourde Cobra Aéro-glisseur" +msgstr "Dépanneuse Lourde Cobra aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Mitrailleuse lourde Viper sur Roues" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Tueur de char Mantis aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Mitrailleuse Lourde Viper Chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Canon Lourd Cobra aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Mitrailleuse lourde Viper sur Roues" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" -msgstr "Mitrailleuse Lourde Cobra sur roues" +msgstr "Mitrailleuse Lourde Cobra pour aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" -msgstr "Mitrailleuse Viper sur Roues" +msgstr "Mitrailleuse Viper chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Mitrailleuses jumelées Viper chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Canon Moyen Cobra aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Canon Moyen Scorpion aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Canon Moyen Scorpion Chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Canon Moyen Python aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Canon lourd Python aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Canon électrique Mantis chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" -msgstr "Laser à Impulsion Mantis Chenilles" +msgstr "Laser à Impulsion Mantis chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Lanceur Python chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Lanceur Mantis chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" -msgstr "Tueur de char Vengeance Chenillé" +msgstr "Tueur de char Vengeance chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" -msgstr "Canon Lourd Tigre Chenillé" +msgstr "Canon Lourd Tigre chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Canon à aiguille Tigre chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Canon à aiguille Retribution chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" -msgstr "Canon à aiguille Vengeance chenillé" +msgstr "Fusil à aiguille Vengeance chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" -msgstr "" +msgstr "Fusil Vengeance à chenilles à rail" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 -#, fuzzy +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" -msgstr "Anti-char Vengeance Chenilles" +msgstr "Canon Anti-char Vengeance chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 -#, fuzzy -msgid "Vengeance Tracks Gauss Scourge" -msgstr "Anti-char Vengeance Chenilles" - -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 #: data/mp/messages/strings/names.txt:1867 #, fuzzy +msgid "Vengeance Tracks Gauss Scourge" +msgstr "Anti-char Vengeance chenillé à rail" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" -msgstr "Bombes à Fragmentation" +msgstr "Bombes à Fragmentation Bug pour VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 #, fuzzy msgid "VTOL Bunker Buster Bug VTOL" -msgstr "Roquette Anti-Bunker VTOL" +msgstr "Roquette anti-abri pour VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 #, fuzzy msgid "VTOL Cluster Bomb Bay Scorpion VTOL" -msgstr "Bombes à Fragmentation Scorpion VTOL" +msgstr "Bombes à Fragmentation Scorpion pour VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 #, fuzzy msgid "VTOL Bunker Buster Scorpion VTOL" -msgstr "Roquette Anti-Bunker Scorpion VTOL" +msgstr "Roquette anti-abri Scorpion pour VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "Lanceur VTOL" @@ -9837,7 +10720,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "Canon à HV VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "Lanceur Scorpion VTOL" @@ -9847,7 +10730,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "Canon à HV Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "Lanceur Mantis VTOL" @@ -9856,133 +10739,132 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "Canon à HV Mantis VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 #, fuzzy msgid "Repair Turret Mantis Tracks" msgstr "Dépanneuse Mantis chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Lanceur Scorpion chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Canon Lourd Scorpion Chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" -msgstr "Lanceur Scorpion VTOL" +msgstr "Lanceur Scorpion pour VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" -msgstr "Roquette Anti-Bunker Scorpion VTOL" +msgstr "Roquette anti-abri Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" -msgstr "Tourelle de Commandement Vipère Chenillée" +msgstr "Tourelle de Commandement Vipère chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" -msgstr "Tourelle de Commandement Vipère Chenillée" +msgstr "Tourelle de Commandement Cobra chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" -msgstr "Tourelle de Commandement Scorpion Chenillée" +msgstr "Tourelle de Commandement Scorpion chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" -msgstr "Tourelle de Commandement Mantis Chenillée" +msgstr "Tourelle de Commandement Mantis chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Lanceur Cobra chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" -msgstr "Canon Lourd Mantis Chenillé" +msgstr "Canon lourd Mantis Chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" -msgstr "Tueur de char Mantis Chenillé" +msgstr "Tueur de char Mantis chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" -msgstr "Lance missile Scourge Mantis chenillé" +msgstr "Lanceur Scourge Mantis chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" -msgstr "Mitrailleuse Lourde Scorpion Chenillée" +msgstr "Mitrailleuse Lourde Scorpion chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Dépanneuse Scorpion chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Dépanneuse Lourde Scorpion aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Camion Cobra aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Camion Scorpion aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Camion Mantis aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Lance roquette Anti-Bunker Cobra chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Lance roquette Anti-Bunker Scorpion chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Lance roquette Anti-Bunker Mantis chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Lanceur Viper chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 #, fuzzy msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Mini lance-Roquettes Cobra Semi-chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 -#, fuzzy +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" -msgstr "Mini lance-Roquettes Cobra sur roues" +msgstr "Mini lance-Roquettes Cobra chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 #, fuzzy @@ -9990,7 +10872,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Lanceur de Mini-Roquettes Cobra chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Inferno Cobra semi-chenillé" @@ -9999,161 +10881,252 @@ msgid "HPV Cannon Python Hover" msgstr "Canon à HV Python aéro-glisseur" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Lance missile Python chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Canon gauss Python chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" -msgstr "Laser à Impulsion Python Chenillé" +msgstr "Laser à Impulsion Python chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" -msgstr "Laser à Impulsion Tigre Chenillé" +msgstr "Laser à Impulsion Tigre chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" -msgstr "Laser Lourd Tigre Chenillé" +msgstr "Laser Lourd Tigre chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" -msgstr "Canon Gauss Wyvern Chenillé" +msgstr "Canon Gauss Wyvern chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" -msgstr "Laser à Impulsion Wyvern Chenillé" +msgstr "Laser à Impulsion Wyvern chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" -msgstr "Laser Lourd Wyvern Chenillé" +msgstr "Laser Lourd Wyvern chenillé" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Mitrailleuse Viper Semi-chenillée" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Lance-flammes Viper Semi-chenillé" -#: data/mp/messages/resmessages12.rmsg:58 +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Inferno Cobra aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Canon Moyen Cobra semi-Chenillé" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 #, fuzzy +msgid "Inferno Python Hover" +msgstr "Canon à HV Python aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Canon d'assaut Python aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Canon d'assaut Python semi-chenillé" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Mitrailleuse Lourde Scorpion semi-Chenillée" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Canon d'Assaut Mantis aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Laser à Impulsions Leopard aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Laser à Impulsions Panther aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Canon Électrique: mis à jour" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Laser à Impulsion Tigre aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Canon Gauss Wyvern Chenillé" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Tour à Missiles Scourge chenillé" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Torche Retribution pour aéro-glisseur" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Mini lance-Roquettes Cobra semi-chenillé" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Lanceur de Mini-Roquettes Cobra semi-chenillé" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Bombes au Phosphore" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Bombes Explosives Anti-Blindage" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Châssis Moyen - Châtiment" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "Revanche Scourge VTOL" + +#: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" -msgstr "Augmente la vitesse de construction" +msgstr "vitesse de construction +10%" #: data/mp/messages/resmessages12.rmsg:97 #: data/mp/messages/resmessagesall.rmsg:214 -#, fuzzy msgid "Cannon accuracy +10%" -msgstr "Précision des Canons accrue" +msgstr "Précision des Canons +10%" #: data/mp/messages/resmessages12.rmsg:110 -#, fuzzy msgid "Flamer reload time -15%" -msgstr "Chargeur Automatique pour Lance-Flammes" +msgstr "Reharge des Lance-Flammes -15%" #: data/mp/messages/resmessages12.rmsg:136 #: data/mp/messages/resmessages23.rmsg:175 #: data/mp/messages/resmessages2.rmsg:890 -#, fuzzy msgid "Machinegun reload time -15%" -msgstr "Amélioration pour Mitrailleuse" +msgstr "recharge de Mitrailleuse -15%" #: data/mp/messages/resmessages12.rmsg:162 #: data/mp/messages/resmessages23.rmsg:188 #: data/mp/messages/resmessages3.rmsg:1176 -#, fuzzy msgid "Mortar accuracy +10%" -msgstr "Précision des Mortiers accrue" +msgstr "Précision des Mortiers +10%" #: data/mp/messages/resmessages12.rmsg:175 #: data/mp/messages/resmessages3.rmsg:1189 -#, fuzzy msgid "Mortar reload time -10%" -msgstr "Chargeur Automatique pour Mortier" +msgstr "Recharge Mortier -10%" #: data/mp/messages/resmessages12.rmsg:201 -#, fuzzy msgid "Rocket reload time -15%" -msgstr "Chargeur Automatique pour lance roquettes" +msgstr "Recharge pour lance roquettes -15%" #: data/mp/messages/resmessages12.rmsg:214 #: data/mp/messages/resmessages3.rmsg:890 -#, fuzzy msgid "Cannon reload time -10%" -msgstr "Chargeur Automatique pour Canon" +msgstr "temps de recharge du Canon -10%" #: data/mp/messages/resmessages12.rmsg:227 #: data/mp/messages/resmessages1.rmsg:579 #: data/mp/messages/resmessages3.rmsg:877 -#, fuzzy msgid "Cannon damage +25%" -msgstr "Dégâts des Canons augmentés" +msgstr "Dégâts des Canons +25%" #: data/mp/messages/resmessages12.rmsg:240 #: data/mp/messages/resmessages1.rmsg:748 #: data/mp/messages/resmessagesall.rmsg:175 -#, fuzzy msgid "Rocket accuracy +10%" -msgstr "Précision des Roquettes augmentée" +msgstr "Précision des Roquettes +10%" #: data/mp/messages/resmessages1.rmsg:32 #: data/mp/messages/resmessages3.rmsg:71 #: data/mp/messages/resmessages3.rmsg:84 -#, fuzzy msgid "Kinetic Armor +35%, Body Points +35%" -msgstr "Blindage Cinétique et Résistance augmentés" +msgstr "Blindage Cinétique +35%, Résistances +35%" #: data/mp/messages/resmessages1.rmsg:97 -#, fuzzy msgid "Armour +35%, Body Points +30%" -msgstr "Augmente le Blindage et la Résistance" +msgstr "Blindage +35%, Résistance +30%" #: data/mp/messages/resmessages1.rmsg:148 -#, fuzzy msgid "Armored guard tower with Lancer AT rocket" -msgstr "Tour de défense à Lance-Roquettes AC" +msgstr "Tour de défense renforcé avec Lance-Roquettes AC" #: data/mp/messages/resmessages1.rmsg:253 #: data/mp/messages/resmessages2.rmsg:331 #: data/mp/messages/resmessages3.rmsg:422 -#, fuzzy msgid "Repair Speed +100%" -msgstr "Accélère la Vitesse de Réparation" +msgstr "Vitesse de Réparation +100%" #: data/mp/messages/resmessages1.rmsg:306 #, no-c-format msgid "Factory output speed +100% per module" -msgstr "" +msgstr "Production d'usine +100% par module" #: data/mp/messages/resmessages1.rmsg:319 #: data/mp/messages/resmessagesall.rmsg:786 msgid "Factory output speed +60%" -msgstr "" +msgstr "Productiom d'usine +60%" #: data/mp/messages/resmessages1.rmsg:345 -#, fuzzy msgid "Research speed +85%" -msgstr "Recherche terminée : %s" +msgstr "Vitesse de recherche: +85%" #: data/mp/messages/resmessages1.rmsg:358 #: data/mp/messages/resmessages2.rmsg:370 #: data/mp/messages/resmessages3.rmsg:448 -#, fuzzy msgid "Research speed +30%" -msgstr "Recherche terminée : %s" +msgstr "Vitesse de recherche: +30%" #: data/mp/messages/resmessages1.rmsg:371 #: data/mp/messages/resmessages2.rmsg:58 @@ -10162,25 +11135,22 @@ msgstr "Recherche terminée : %s" #: data/mp/messages/resmessages3.rmsg:227 #: data/mp/messages/resmessages3.rmsg:461 #: data/mp/messages/resmessages3.rmsg:474 -#, fuzzy msgid "Armor +35%, Body Points +30%" -msgstr "Augmente le Blindage et la Résistance" +msgstr "Blindage +35%, Résistance +30%" #: data/mp/messages/resmessages1.rmsg:462 #: data/mp/messages/resmessages2.rmsg:500 #: data/mp/messages/resmessages3.rmsg:669 #: data/mp/messages/resmessages3.rmsg:682 -#, fuzzy msgid "Vehicle speed +5%" -msgstr "Châssis" +msgstr "Vitesse des Véhicules +5%" #: data/mp/messages/resmessages1.rmsg:475 #: data/mp/messages/resmessages2.rmsg:513 #: data/mp/messages/resmessages3.rmsg:695 #: data/mp/messages/resmessages3.rmsg:708 -#, fuzzy msgid "Kinetic armor +30%, body points +30%" -msgstr "Augmente le blindage cinétique et la résistance" +msgstr "blindage cinétique +30%, résistance +30%" #: data/mp/messages/resmessages1.rmsg:553 #: data/mp/messages/resmessages1.rmsg:566 @@ -10192,69 +11162,60 @@ msgstr "Fort contre: Véhicules et Emplacements" #: data/mp/messages/resmessages1.rmsg:605 #: data/mp/messages/resmessages2.rmsg:786 #: data/mp/messages/resmessagesall.rmsg:773 -#, fuzzy msgid "Flamer damage +25%" -msgstr "Augmente les dégâts des lance-flammes" +msgstr "dégâts des lance-flammes +25%" #: data/mp/messages/resmessages1.rmsg:644 #: data/mp/messages/resmessages1.rmsg:657 #: data/mp/messages/resmessages2.rmsg:877 #: data/mp/messages/resmessages3.rmsg:1007 #: data/mp/messages/resmessages3.rmsg:1020 -#, fuzzy msgid "Machinegun damage +25%" -msgstr "Augmente les dommages des Mitrailleuses" +msgstr "dommages des Mitrailleuses +25%" #: data/mp/messages/resmessages1.rmsg:683 #: data/mp/messages/resmessages2.rmsg:916 -#, fuzzy msgid "Mortar damage +25%" -msgstr "Augmente les dégâts des Mortiers" +msgstr "dégâts des Mortiers +25%" #: data/mp/messages/resmessages1.rmsg:709 -#, fuzzy msgid "Mini-Rocket accuracy +10%" -msgstr "Augmente la précision des Mini-Roquettes" +msgstr "précision des Mini-Roquettes +10%" #: data/mp/messages/resmessages1.rmsg:722 #: data/mp/messages/resmessages2.rmsg:929 -#, fuzzy msgid "Mini-Rocket damage +25%" -msgstr "Augmente les dégâts des Mini-Roquettes" +msgstr "dégâts des Mini-Roquettes +25%" #: data/mp/messages/resmessages1.rmsg:735 -#, fuzzy msgid "Mini-Rocket reload time -15%" -msgstr "Amélioration pour Mini-Roquettes" +msgstr "recharge des Mini-Roquettes -15%" #: data/mp/messages/resmessages1.rmsg:761 #: data/mp/messages/resmessages2.rmsg:942 -#, fuzzy msgid "Rocket damage +25%" -msgstr "Augmente les dégâts des Roquettes" +msgstr "dégâts des Roquettes +25%" #: data/mp/messages/resmessages23.rmsg:32 msgid "Power output +25%" -msgstr "" +msgstr "Puissance de sortie +25%" #: data/mp/messages/resmessages23.rmsg:45 #: data/mp/messages/resmessages3.rmsg:513 -#, fuzzy msgid "Construction speed +20%" -msgstr "Augmente la vitesse de construction" +msgstr "Vitesse de construction +20%" #: data/mp/messages/resmessages23.rmsg:136 #: data/mp/messages/resmessages2.rmsg:643 #: data/mp/messages/resmessages3.rmsg:812 msgid "AA accuracy +10%" -msgstr "" +msgstr "précision AA +10%" #: data/mp/messages/resmessages23.rmsg:160 #: data/mp/messages/resmessages2.rmsg:732 #: data/mp/messages/resmessages3.rmsg:862 -#, fuzzy msgid "Bomb Upgrade" -msgstr "Amélioration pour Bombardiers" +msgstr "Bombe: mis à jour" #: data/mp/messages/resmessages23.rmsg:161 #, fuzzy @@ -10265,22 +11226,19 @@ msgstr "Obus hautement explosifs améliorés" #: data/mp/messages/resmessages2.rmsg:734 #: data/mp/messages/resmessages3.rmsg:864 msgid "Bomb damage +25%" -msgstr "" +msgstr "domage des bombes +25%" #: data/mp/messages/resmessages2.rmsg:6 -#, fuzzy msgid "Thermal Armor +45%" -msgstr "Blindage Thermique" +msgstr "Blindage Thermique +45%" #: data/mp/messages/resmessages2.rmsg:19 -#, fuzzy msgid "Kinetic Armor +35%, and Body Points +35%" -msgstr "Blindage Cinétique et Résistance augmentés" +msgstr "Blindage Cinétique +35%, Résistance +35%" #: data/mp/messages/resmessages2.rmsg:357 -#, fuzzy msgid "Factory production rate +60%" -msgstr "Augmente la vitesse de production des usines" +msgstr "Taux de production des usines +60%" #: data/mp/messages/resmessages2.rmsg:358 #: data/mp/messages/resmessagesall.rmsg:787 @@ -10291,112 +11249,95 @@ msgstr "Toutes les usines de VTOLs améliorées automatiquement" #: data/mp/messages/resmessages2.rmsg:409 #: data/mp/messages/resmessages3.rmsg:500 msgid "Rearming speed +30%" -msgstr "" +msgstr "Vitesse de réarmement +30%" #: data/mp/messages/resmessages2.rmsg:526 -#, fuzzy msgid "Thermal armor +40%" -msgstr "Blindage Thermique" +msgstr "Blindage Thermique +40%" #: data/mp/messages/resmessages2.rmsg:656 #: data/mp/messages/resmessages3.rmsg:825 -#, fuzzy msgid "AA Flak damage +25%" -msgstr "Augmente les dégâts des armes de DCA" +msgstr "dégâts des armes de AA Flak +25%" #: data/mp/messages/resmessages2.rmsg:669 #: data/mp/messages/resmessages3.rmsg:838 msgid "AA reload time -15%" -msgstr "" +msgstr "temps de recharge des AA -15%" #: data/mp/messages/resmessages2.rmsg:838 #: data/mp/messages/resmessages3.rmsg:903 -#, fuzzy msgid "Howitzer accuracy +10%" -msgstr "Augmente la précision des Obusiers" +msgstr "précision des Howitzer +10%" #: data/mp/messages/resmessages2.rmsg:851 #: data/mp/messages/resmessages3.rmsg:916 -#, fuzzy msgid "Howitzer damage +25%" -msgstr "Augmente les dégâts des Obusiers" +msgstr "dégâts des Howitzer +25%" #: data/mp/messages/resmessages2.rmsg:864 #: data/mp/messages/resmessages3.rmsg:929 -#, fuzzy msgid "Howitzer reload time -10%" -msgstr "Chargeur Automatique pour Obusier" +msgstr "temps de recharge des Howitzers -10%" #: data/mp/messages/resmessages3.rmsg:6 -#, fuzzy msgid "Thermal Armor +35%" -msgstr "Blindage Thermique Mk3" +msgstr "Blindage Thermique +35%" #: data/mp/messages/resmessages3.rmsg:304 -#, fuzzy msgid "Armored guard tower with Pulse Laser" -msgstr "Tour de défense à Lance-Flammes" +msgstr "Tour renforcé de défense à impulsion laser" #: data/mp/messages/resmessages3.rmsg:435 msgid "Power output +30%" -msgstr "" +msgstr "Puissance de sortie +30%" #: data/mp/messages/resmessages3.rmsg:721 #: data/mp/messages/resmessagesall.rmsg:838 -#, fuzzy msgid "Thermal Armor +40%" -msgstr "Blindage Thermique" +msgstr "Blindage Thermique +40%" #: data/mp/messages/resmessages3.rmsg:968 -#, fuzzy msgid "Laser accuracy +10%" -msgstr "Augmente la précision des Lasers" +msgstr "précision des lasers +10%" #: data/mp/messages/resmessages3.rmsg:981 -#, fuzzy msgid "Laser damage +25%" -msgstr "Augmente les dommages des Lasers" +msgstr "dommages des lasers +25%" #: data/mp/messages/resmessages3.rmsg:994 msgid "Laser reload time -15%" -msgstr "" +msgstr "temps de recharge des laser -15%" #: data/mp/messages/resmessages3.rmsg:1059 #: data/mp/messages/resmessages3.rmsg:1072 -#, fuzzy msgid "Missile accuracy +10%" -msgstr "Augmente la précision des Missiles" +msgstr "précision des Missiles +10%" #: data/mp/messages/resmessages3.rmsg:1085 -#, fuzzy msgid "Missile damage +25%" -msgstr "Augmente les dégâts des Missiles" +msgstr "dégâts des Missiles +25%" #: data/mp/messages/resmessages3.rmsg:1150 #: data/mp/messages/resmessages3.rmsg:1163 -#, fuzzy msgid "Missile reload time -15%" -msgstr "Durée de la Mission - %s" +msgstr "recharge de Missile -15%" #: data/mp/messages/resmessages3.rmsg:1241 -#, fuzzy msgid "Rail Gun accuracy +10%" -msgstr "Précision des Canons Électriques augmentée" +msgstr "Précision des Canons Électriques +10%" #: data/mp/messages/resmessages3.rmsg:1254 -#, fuzzy msgid "Rail Gun damage +25%" -msgstr "Dégâts des Canons Électriques augmentés" +msgstr "Dégâts des Canons Électriques +25%" #: data/mp/messages/resmessages3.rmsg:1267 -#, fuzzy msgid "Rail Gun reload time -15%" -msgstr "Amélioration pour Canon Électrique" +msgstr "recharge Canon Électrique -15%" #: data/mp/messages/resmessagesall.rmsg:84 -#, fuzzy msgid "Sensor Range +25%" -msgstr "Portée des Senseurs" +msgstr "Portée des Senseurs +25%" #: data/mp/messages/resmessagesall.rmsg:96 #, fuzzy @@ -10404,9 +11345,8 @@ msgid "Improved Thermal Emissions detection" msgstr "Nouvelle technologie de détection d'émissions thermiques" #: data/mp/messages/resmessagesall.rmsg:97 -#, fuzzy msgid "Sensor Range +15%" -msgstr "Portée des Senseurs" +msgstr "Portée des Senseurs +15%" #: data/mp/messages/resmessagesall.rmsg:109 #, fuzzy @@ -10414,13 +11354,12 @@ msgid "Advanced Thermal Emissions detection" msgstr "Nouvelle technologie de détection d'émissions thermiques" #: data/mp/messages/resmessagesall.rmsg:110 -#, fuzzy msgid "Sensor Range +10%" -msgstr "Portée des Senseurs" +msgstr "Portée des senseurs +10%" #: data/mp/messages/resmessagesall.rmsg:135 msgid "Radar detector tower detects enemy sensors" -msgstr "" +msgstr "Tour de détection radar à détecter un senseurs ennemi" #: data/mp/messages/resmessagesall.rmsg:136 #, fuzzy @@ -10446,11 +11385,11 @@ msgstr "Nécessite une usine à VTOLs agrandie pour être produit" #: data/mp/messages/resmessagesall.rmsg:239 msgid "Incendiary howitzer emplacement" -msgstr "Emplacement à obusier incendiaire" +msgstr "Emplacement à howitzer incendiaire" #: data/mp/messages/resmessagesall.rmsg:252 msgid "Armored Incendiary Mortar battery pit" -msgstr "Mortier Incendiare retranché" +msgstr "batterie de mortier incendiare retranché" #: data/mp/messages/resmessagesall.rmsg:265 msgid "Armored strongpoint with Plasmite Flamer" @@ -10536,7 +11475,7 @@ msgstr "Vue complète du champ de bataille" #: data/mp/messages/resmessagesall.rmsg:501 msgid "Does not offer sensor targeting" -msgstr "" +msgstr "Pas de visé par senseur" #: data/mp/messages/resmessagesall.rmsg:512 #: data/mp/messages/resmessagesall.rmsg:707 @@ -10558,11 +11497,11 @@ msgstr "Capacité offensive impressionante" #: data/mp/messages/resmessagesall.rmsg:527 #, fuzzy msgid "Narrow area of effect" -msgstr "Zone d'effet étroite" +msgstr "effet sur une zone étroite" #: data/mp/messages/resmessagesall.rmsg:538 msgid "Armored guard tower with Nexus Link" -msgstr "Tour de défense à Lien Nexus" +msgstr "Tour de garde renforcé par un lien Nexus" #: data/mp/messages/resmessagesall.rmsg:551 #: data/mp/messages/resmessagesall.rmsg:564 @@ -10580,23 +11519,23 @@ msgstr "Fort contre: Véhicules" #: data/mp/messages/resmessagesall.rmsg:577 msgid "Armored strongpoint with Heavy Laser" -msgstr "Mur armé d'un laser lourd" +msgstr "point renforcé avec un laser lourd" #: data/mp/messages/resmessagesall.rmsg:590 msgid "Armored guard tower with EMP Cannon" -msgstr "Tour de défense à canon EMP" +msgstr "Tour de garde renforcé avec un canon EMP" #: data/mp/messages/resmessagesall.rmsg:603 msgid "Armed with Cyborg Pulse Laser" -msgstr "Équipé d'un Laser à Impulsions" +msgstr "Équipé d'un Laser à Impulsions pour cuborg" #: data/mp/messages/resmessagesall.rmsg:616 msgid "Armed with Cyborg Rail Gun" -msgstr "Équipé d'un Canon Électrique" +msgstr "Équipé d'un Canon Électrique pour cyborg" #: data/mp/messages/resmessagesall.rmsg:629 msgid "Armed with Cyborg Scourge Missile Launcher" -msgstr "Équipé d'un Lance-Missiles Scourge" +msgstr "Équipé d'un Lance-Missiles Scourge pour cyborg" #: data/mp/messages/resmessagesall.rmsg:642 msgid "Uses advanced mass driver railgun technology" @@ -10720,7 +11659,7 @@ msgid "Upgraded battlefield computer system" msgstr "Système informatique amélioré" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Transport Cyborg" @@ -10751,693 +11690,685 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Mini-artillerie Cobra Semi-chenillée" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Détecteur de Radar" #: data/mp/messages/strings/names.txt:380 -#, fuzzy msgid "Radar Detector Tower" -msgstr "Tour de Contrôle Aérien" +msgstr "Tour de detection Aérien" #: data/mp/messages/strings/names.txt:385 msgid "Nexus Link" msgstr "Lien Nexus" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Tourelle de Lien Nexus" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Mur de Béton Renforcé" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 #, fuzzy msgid "Inferno Bunker" msgstr "Bunker à lance-roquettes" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Site DCA Tornade" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Site DCA Cyclone" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 -#, fuzzy +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" -msgstr "Point Défensif Lance-Flammes" +msgstr "Point Défensif à impulsion laser" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 -#, fuzzy +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" -msgstr "Laser à Impulsions" +msgstr "tour à Impulsions laser" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 -#, fuzzy +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" -msgstr "Augmente la précision des Missiles" +msgstr "batterie de Missiles Seraph" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Batterie de Mini-Roquettes" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Poste de Commande pour Laser Orbital" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 #, fuzzy msgid "VTOL Cluster Bomb Bay" msgstr "Bombes à Fragmentation" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Mur en Béton du Collectif" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Mur Nexus" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Angle en Béton Renforcé" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Béton Plastifié Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Béton Plastique-Acier" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Béton Plastique-Acier MK2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Béton Plastique-Acier MK3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Jeu" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 #, fuzzy msgid "Hyper Velocity Cannon Emplacement" msgstr "Canon à Hyper Vélocité" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 #, fuzzy msgid "Seraph Missile Battery" msgstr "Batterie de Missiles Angel" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Tour lance-flammes" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 -#, fuzzy +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" -msgstr "Canon à Hyper Vélocité" - -#: data/mp/messages/strings/names.txt:805 -#, fuzzy -msgid "Automated Manufacturing" -msgstr "Réarmement Automatisé" - -#: data/mp/messages/strings/names.txt:806 -#, fuzzy -msgid "Automated Manufacturing Mk2" -msgstr "Réarmement Automatisé Mk2" - -#: data/mp/messages/strings/names.txt:807 -#, fuzzy -msgid "Automated Manufacturing Mk3" -msgstr "Réarmement Automatisé Mk3" +msgstr "point défensif avec Canon à Hyper Vélocité" #: data/mp/messages/strings/names.txt:808 -#, fuzzy -msgid "Robotic Manufacturing" -msgstr "Menu Assemblage" +msgid "Automated Manufacturing" +msgstr "Manufacture Automatisé" #: data/mp/messages/strings/names.txt:809 -#, fuzzy -msgid "Robotic Manufacturing Mk2" -msgstr "Réarmement Robotisé Mk2" +msgid "Automated Manufacturing Mk2" +msgstr "manufacture Automatisé Mk2" #: data/mp/messages/strings/names.txt:810 -#, fuzzy -msgid "Robotic Manufacturing Mk3" -msgstr "Réarmement Robotisé Mk3" +msgid "Automated Manufacturing Mk3" +msgstr "manufacture Automatisé Mk3" #: data/mp/messages/strings/names.txt:811 +msgid "Robotic Manufacturing" +msgstr "manufacture robotisé" + +#: data/mp/messages/strings/names.txt:812 +msgid "Robotic Manufacturing Mk2" +msgstr "manufacture robotisé Mk2" + +#: data/mp/messages/strings/names.txt:813 +msgid "Robotic Manufacturing Mk3" +msgstr "manufacture robotisé Mk3" + +#: data/mp/messages/strings/names.txt:814 #, fuzzy msgid "Advanced Manufacturing" msgstr "Techniques de Guerre Avancées" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 #, fuzzy msgid "Advanced Manufacturing Mk2" msgstr "Production de Véhicules Avancée Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 #, fuzzy msgid "Self-Replicating Manufacturing" msgstr "Production de véhicules par Auto-réplication" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 #, fuzzy msgid "Advanced Manufacturing Mk3" msgstr "Production de Véhicules Avancée Mk3" -#: data/mp/messages/strings/names.txt:833 -#, fuzzy -msgid "Automated Repair Facility Mk2" -msgstr "Réparations Automatisées" - -#: data/mp/messages/strings/names.txt:834 -#, fuzzy -msgid "Automated Repair Facility Mk3" -msgstr "Réparations Automatisées" - -#: data/mp/messages/strings/names.txt:835 -#, fuzzy -msgid "Robotic Repair Facility" -msgstr "Réparations Robotisées" - #: data/mp/messages/strings/names.txt:836 -#, fuzzy -msgid "Robotic Repair Facility Mk2" -msgstr "Réparations Robotisées Mk2" +msgid "Automated Repair Facility Mk2" +msgstr "Atelier de Réparations Automatisées Mk2" #: data/mp/messages/strings/names.txt:837 -#, fuzzy -msgid "Advanced Repair Facility" -msgstr "Réparations Avancées" +msgid "Automated Repair Facility Mk3" +msgstr "Atelier de Réparations Automatisées Mk3" #: data/mp/messages/strings/names.txt:838 -#, fuzzy -msgid "Robotic Repair Facility Mk3" -msgstr "Réparations Robotisées Mk3" +msgid "Robotic Repair Facility" +msgstr "Atelier de Réparations Robotisées" #: data/mp/messages/strings/names.txt:839 -#, fuzzy -msgid "Advanced Repair Facility Mk2" -msgstr "Réparations Avancées Mk2" +msgid "Robotic Repair Facility Mk2" +msgstr "Atelier de Réparations Robotisées Mk2" #: data/mp/messages/strings/names.txt:840 -#, fuzzy -msgid "Advanced Repair Facility Mk3" -msgstr "Réparations Avancées Mk3" +msgid "Advanced Repair Facility" +msgstr "Atelier de Réparations Avancées" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:841 +msgid "Robotic Repair Facility Mk3" +msgstr "Atelier de Réparations Robotisées Mk3" + +#: data/mp/messages/strings/names.txt:842 +msgid "Advanced Repair Facility Mk2" +msgstr "Atelier de Réparations Avancées Mk2" + +#: data/mp/messages/strings/names.txt:843 +msgid "Advanced Repair Facility Mk3" +msgstr "Atelier de Réparations Avancées Mk3" + +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Auto-Réparation" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Tourelle de Réparations Lourde" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Ciber virus de NEXUS" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Circuits Résisitifs NEXUS" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Circuits Résistifs NEXUS Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Circuits Résistifs NEXUS Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 #, fuzzy msgid "Cluster Bomb Bay" msgstr "Bombes à Fragmentation" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 #, fuzzy msgid "HE Bomb Shells" msgstr "Obus HE pour Mortier" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 #, fuzzy msgid "Improved Bomb Warhead" msgstr "Ogive à charge creuse améliorée" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 #, fuzzy msgid "Advanced Bomb Warhead" msgstr "Ogive Avancée pour Missile" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Chargeur Rapide d'obusier" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Mitrailleuse à Cadence Rapide" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Ordinateur Ballistique" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "Mini-Roquettes HE" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "Mini-Roquettes HE Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "Mini-Roquettes HE Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Tour canon d'Assaut" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Réparateur Cobra chenillé" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "Canon lourd Python chenillé" -#: data/mp/messages/strings/names.txt:1514 -msgid "Bunker Buster Cobra Hover" -msgstr "Lance Roquette Anti-Bunker Cobra hovercraft" - -#: data/mp/messages/strings/names.txt:1516 -msgid "Sensor Upgrade Mk2" -msgstr "Amélioration de capteur MK2" - #: data/mp/messages/strings/names.txt:1517 -msgid "Sensor Upgrade Mk3" -msgstr "Amélioration de capteur MK3" +msgid "Bunker Buster Cobra Hover" +msgstr "Lance Roquette Anti-Bunker Cobra aéro-glisseur" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1519 +msgid "Sensor Upgrade Mk2" +msgstr "Mise à jour de capteur MK2" + +#: data/mp/messages/strings/names.txt:1520 +msgid "Sensor Upgrade Mk3" +msgstr "Mise à jour pour capteur MK3" + +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Générateur Turbine à vapeur MK2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Générateur Turbine à Gaz MK2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Générateur Turbine à Gaz MK3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Générateur Turbine à vapeur MK3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Cyborg Lance-flammes Thermique" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Lance-flammes Thermique" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Cyborg Grenadier" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Ingénieur Cyborg" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Mécanicien Cyborg" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 -#, fuzzy -msgid "Incendiary Howitzer" -msgstr "Obusier Incendiaire" - -#: data/mp/messages/strings/names.txt:1637 #: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 +msgid "Incendiary Howitzer" +msgstr "Howitzer Incendiaire" + +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 #, fuzzy msgid "Incendiary Howitzer Emplacement" msgstr "Emplacement à Obusier Incendiaire" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Lance-flammes au Plasma" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Bunker Lance-Plasma" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 #, fuzzy msgid "Incendiary Mortar" msgstr "Mortier Incendiaire" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 #, fuzzy msgid "Incendiary Mortar Pit" msgstr "Batterie de Mortier Incendiaire" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Blindage Thermique Superdense pour Cyborgs" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Blindage Thermique Superdense pour Cyborgs Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Blindage Thermique Superdense pour Cyborgs Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Blindage Thermique Superdense pour Véhicules" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Blindage Thermique Superdense pour Véhicules Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Blindage Thermique Superdense pour Véhicules Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super à canon Lourd" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Cyborg à Auto-Canon" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super Cyborg à Canon à HV" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Cyborg Anti-Char" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Laser Lourd" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "Laser Lourd VTOL" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Emplacement à Laser Lourd" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Canon d'Assaut Double" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Bunker à Canon d'Assaut Double" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Centre de Communications Satellite" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Radar Large Bande" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Tour Radar Large Bande" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Canon Plasma" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Emplacement à Canon Plasma" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Cyborg à Laser à Pulsation" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Cyborg à Canon Électrique" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super Cyborg à Missile Scourge" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Tourelle de Lien Nexus" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "Cannon EMP" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Tour à Canon EMP" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Forteresse à Catapulte Électromagnétique" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Catapulte Électromagnétique" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Forteresse à Canon" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Bastion à Roquette" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Forteresse à Missile" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "Châssis Super Lourd - Viverne" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Viverne" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 #, fuzzy msgid "Multi Turret Body - Dragon" msgstr "Châssis Super Lourd - Dragon" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragon" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Gel Plasma Très Haute Température" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Gel Plasma Très Haute Température Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Gel Plasma Très Haute Température Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "Mortier EMP" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Mortier Retranché EMP" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Laser AA Stormbringer" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Emplacement Strombringer" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Point fortifié à SAM Vindicator" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Point fortifié à DCA Tourbillon" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Point fortifié à DCA Cyclone" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Point fortifié à DCA Avenger" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Double Fusil d'Assaut" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Point fortifié à canon d'assaut jumelés" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "Baie de largage de Bombes Plasmite pour VTOL" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Bombes au Plasma" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "Lance-Missile EMP VTOL" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Lance-Missile EMP" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 -#, fuzzy -msgid "Command Turret II" -msgstr "Tourelle de Commandement" - -#: data/mp/messages/strings/names.txt:1809 #: data/mp/messages/strings/names.txt:1810 -#, fuzzy -msgid "Command Turret III" -msgstr "Tourelle de Commandemet Mk3" - #: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 -#, fuzzy -msgid "Command Turret IV" -msgstr "Tourelle de Commandement" +msgid "Command Turret II" +msgstr "Tourelle de Commandement II" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 +msgid "Command Turret III" +msgstr "Tourelle de Commandemet III" + +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 +msgid "Command Turret IV" +msgstr "Tourelle de Commandement IV" + +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "Canon à hyper vélocité VTOL" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "Canon à HV Scorpion VTOL" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 #, fuzzy msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "Canon à hyper vélocité VTOL" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Lanceur de Mini-Roquettes Cobra chenillé" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "Canon lourd Python aéro-glisseur" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Châssis Moyen - Châtiment" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11470,9 +12401,8 @@ msgstr "Espagnol" #: lib/framework/i18n.c:62 #: lib/framework/i18n.c:119 -#, fuzzy msgid "Estonian" -msgstr "Roumain" +msgstr "Estonien" #: lib/framework/i18n.c:64 #: lib/framework/i18n.c:121 @@ -11496,9 +12426,8 @@ msgstr "Irlandais" #: lib/framework/i18n.c:75 #: lib/framework/i18n.c:132 -#, fuzzy msgid "Croatian" -msgstr "Latin" +msgstr "Croatien" #: lib/framework/i18n.c:76 #: lib/framework/i18n.c:133 @@ -11553,9 +12482,8 @@ msgstr "Slovénien" #: lib/framework/i18n.c:98 #: lib/framework/i18n.c:150 -#, fuzzy msgid "Ukrainian" -msgstr "Frisons" +msgstr "Ukrénien" #: lib/framework/i18n.c:99 #: lib/framework/i18n.c:151 @@ -11571,32 +12499,28 @@ msgstr "Chinois Traditionnel" msgid "Latin" msgstr "Latin" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 #, fuzzy msgid "Enter password here" msgstr "Entrez le mot de passe " -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Impossible de résourdre le DNS du serveur maître (%s) !" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Impossible de communiquer avec le serveur maître ! Le port TCP %u est-il ouvert en sortie ?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr "" - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11683,9 +12607,8 @@ msgid "Enable a multiplay only mod" msgstr "Active un mod pour multijoueur" #: src/clparse.c:244 -#, fuzzy msgid "Disable asserts" -msgstr "Désactiver les Ombres" +msgstr "Désactiver les assertions" #: src/clparse.c:245 msgid "Causes a crash to test the crash handler" @@ -11733,7 +12656,7 @@ msgstr "Désactiver le son" #: src/clparse.c:254 msgid "Activate self-test" -msgstr "" +msgstr "Activé l'auto-diagnostique" #: src/clparse.c:255 msgid "connect directly to IP/hostname" @@ -11747,15 +12670,15 @@ msgstr "hôte" msgid "go directly to host screen" msgstr "aller directement à l'écran de l'hôte" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Joueur" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nouveau Véhicule" @@ -11771,7 +12694,7 @@ msgstr "Mode de Propulsion" #: src/design.c:595 #: src/design.c:621 msgid "Vehicle Turret" -msgstr "Équipement" +msgstr "véhicule à tourrelle" #: src/design.c:642 msgid "Delete Design" @@ -11794,18 +12717,18 @@ msgstr "Puissance du Moteur" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Poids" @@ -11819,667 +12742,657 @@ msgstr "Énergie Requise à l'assemblage" msgid "Total Body Points" msgstr "Résistance Totale" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Consomation d'Energie" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transporteur" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " -msgstr "" +msgstr "Hydra " -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Portée des Senseurs" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Puissance des Senseurs" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "Puissance ECM" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Points de construction" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Portée" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Dégâts" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Cadence de Tir" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Vitesse en Vol" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" -msgstr "Vitesse sur Route" +msgstr "Vitesse sur route" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Vitesse Hors-Route" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Vitesse sur l'Eau" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Armes" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Systèmes" -#: src/display3d.c:562 -#, fuzzy +#: src/display3d.c:566 msgid "Player left" -msgstr "Joueur" +msgstr "Joueur à quitter" -#: src/display3d.c:562 -#, fuzzy +#: src/display3d.c:566 msgid "Player dropped" -msgstr "Joueur" +msgstr "Joueur échapper" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." msgstr "Construction Impossible. Le Gisement de Pétrole est en Feu." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Endommagé à %d%% - Expérience %d, %s" -#: src/display.c:1857 -#, fuzzy, c-format +#: src/display.c:1875 +#, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" -msgstr "%s - Endommagé à %d%% - Expérience %d, %s" +msgstr "%s - Allié - Endommagé à %d%% - Expérience %d, %s" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" msgstr "Construction d'un Puits de Pétrole" -#: src/display.c:2048 +#: src/display.c:2078 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Construction d'un Puits de Pétrole" -#: src/display.c:2049 +#: src/display.c:2079 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Construction d'un Puits de Pétrole" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Unité Perdue !" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Structure Restaurée" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Groupe %u selectioné - %u Unité" msgstr[1] "Groupe %u selectioné - %u Unités" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u unité assignée au groupe %u" msgstr[1] "%u unités assignées au groupe %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Caméra centrée sur le groupe %u - %u Unité" msgstr[1] "Caméra centrée sur le groupe %u - %u Unités" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Alignement avec le groupe %u - %u Unité" msgstr[1] "Alignement avec le groupe %u - %u Unités" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Débutant" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Deuxième Classe" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Aspirant" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Normal" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professionnel" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Vétéran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Élite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Spécial" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Héros" -#: src/frontend.c:252 +#: src/frontend.c:253 msgid "Single Player" msgstr "Un Joueur" -#: src/frontend.c:253 +#: src/frontend.c:254 msgid "Multi Player" msgstr "Multi-joueurs" -#: src/frontend.c:254 -#: src/frontend.c:312 -msgid "Tutorial" -msgstr "Tutorial" - #: src/frontend.c:255 -msgid "Options" -msgstr "Options" +#: src/frontend.c:313 +msgid "Tutorial" +msgstr "Tutorielle" #: src/frontend.c:256 +msgid "Options" +msgstr "" + +#: src/frontend.c:257 msgid "View Intro" msgstr "Voir Intro" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" -msgstr "Quitter" +msgstr "Quitter la partie" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "MENU PRINCIPAL" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "Partie Rapide" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "TUTORIAUX" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Menu précédent" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "Nouvelle Campagne" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Démarrer escarmouche" -#: src/frontend.c:372 -#, fuzzy -msgid "Challenges" -msgstr "Pillard" - #: src/frontend.c:373 +msgid "Challenges" +msgstr "Défis" + +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "Charger une Partie" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "UN JOUEUR" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 #: src/mission.c:2526 #: src/mission.c:2631 msgid "Load Saved Game" msgstr "Charger une partie Enregistrée" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "MULTI-JOUEURS" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Créer une Nouvelle Partie" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "Joindre une Partie" -#: src/frontend.c:584 +#: src/frontend.c:585 #: src/multiint.c:1254 msgid "OPTIONS" -msgstr "OPTIONS" +msgstr "" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "Options du Jeu" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "Options Graphiques" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "Options Vidéos" -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "Options Audio" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "Options souris" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" msgstr "Raccourcis Clavier" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "Affichage des Vidéos" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" -msgstr "" +msgstr "1X" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" -msgstr "" +msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "Plein Écran" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "Tremblements de l'écran (explosion)" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "Activé" -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "Désactivé" -#: src/frontend.c:686 +#: src/frontend.c:687 #: src/multiint.c:1323 msgid "Fog" msgstr "Brouillard" -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "Brume" -#: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:694 +#: src/frontend.c:761 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Brouillard de guerre" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Sous-titres" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Ombres" -#: src/frontend.c:729 -#, fuzzy +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" -msgstr "OPTIONS" +msgstr "OPTIONS GRAPHIQUES" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Volume de la Voix" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Volume des Bruits(FX)" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Volume de la Musique" -#: src/frontend.c:875 -#, fuzzy +#: src/frontend.c:868 msgid "AUDIO OPTIONS" -msgstr "OPTIONS" +msgstr "OPTIONS AUDIO" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "Paramètres Visuels*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "Fenêtré" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Résolution*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Taille des Textures" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" msgstr "Fréquence da rafraîchissement verticale*" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" msgstr "* Le jeu doit être redémarré pour que ces options s'appliquent" -#: src/frontend.c:976 +#: src/frontend.c:969 #, fuzzy msgid "VIDEO OPTIONS" msgstr "OPTIONS VIDÉOS" -#: src/frontend.c:1134 -#, fuzzy +#: src/frontend.c:1127 msgid "Reverse Rotation" -msgstr "Souris Inversée" +msgstr "Rotation Inversée" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "Piéger le Curseur" -#: src/frontend.c:1157 -#, fuzzy +#: src/frontend.c:1150 msgid "Colored Cursors*" msgstr "Curseur Coloré*" -#: src/frontend.c:1170 +#: src/frontend.c:1163 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Inverser les Boutons de la Souris" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" msgstr "* Risque de diminuer les performances" -#: src/frontend.c:1183 +#: src/frontend.c:1176 #, fuzzy msgid "MOUSE OPTIONS" msgstr "OPTIONS SOURIS" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "Difficulté" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "Facile" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "Normale" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "Difficile" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "Vitesse de Défilement" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "Langue" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" msgstr "Couleur des Unités" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "OPTIONS" -#: src/frontend.c:1693 +#: src/frontend.c:1706 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "" +msgid "Mod: " +msgstr "Mod: " -#: src/hci.c:1363 -#, fuzzy +#: src/hci.c:1360 msgid "MAP SAVED!" -msgstr "PARTIE SAUVEGARDÉE!" +msgstr "Carte SAUVEGARDÉE!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 #, fuzzy msgid "GAME SAVED: " msgstr "PARTIE SAUVEGARDÉE!" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" msgstr "Échec de la création du bâtiment" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." msgstr "Le joueur %u Triche (Il se sert du debug menu pour se construire un nouveau bâtiment: %s.)" -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." msgstr "Le joueur %u Triche (Il se sert du debug menu pour s'obtenir une nouvelle technologie: %s.)" -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Le joueur %u Triche (Il se sert du debug menu pour se faire une nouvelle unitée: %s.)" -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" msgstr "Commandants (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" msgstr "Panneau d'Informations (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" msgstr "Assemblage (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" msgstr "Conception (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" msgstr "Recherche (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" msgstr "Construction (F3)" -#: src/hci.c:3891 +#: src/hci.c:3876 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Énergie" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" msgstr "Tuile" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" msgstr "Placer des tuiles sur la carte" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" msgstr "Unité" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" msgstr "Placer des Unités sur la carte" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" msgstr "Structure" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" msgstr "Placer des Bâtiments sur la carte" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" msgstr "Fonction" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" msgstr "Placer les éléments sur la carte" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" msgstr "Mettre en pause ou enlever la pause" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" -msgstr "" +msgstr "Align height of all map objects" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Quitter" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" msgstr "Quitter" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Barre de Progression" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" msgstr "Point de Livraison" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" msgstr "Production en boucle" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "Défilement à Gauche" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "Défilement à droite" @@ -12491,7 +13404,7 @@ msgstr "Reprendre le Jeu" #: src/ingameop.c:142 msgid "WARNING: You're the host. If you quit, the game ends for everyone!" -msgstr "" +msgstr "Avertissement: Vous êtes l'hôte. Si vous quitter, la partie finit pour tous!" #: src/ingameop.c:195 #: src/ingameop.c:548 @@ -12517,11 +13430,22 @@ msgstr "L'hôte à quitté la partie !" #: src/ingameop.c:370 msgid "The game can't continue without the host." -msgstr "" +msgstr "La partie ne peux continuer sans l'hôte." #: src/ingameop.c:376 msgid "--> QUIT <--" +msgstr "--> QUITTER <--" + +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." msgstr "" +"Un mod requis ne peux être charger: %s\n" +"\n" +"Warzone va essayer de charger la partie sans lui." #: src/intdisplay.c:197 #, fuzzy @@ -12538,7 +13462,7 @@ msgid "Power Accrued" msgstr "Puissance Accrue" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSE" @@ -12665,293 +13589,292 @@ msgstr "Lui assigner la production d'une usine de VTOLs" msgid "Circle" msgstr "Cercle" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Désolé, ce code est désactivé durant les jeux multijoueurs." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Attention ! Ce code est buggé. Nous vous recommandons de ne PAS l'utiliser." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Voyons voir ce que tu vois !" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "C'est bon, je désactive l'affichage des senseurs !" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "Le joueur %u Triche (Il se sert du debug menu pour se faire une nouvelle unitée: %s.)" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "Le joueur %u utilise un code de triche :%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Mange-toi ça dans les dents !!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Prend ça cool !" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "Chaos" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Surcharge de Puissance" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "De Retour à la Normalité !" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Sois plus Audacieux !" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "À Deux, c'est Mieux !" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "L'affichage du nombre d'images par secondes est activé" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "L'affichage du nombre d'images par secondes est desactivé" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; Limite-FPSt: %d; PIEs %d; polys %d; Terr. polys %d; Etats %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" -msgstr "" +msgstr "(le joueur %u) utiloise une tricherie :Num Droids: %d Num Structures: %d Num Features: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Énergie Infinie Désactivée (c'est bien !)" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Énergie Infinie activée (Espèce de Tricheur !)" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Tout les éléments sont disponibles" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Brouillard activé" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Brouillard désactivé" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" -msgstr "" +msgstr "Avertissement! Cette tricherie peut causé dire problèmes plus tard! [%s]" -#: src/keybind.c:1179 -#, fuzzy +#: src/keybind.c:1175 msgid "Ending Mission." -msgstr "Réception d'une transmission..." +msgstr "Termine la mission" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" -msgstr "LES CODES DE TRICHE SONT MAINTENANT ACTIVÉS !" +msgstr "LES TRICHERIES SONT MAINTENANT ACTIVÉS !" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" -msgstr "LES CODES DE TRICHE SONT DÉSACTIVÉS !" +msgstr "LES TRICHERIES SONT DÉSACTIVÉS !" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Mode dieu-tout-puissant activé" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Mode dieu-tout-puissant désactivé !" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Caméra Réorientée vers le Nord" -#: src/keybind.c:1369 -#, fuzzy, c-format +#: src/keybind.c:1365 +#, c-format msgid "Trap cursor %s" -msgstr "Piéger le Curseur" +msgstr "Piéger le Curseur %s" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "Chercheur Exténué : On a fait du mieux qu'on a pu et on croit qu'on a réussi !" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "Le joueur %u utilise un code de triche:%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Menu Recherche" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Afficher seulement l'énergie des unitées sélectionnées" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Toujours afficher l'énergie des unitées" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Toujours afficher l'énergie des unitées et bâtiments" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Mode Démonstration désactivé - Retour au Jeu Normal" -#: src/keybind.c:1546 +#: src/keybind.c:1542 #, fuzzy msgid "Debug menu is Open" msgstr "Le menu de débogage est Ouvert" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Impossible de localiser le moindre extracteur de ressources !" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Brrr... Il fait si froid... IL NEIGE" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... IL PLEUT" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Prévisions Locales : Ciel dégagé dans toute la Région... AUCUNE MÉTÉO" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Attention ! Ceci peut avoir des conséquences désastreuses si il est mal utilisé dans les missions." -#: src/keybind.c:1897 +#: src/keybind.c:1893 #, fuzzy msgid "All enemies destroyed by cheating!" msgstr "L'ennemi a été détruit par un TRICHEUR !!!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" -msgstr "" +msgstr "Destroying selected droids and structures!" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Vue Centrée sur le quartier général, direction NORD" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Impossible de localiser le Quartier Général !" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." -msgstr "" +msgstr "Formation speed limiting has been removed from the game due to bugs." -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" -msgstr "" +msgstr "Vertical rotation direction: Normal" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" -msgstr "" +msgstr "Vertical rotation direction: Flipped" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" -msgstr "" +msgstr "L'Écran brasse lorsque des choses meurts: Off" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" -msgstr "" +msgstr "L'Écran brasse lorsque des choses meurts: On" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Désolé, ce code est désactivé durant les jeux multijoueurs." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Réinitialisation de la Vitesse du Jeu" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Vitesse de Jeu augmentée à %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Vitesse de Jeu réduite à %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Le menu des Constructions va se réouvrir" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Le menu des constructions ne se réouvrira pas" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar Bicolore Ami-Ennemi" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar montrant les couleurs des joueurs" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar ne montrant que les objets" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar mélangeant terrain et hauteur" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar montrant le terrain" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar montrant le terrain" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar montrant la hauteur" @@ -13140,9 +14063,8 @@ msgid "Select Commander 9" msgstr "Sélectionner le Commandant 9" #: src/keymap.c:350 -#, fuzzy msgid "Multiplayer Options / Alliance dialog" -msgstr "Options Multijoueurs" +msgstr "Options Multijoueurs / dialogue des alliances" #: src/keymap.c:353 msgid "Snap View to North" @@ -13246,7 +14168,7 @@ msgstr "Voir le Commandant Suivant" #: src/keymap.c:378 msgid "Toggle Overlays" -msgstr "" +msgstr "Bascules des Overlays" #: src/keymap.c:379 msgid "Console On/Off" @@ -13286,7 +14208,7 @@ msgstr "Selectionner toutes les Autochenilles" #: src/keymap.c:419 msgid "Select all Hovers" -msgstr "Selectionner tous les Aéroglisseurs" +msgstr "Selectionner tous les aéro-glisseur" #: src/keymap.c:421 msgid "Select all Units on Screen" @@ -13319,7 +14241,7 @@ msgstr "Sélectionner l'Usine suivante" #: src/keymap.c:432 msgid "Select next Research Facility" -msgstr "Sélectionner le Laboratoire suivant" +msgstr "Sélectionner le Centre de recheche suivant" #: src/keymap.c:433 msgid "Select next Power Generator" @@ -13335,27 +14257,24 @@ msgstr "Activer/Désactiver la réouverture du menu des Constructions" #: src/loop.c:535 #: src/loop.c:551 -#, fuzzy msgid "Could not save game!" -msgstr "Charger une Sauvegarde" +msgstr "Ne peut sauver une partie!" #: src/mission.c:2066 msgid "Load Transport" msgstr "Charger le Transporteur" #: src/mission.c:2460 -#, fuzzy msgid "OBJECTIVE ACHIEVED by cheating!" -msgstr "MISSION ACCOMPLIE" +msgstr "MISSION ACCOMPLIE en trichant" #: src/mission.c:2460 msgid "OBJECTIVE ACHIEVED" msgstr "MISSION ACCOMPLIE" #: src/mission.c:2466 -#, fuzzy msgid "OBJECTIVE FAILED--and you cheated!" -msgstr "ÉCHEC DE LA MISSION" +msgstr "ÉCHEC DE LA MISSION--et vous avez triché" #: src/mission.c:2466 msgid "OBJECTIVE FAILED" @@ -13376,9 +14295,9 @@ msgstr "Continuer" msgid "GAME SAVED :" msgstr "PARTIE SAUVEGARDÉE!" -#: src/move.c:2697 -#: src/move.c:2713 -#, c-format +#: src/move.c:2692 +#: src/move.c:2708 +#, fuzzy, c-format msgid "You found %u power in an oil drum." msgstr "Vous avez trouvé %u unités d'énergie dans un baril de pétrole" @@ -13403,9 +14322,9 @@ msgid "%s Gives You Technology Documents" msgstr "%s Vous a donné de la documentation sur une technologie" #: src/multigifts.c:339 -#, fuzzy, c-format +#, c-format msgid "%s Gives You %u Power" -msgstr "%s Vous donne de l'énergie supplémentaire" +msgstr "%s Vous donne %u d'énergie" #: src/multigifts.c:359 #, c-format @@ -13439,9 +14358,8 @@ msgstr "Accepter les Réglages" #: src/multiint.c:574 #: src/multiint.c:1120 -#, fuzzy msgid "Cancel" -msgstr "Lanceur" +msgstr "Annuler" #: src/multiint.c:585 msgid "IP Address or Machine Name" @@ -13453,16 +14371,15 @@ msgstr "CONNEXION" #: src/multiint.c:648 msgid "Lobby" -msgstr "Lobby" +msgstr "Antichambre" #: src/multiint.c:649 msgid "IP" msgstr "IP" #: src/multiint.c:841 -#, fuzzy msgid "No games are available" -msgstr "De nouvelles technologies sont à votre disposition." +msgstr "Aucune partie disponible" #: src/multiint.c:844 msgid "Game is full" @@ -13478,11 +14395,11 @@ msgstr "Mauvaise version du Jeu !" #: src/multiint.c:854 msgid "You have an incompatible mod." -msgstr "" +msgstr "Vous avez un mod incompatible." #: src/multiint.c:858 msgid "Host couldn't send file?" -msgstr "" +msgstr "L'hôte ne peut envoyer le fichier?" #: src/multiint.c:862 msgid "Incorrect Password!" @@ -13509,13 +14426,12 @@ msgid "Refresh Games List" msgstr "Rafraîchir la Liste des Parties" #: src/multiint.c:1097 -#, fuzzy msgid "Enter Password:" -msgstr "Entrez le mot de passe " +msgstr "Entrez le mot de passe:" #: src/multiint.c:1118 msgid "OK" -msgstr "" +msgstr "OK" #: src/multiint.c:1259 #: src/multiint.c:1266 @@ -13532,9 +14448,8 @@ msgid "Select Map" msgstr "Carte à utiliser" #: src/multiint.c:1277 -#, fuzzy msgid "Click to set Password" -msgstr "Cliquer pour voir la carte" +msgstr "Cliquer pour choisir un mot de passe" #: src/multiint.c:1287 #: src/multiint.c:1288 @@ -13543,9 +14458,8 @@ msgid "Scavengers" msgstr "Pillard" #: src/multiint.c:1290 -#, fuzzy msgid "No Scavengers" -msgstr "Pillard" +msgstr "Aucun Pillard" #: src/multiint.c:1320 msgid "Select Player Name" @@ -13558,7 +14472,7 @@ msgstr "Brouillard de distance" #: src/multiint.c:1337 #: src/multimenu.c:756 msgid "Alliances" -msgstr "Alliances" +msgstr "" #: src/multiint.c:1340 msgid "No Alliances" @@ -13586,7 +14500,7 @@ msgstr "Niveau d'énergie Élevé" #: src/multiint.c:1408 msgid "Base" -msgstr "Base" +msgstr "" #: src/multiint.c:1410 msgid "Start with No Bases" @@ -13622,19 +14536,16 @@ msgid "Set Structure Limits" msgstr "Fixer des limites de Construction" #: src/multiint.c:1533 -#, fuzzy msgid "Player colour" -msgstr "Joueur" +msgstr "Couleur du Joueur" #: src/multiint.c:1549 -#, fuzzy msgid "Kick player" -msgstr "2 joueurs" +msgstr "chasser le joueur" #: src/multiint.c:1560 -#, fuzzy msgid "Player number" -msgstr "Joueur" +msgstr "numéro du Joueur" #: src/multiint.c:1922 msgid "Team" @@ -13650,7 +14561,7 @@ msgstr "Cliquer une fois prêt" #: src/multiint.c:1965 msgid "READY?" -msgstr "" +msgstr "PRÊT?" #: src/multiint.c:2002 msgid "PLAYERS" @@ -13658,11 +14569,11 @@ msgstr "JOUEURS" #: src/multiint.c:2206 msgid "CHAT" -msgstr "CHAT" +msgstr "Clavardage" #: src/multiint.c:2240 msgid "All players need to have the same mods to join your game." -msgstr "" +msgstr "Tout les joueurs doivent avoir les mêmes mods pour jouer une partie." #: src/multiint.c:2400 msgid "*** password is now required! ***" @@ -13690,62 +14601,60 @@ msgstr "L'hôte a banni %s de la partie" msgid "Host is Starting Game" msgstr "L'hôte démarre la partie" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Joueurs" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "Carte envoyé: %d%% " -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" -msgstr "" +msgstr "Carte: %d%% téléchargé" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" -msgstr "" +msgstr "HOTE" #: src/multijoin.c:98 #: src/multijoin.c:99 msgid "Players Still Joining" msgstr "Les joueurs sont en cours de connexion" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s a Quitté la Partie" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "Le transfer du fichier a été suspendu pour %d." -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." -msgstr "" +msgstr "%s (%u) a un mod incompatible, et a été éjecté." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s vient de Rejoindre la Partie" -#: src/multijoin.c:397 -#, fuzzy +#: src/multijoin.c:398 msgid "System message:" -msgstr "Langage du système" +msgstr "Message du système:" #: src/multilimit.c:185 -#, fuzzy msgid "Apply Defaults and Return To Previous Screen" -msgstr "Revenir à l'écran précédent" +msgstr "Appliquer les défaults et Revenir à l'écran précédent" #: src/multilimit.c:316 msgid "Limits reset to default values" -msgstr "" +msgstr "Les limites ont été rinitialisées aux valeurs par défault" #: src/multimenu.c:609 msgid "Technology level 1" @@ -13777,11 +14686,11 @@ msgstr "8 joueurs" #: src/multimenu.c:757 msgid "Score" -msgstr "Score" +msgstr "Pointage" #: src/multimenu.c:758 msgid "Kills" -msgstr "Meurtres" +msgstr "Tués" #: src/multimenu.c:762 #: src/multimenu.c:767 @@ -13821,50 +14730,49 @@ msgstr "Donner de l'énergie au Joueur" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Le joueur %s à été kické car il a essayé de contourner le contrôle d'intégrité des données !" -#: src/multiplay.c:1064 -#, fuzzy -msgid "(allies" -msgstr "Alliances" - #: src/multiplay.c:1072 +msgid "(allies" +msgstr "( Alliés" + +#: src/multiplay.c:1080 msgid "(private to " -msgstr "" +msgstr "(privé à " -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" -msgstr "" +msgstr "[invalide]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" -msgstr "Joueur Vert" +msgstr "Vert" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" -msgstr "Joueur Orange" +msgstr "Orange" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" -msgstr "Joueur Gris" +msgstr "Gris" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" -msgstr "Joueur Noir" +msgstr "Noir" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" -msgstr "Joueur Rouge" +msgstr "Rouge" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" -msgstr "Joueur Bleu" +msgstr "Bleu" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" -msgstr "Joueur Rose" +msgstr "Rose" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" -msgstr "Joueur Cyan" +msgstr "Cyan" #: src/research.c:1736 #, c-format @@ -13887,7 +14795,7 @@ msgstr "Vos Unités : %u" #: src/scores.c:100 #, c-format msgid "Enemy Units: %u" -msgstr "Unités Ennemies : %u" +msgstr "Unités Énnemies : %u" #: src/scores.c:101 #, c-format @@ -14005,12 +14913,12 @@ msgstr "VOUS ÊTES VICTORIEUX !" msgid "YOU WERE DEFEATED!" msgstr "VOUS AVEZ PERDU !" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Signal émis par %s !" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Signal %d" @@ -14039,62 +14947,63 @@ msgstr "Impossible de localiser la moindre unité radar !" msgid "Unable to locate any Commanders!" msgstr "Impossible de localiser le moindre Commandant !" -#: src/structure.c:2838 +#: src/structure.c:2823 +#, fuzzy msgid "Command Control Limit Reached - Production Halted" -msgstr "Limite de Commandement Atteinte - Arrêt de la Production" +msgstr "Limite du Control Atteinte - Arrêt de la Production" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Unité assignée" msgstr[1] "%s - %u Unités assignées" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Endommagé à %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - %u connexions établies sur %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Électroniquement endommagé" -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "Récompense électronique - Rapport de visibilité" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "Récompense d'usine - Propulsion" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" msgstr "Récompense d'usine - Corps" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "Récompense d'usine - Armes" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" msgstr "Récompense d'usine - Rien" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "Récompense Atelier de réparation - Réparation" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" msgstr "Récompense Atelier de réparation - Rien" @@ -14103,7 +15012,7 @@ msgstr "Récompense Atelier de réparation - Rien" msgid "Launch Transport" msgstr "Envoyer le Transporteur" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Les renforts sont arrivés !" @@ -14135,18 +15044,27 @@ msgstr " - Compilation %s" msgid "Version %s%s%s%s" msgstr "Version %s%s%s%s" -#, fuzzy +#~ msgid ": Unknown cheat code." +#~ msgstr ": code de trichage inconnu" + +#~ msgid "(Player %u) has detected the borg 'legs' bug! Please enter legs in your console and upload the files to us!" +#~ msgstr "(le jouer %u) a détecté le bogue borg 'legs' svp entrer les jambes dans votre console et envoyer nous le fichier !" + +#~ msgid "You found %u power in an oil drum" +#~ msgstr "Vous avez trouvé %u unités d'énergie dans un baril de pétrole" + +#~ msgid ", mod: " +#~ msgstr ", mod: " + #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Le joueur %u a été kické car il a une version obsolète du jeu." #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Le joueur %u a été kické car il a une version obsolète du jeu." -#, fuzzy #~ msgid "Player %u has the wrong password. Auto kicking." #~ msgstr "Le joueur %u a été kické car il a donné un mot de passe incorrect." -#, fuzzy #~ msgid "Increases Bombing damage" #~ msgstr "Dégâts des Canons augmentés" @@ -14162,14 +15080,12 @@ msgstr "Version %s%s%s%s" #~ msgid "Wrong data/mod detected by Host." #~ msgstr "L'hôte à détecté un mod ou des données corrompues." -#, fuzzy -#~ msgid ": Unknown cheat code." -#~ msgstr "Exécution en mode DEBUG" - -#, fuzzy #~ msgid "Kicking player %s, game data doesn't match!" #~ msgstr "Le joueur %s à été kické car les données ne correspondent pas !" +#~ msgid "you are unwanted by the host" +#~ msgstr "vous êtes un indésirable pour l'hôte" + #~ msgid "Data doesn't match!" #~ msgstr "Les données ne correspondent pas !" @@ -14185,18 +15101,15 @@ msgstr "Version %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "Arrêter le son multi-joueurs" -#~ msgid "Hardware" -#~ msgstr "Matériel" +#~ msgid "Mayhem" +#~ msgstr "Chaos" -#~ msgid "you are being a jerk." -#~ msgstr "vous êtes un indésirable pour l'hôte" +#~ msgid "Skirmish" +#~ msgstr "Escarmouche" #~ msgid "English" #~ msgstr "Anglais" -#~ msgid "Basque" -#~ msgstr "Basque" - #~ msgid "Norwegian (Nynorsk)" #~ msgstr "Norvégien" @@ -14212,7 +15125,6 @@ msgstr "Version %s%s%s%s" #~ msgid "Uzbek (Cyrillic)" #~ msgstr "Uzbek (Cyrillique)" -#, fuzzy #~ msgid "Heavy Machinegun Cobra Half-trackS" #~ msgstr "Mitrailleuse Lourde Cobra Semi-chenillée" @@ -14381,18 +15293,12 @@ msgstr "Version %s%s%s%s" #~ msgid "Cursor Mode" #~ msgstr "Type de Curseur" +#~ msgid "Hardware" +#~ msgstr "Matériel" + #~ msgid "Energy bars display toggled" #~ msgstr "Affichage de la résistance modifié" -#~ msgid "Game" -#~ msgstr "Jeu" - -#~ msgid "Mayhem" -#~ msgstr "Chaos" - -#~ msgid "Skirmish" -#~ msgstr "Escarmouche" - #~ msgid "NEXUS Link Tower" #~ msgstr "Tor de Lien NEXUS" @@ -14414,33 +15320,15 @@ msgstr "Version %s%s%s%s" #~ msgid "Commander" #~ msgstr "Commandant" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Félicitations pour avoir vaincu le Nouveau Paradigme." - #~ msgid "This sector is now secure." #~ msgstr "Ce secteur est maintenant sécurisé." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Devant notre manque de réaction, il est devenu menaçant" - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Le Nexus a disparu sans laisser de traces" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "Le Programme d'Intrusion Nexus a des ramifications avec la Compagnie Reed." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Le NEXUS possède des technologies, des armes et n'a pas l'air amical." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Combattants du Collectif..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Détruisez et tuez tout ceux qui s'opposeront à la Machine" - -#~ msgid "Attack!" -#~ msgstr "Attaquez!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Les analyses portées sur le site du réacteur indiquent que le Collectif..." @@ -14525,9 +15413,6 @@ msgstr "Version %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Attaque Aérienne Imminente" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Division Alpha Anéantie" - #~ msgid "Team Beta Eradicated" #~ msgstr "Division Beta Anéantie" @@ -14628,31 +15513,31 @@ msgstr "Version %s%s%s%s" #~ msgstr "Mitrailleuse Lourde Cobra Chenilles" #~ msgid "Cobra Hover Medium Cannon" -#~ msgstr "Canon Moyen Cobra Autoporté" +#~ msgstr "Canon Moyen Cobra aéro-glisseur" #~ msgid "Scorpion Hover Medium Cannon" -#~ msgstr "Canon Moyen Scorpion Autoporté" +#~ msgstr "Canon Moyen Scorpion aéro-glisseur" #~ msgid "Scorpion Tracks Medium Cannon" #~ msgstr "Canon Moyen Scorpion Chenilles" #~ msgid "Python Hover Medium Cannon" -#~ msgstr "Canon Moyen Python Autoporté" +#~ msgstr "Canon Moyen Python aéro-glisseur" #~ msgid "Python Hover Heavy Cannon" -#~ msgstr "Canon Lourd Python Autoporté" +#~ msgstr "Canon Lourd Python aéro-glisseur" #~ msgid "Python Tracks Heavy Cannon" -#~ msgstr "Canon Lourd Python Chenilles" +#~ msgstr "Canon Lourd Python chenilles" #~ msgid "Mantis Tracks Pulse Laser" -#~ msgstr "Laser à Impulsion Mante Religieuse Chenilles" +#~ msgstr "Laser à Impulsion Mante Religieuse chenilles" #~ msgid "Tiger Tracks Heavy Cannon" -#~ msgstr "Canon Lourd Tigre Chenilles" +#~ msgstr "Canon Lourd Tigre chenilles" #~ msgid "Cobra Repair Tracks" -#~ msgstr "Réparateur Cobra Chenilles" +#~ msgstr "Réparateur Cobra chenilles" #~ msgid "Mantis Repair Tracks" #~ msgstr "Réparateur Mante Religieuse Chenilles" @@ -14669,9 +15554,6 @@ msgstr "Version %s%s%s%s" #~ msgid "Full" #~ msgstr "Plein Écran" -#~ msgid "Minimal" -#~ msgstr "Minimal" - #~ msgid "Tried to give away a %s - but this is not allowed." #~ msgstr "A tenté de vous donner u %s - mais cette action n'est pas autorisée" diff --git a/po/fy.po b/po/fy.po index 21f4293d7..b620b6aaf 100644 --- a/po/fy.po +++ b/po/fy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-04-21 08:59+0000\n" "Last-Translator: Wander Nauta \n" "Language-Team: Frisian \n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1947,7 +1947,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2964,7 +2964,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2986,7 +2986,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2995,7 +2995,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3004,7 +3004,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3040,7 +3040,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3171,7 +3171,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3849,14 +3849,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3868,14 +3868,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4013,7 +4013,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5305,6 +5321,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5744,7 +5761,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5753,7 +5770,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5780,7 +5797,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5811,7 +5828,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5828,7 +5845,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5852,7 +5869,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5864,7 +5881,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5874,7 +5891,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5891,7 +5908,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5905,26 +5922,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5988,7 +6005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -5997,9 +6014,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6009,8 +6026,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6019,7 +6036,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6113,8 +6130,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6218,14 +6235,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6247,7 +6264,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6275,8 +6292,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6284,15 +6301,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6316,7 +6333,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6352,7 +6369,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6364,7 +6381,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6376,7 +6393,7 @@ msgstr "" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "" @@ -6388,7 +6405,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6409,8 +6426,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6421,30 +6438,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6455,27 +6472,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6486,29 +6503,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6518,168 +6535,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6690,139 +6707,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6833,80 +6850,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6916,74 +6933,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6992,62 +7009,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7056,22 +7073,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7088,307 +7105,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7403,15 +7420,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7420,55 +7437,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7486,15 +7503,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7505,49 +7522,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7585,54 +7602,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7669,172 +7686,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7844,84 +7861,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7942,292 +7959,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8236,17 +8253,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8263,252 +8280,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8517,57 +8534,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8576,142 +8593,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8720,367 +8737,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9101,7 +9118,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9110,49 +9127,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9161,37 +9178,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9473,336 +9490,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9811,7 +10664,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9820,7 +10673,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9829,127 +10682,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9958,7 +10811,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9967,55 +10820,155 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10631,7 +11584,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10660,7 +11613,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10673,632 +11626,645 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Spul" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Kommandanten (F6)" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Kommandanten (F6)" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11435,31 +12401,40 @@ msgstr "" msgid "Latin" msgstr "Latyn" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Spul Opslaan" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11609,15 +12584,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Spiler" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11656,18 +12631,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "" @@ -11681,190 +12656,190 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Spiler" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Spiler" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Kin net bouwe. Oaljebron is oan it brânen." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Skea %d%% - Erfaring %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Skea %d%% - Erfaring %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Frachtauto kommandeare omt in Oaljepunt te bouwen" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Frachtauto kommandeare omt in Oaljepunt te bouwen" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Frachtauto kommandeare omt in Oaljepunt te bouwen" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Ienheid Ferlen!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Struktuur Hersteld" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Groep %u selekteard - %u Ienheid" msgstr[1] "Groep %u selekteard - %u Ienheden" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u ienheid tafoege oan Groep %u" msgstr[1] "%u ienheden tafoege oan Groep %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Sentreard op Groep %u - %u Ienheid" msgstr[1] "Sentreard op Groep %u - %u Ienheden" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Kabouter" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Begjinner" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Traint" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Normaal" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professioneel" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Feteraan" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Spesjaal" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Held" @@ -11912,11 +12887,11 @@ msgstr "" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "" @@ -11997,19 +12972,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12018,43 +12993,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "" @@ -12064,151 +13038,150 @@ msgid "Fog" msgstr "Dize" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Kriigsdize" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "YNSTELLINGS" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "YNSTELLINGS" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "YNSTELLINGS" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "YNSTELLINGS" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12242,107 +13215,107 @@ msgstr "Spiler %u is oan it fals spyljen (debugmenu)! Him of sij krijt in nije f msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Spiler %u is oan it fals spyljen (debugmenu)! Him of sij krijt in nije robot: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Kommandanten (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Intelligensjeskerm (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Meitsje (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Ontwerpe (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Ûndersyk (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Bouwe (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Krêft" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Ienheid" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Strukt" -#: src/hci.c:4095 +#: src/hci.c:4097 #, fuzzy msgid "Place Structures on map" msgstr "Struktuurlimyten ynstelle" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Funk" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "De tsjinner hat it spul ferlitten!" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Ofslute" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Spul ferlitte" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Foartgongsbalke" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Fabrykôfleverpunt" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Sirkelproduksje" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Tab links" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Tab rjochts" @@ -12386,6 +13359,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12400,7 +13381,7 @@ msgid "Power Accrued" msgstr "Krêft tanommen" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUZEARD" @@ -12527,292 +13508,292 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Sorry, do kinst net fals spylje yn multiplayerspullen." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Lit ús sjen wat do sjochst!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "Spiler %u is oan it fals spyljen (debugmenu)! Him of sij krijt in nije robot: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Sa hurd as nagels!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Makkelijk te dwaan!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 grutten!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Krêftig as wat" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Werom nei normaal!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "It is mei sizzen net te dwaan!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Twa kear sa moai!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS-werjoust is ynskakele." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS-werjoust is útskakele." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Ûneindige krêft utskakele" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Ûneindige krêft ynskakele" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Alle items binne beskikber makke" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Dize oan" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Dize út" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Werjoust nei it noarden" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "ALLES is ûndersocht!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Ûndersykspriis" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demo mode út - Werom nei normale spulmodus" -#: src/keybind.c:1546 +#: src/keybind.c:1542 #, fuzzy msgid "Debug menu is Open" msgstr "Boumenu sil opnij iepenje" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Koe gjin bronúthellers fine!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, the weather outside is frightful... SNIE" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Rein is wiet. REIN" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Heldere loften en gjin wolken... GJIN WAAR!" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 #, fuzzy msgid "All enemies destroyed by cheating!" msgstr "Fijân ferslein mei fals spyljen!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Sentreard op spiler-HK, richting NOARDEN" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Spiler-HK net te finen!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Sorry, do kinst net fals spylje yn multiplayerspullen." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Spulsnelheid opnij ynsteld" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Spulsnelheid ferheege nei %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Spulsnelheid ferleege nei %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Boumenu sil opnij iepenje" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Boumenu sil net opnij iepenje" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar lit freon-fijânkleuren sjen" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar lit spilerkleuren sjen" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar lit allinnich objekten sjen" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar lit terrein en hichte sjen" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar lit terrein sjen" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar lit terrein sjen" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar lit hichte sjen" @@ -13234,8 +14215,8 @@ msgstr "Fjirder Mei Spul" msgid "GAME SAVED :" msgstr "SPUL OPSLEIN!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13544,21 +14525,21 @@ msgstr "De tsjinner hat %s fan it spul skopt!" msgid "Host is Starting Game" msgstr "Tsjinner is spul oan it starten" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Spilers" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13567,27 +14548,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "Systeemlocale" @@ -13677,48 +14658,48 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Freonskippen" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Grien" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oranje" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Griis" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Swart" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Read" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Blau" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Roze" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Lochtblau" @@ -13861,12 +14842,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13895,62 +14876,62 @@ msgstr "Koe gjin Sensorienheden fine!" msgid "Unable to locate any Commanders!" msgstr "Koe gjin Kommandanten fine!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "Kommandolimyt helle - Produksje stopt" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Ienheid tawezen" msgstr[1] "%s - %u Ienheden tawezen" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, fuzzy, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Skea %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - %u fan %u ferbûn" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Elektronysk skea tabrocht" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Elektronyske priis - Sichtberhydsrapport" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Fabrykspriis - Oandriuwing" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Fabrykspriis - Lichem" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Fabrykspriis - Wapen" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Fabrykspriis - Niks" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Reparaasjefasiliteit Priis - Reparaasje" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Reparaasjefasiliteit Priis - Niks" @@ -13959,7 +14940,7 @@ msgstr "Reparaasjefasiliteit Priis - Niks" msgid "Launch Transport" msgstr "Transport starte" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Fersterking oan it landen" @@ -14015,9 +14996,6 @@ msgstr "" #~ msgid "Swedish" #~ msgstr "Sweedsk" -#~ msgid "Game" -#~ msgstr "Spul" - #~ msgid "Mayhem" #~ msgstr "Gekkichheid" diff --git a/po/ga.po b/po/ga.po index 453557c1a..821556a98 100644 --- a/po/ga.po +++ b/po/ga.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-08 17:14+0000\n" "Last-Translator: Seanan \n" "Language-Team: Irish \n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1947,7 +1947,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2964,7 +2964,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2986,7 +2986,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2995,7 +2995,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3004,7 +3004,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3040,7 +3040,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3171,7 +3171,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3849,14 +3849,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3868,14 +3868,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4013,7 +4013,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5305,6 +5321,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5744,7 +5761,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5753,7 +5770,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5780,7 +5797,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5811,7 +5828,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5828,7 +5845,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5852,7 +5869,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5864,7 +5881,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5874,7 +5891,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5891,7 +5908,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5905,26 +5922,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5988,7 +6005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -5997,9 +6014,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6009,8 +6026,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6019,7 +6036,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6113,8 +6130,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6218,14 +6235,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6247,7 +6264,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6275,8 +6292,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6284,15 +6301,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6316,7 +6333,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6352,7 +6369,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6364,7 +6381,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6376,7 +6393,7 @@ msgstr "" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "" @@ -6388,7 +6405,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6409,8 +6426,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6421,30 +6438,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6455,27 +6472,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6486,29 +6503,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6518,168 +6535,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6690,139 +6707,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6833,80 +6850,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6916,74 +6933,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6992,62 +7009,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7056,22 +7073,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7088,307 +7105,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7403,15 +7420,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7420,55 +7437,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7486,15 +7503,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7505,49 +7522,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7585,54 +7602,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7669,172 +7686,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7844,84 +7861,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7942,292 +7959,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8236,17 +8253,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8263,252 +8280,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8517,57 +8534,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8576,142 +8593,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8720,367 +8737,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9101,7 +9118,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9110,49 +9127,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9161,37 +9178,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9473,336 +9490,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9811,7 +10664,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9820,7 +10673,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9829,127 +10682,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9958,7 +10811,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9967,55 +10820,155 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10631,7 +11584,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10660,7 +11613,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10673,632 +11626,645 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Cluiche" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Ceannasaithe (F6)" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Ceannasaithe (F6)" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11435,31 +12401,39 @@ msgstr "" msgid "Latin" msgstr "Laidin" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +msgid "Strategy Game" +msgstr "" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11609,15 +12583,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Imreoir" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11656,18 +12630,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "" @@ -11681,189 +12655,189 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Imreoir" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Imreoir" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Dochar %d%% - Taithí %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Dochar %d%% - Taithí %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "" -#: src/display.c:2048 +#: src/display.c:2047 msgid "2 trucks ordered to build Oil Derrick" msgstr "" -#: src/display.c:2049 +#: src/display.c:2048 #, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Chaill an t-Aonad!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Glasearcach" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Glasearcach" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Oilte" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Gnáth" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Gairmiúil" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Seansaighdiúir" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Tofa" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Sain" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Laoch" @@ -11911,11 +12885,11 @@ msgstr "" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "" @@ -11996,19 +12970,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12017,43 +12991,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "" @@ -12063,151 +13036,150 @@ msgid "Fog" msgstr "Ceo" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "ROGHANNA" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "ROGHANNA" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "ROGHANNA" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "ROGHANNA" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12239,106 +13211,106 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Ceannasaithe (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Dearadh (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Taighde (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Tógáil (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Cumhacht" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Aonad" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Éacht" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "D'fhág an tíosach an cluiche!" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Scoir" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Scoir ón Cluiche" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Barra Dul Chun Cinn" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12382,6 +13354,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12396,7 +13376,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "MOILLITHE" @@ -12523,288 +13503,288 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 cinn móra!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Tá sé ag éirí deacair!!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Gan ceo" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Ceo ann" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Taighde (F2)" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Ní féidir an suíochán a aimsiú!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13223,8 +14203,8 @@ msgstr "Lean Leis an Cluiche" msgid "GAME SAVED :" msgstr "" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13530,21 +14510,21 @@ msgstr "" msgid "Host is Starting Game" msgstr "" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Imreoirí" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13553,27 +14533,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "" @@ -13661,48 +14641,48 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Comhbhánna" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Uaine" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Flannbhuí" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Liath" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Dubh" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Dearg" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Gorm" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Bándearg" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cian" @@ -13845,12 +14825,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13879,62 +14859,62 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -13943,7 +14923,7 @@ msgstr "" msgid "Launch Transport" msgstr "" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "" @@ -13993,9 +14973,6 @@ msgstr "" #~ msgid "Swedish" #~ msgstr "Sualainnis" -#~ msgid "Game" -#~ msgstr "Cluiche" - #~ msgid "Mayhem" #~ msgstr "Caismirt" diff --git a/po/hr.po b/po/hr.po index 2fdb5592e..04443bc99 100644 --- a/po/hr.po +++ b/po/hr.po @@ -2,10 +2,11 @@ msgid "" msgstr "" "Project-Id-Version: WZ2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-06-03 23:54+0200\n" "PO-Revision-Date: \n" -"Last-Translator: Antonio Kukas \n" +"Last-Translator: metalwarrior95 \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -203,7 +204,7 @@ msgstr "Nova obrambena graÄ‘evina dostupna" #: data/base/messages/resmessages12.rmsg:5 #: data/mp/messages/resmessages12.rmsg:5 msgid "Armored Mortar battery pit" -msgstr "" +msgstr "Oklopnjeni MinobacaÄka baterijska jama" #: data/base/messages/resmessages12.rmsg:6 #: data/base/messages/resmessages12.rmsg:19 @@ -346,12 +347,12 @@ msgstr "Obrambena važnost: Srednja" #: data/base/messages/resmessages12.rmsg:18 #: data/mp/messages/resmessages12.rmsg:18 msgid "Mini-rocket armored strongpoint" -msgstr "" +msgstr "Mini-raketno oklopno uporiÅ¡te" #: data/base/messages/resmessages12.rmsg:31 #: data/mp/messages/resmessages12.rmsg:31 msgid "Armored hardpoint with Heavy Machinegun" -msgstr "" +msgstr "TeÅ¡ko oklopno uporiÅ¡te sa strojnicom" #: data/base/messages/resmessages12.rmsg:32 #: data/base/messages/resmessages12.rmsg:45 @@ -492,7 +493,7 @@ msgstr "Obrambena važnost: Visoka" #: data/base/messages/resmessages12.rmsg:44 #: data/mp/messages/resmessages12.rmsg:44 msgid "Armored hardpoint with Lancer AT missile" -msgstr "" +msgstr "TeÅ¡ko oklopno uporiÅ¡te sa Lancer AT projektilom" #: data/base/messages/resmessages12.rmsg:56 #: data/base/messages/resmessages23.rmsg:43 @@ -535,7 +536,7 @@ msgstr "Novi infrastrukturni alat dostupan" #: data/base/messages/resmessages12.rmsg:70 #: data/mp/messages/resmessages12.rmsg:70 msgid "Counter-battery turret detects enemy indirect fire batteries" -msgstr "" +msgstr "Ofenzivna-baterijska kupola detektira neprijateljsku neizravnu baterijsku vatru" #: data/base/messages/resmessages12.rmsg:71 #: data/base/messages/resmessagesall.rmsg:97 @@ -549,7 +550,7 @@ msgstr "" #: data/mp/messages/resmessages12.rmsg:72 #: data/mp/messages/resmessagesall.rmsg:124 msgid "Counter-battery fire continues until enemy battery is suppressed" -msgstr "" +msgstr "Ofenzivna baterija nastavlja pucati dok je neprijateljska baterija potisnuta" #: data/base/messages/resmessages12.rmsg:82 #: data/base/messages/resmessages23.rmsg:56 @@ -558,7 +559,7 @@ msgstr "" #: data/mp/messages/resmessages23.rmsg:56 #: data/mp/messages/resmessages3.rmsg:524 msgid "CB Sensor Improved" -msgstr "" +msgstr "PoboljÅ¡an CB senzor" #: data/base/messages/resmessages12.rmsg:83 #: data/base/messages/resmessages2.rmsg:447 @@ -567,7 +568,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:447 #: data/mp/messages/strings/resstrings.txt:514 msgid "New fire detection systems" -msgstr "" +msgstr "Novi sustav za detektiranje pucnjave" #: data/base/messages/resmessages12.rmsg:84 #: data/base/messages/resmessages23.rmsg:58 @@ -576,7 +577,7 @@ msgstr "" #: data/mp/messages/resmessages23.rmsg:58 #: data/mp/messages/resmessages3.rmsg:526 msgid "Extends CB Range" -msgstr "" +msgstr "Povećava CB doseg" #: data/base/messages/resmessages12.rmsg:85 #: data/base/messages/resmessages23.rmsg:59 @@ -585,7 +586,7 @@ msgstr "" #: data/mp/messages/resmessages23.rmsg:59 #: data/mp/messages/resmessages3.rmsg:527 msgid "All CB sensors upgraded automatically" -msgstr "" +msgstr "Svi su CB senzori automatski nadograÄ‘eni" #: data/base/messages/resmessages12.rmsg:95 #: data/base/messages/resmessages12.rmsg:212 @@ -602,17 +603,17 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:888 #: data/mp/messages/resmessagesall.rmsg:212 msgid "Cannon Upgrade" -msgstr "" +msgstr "Nadogranja Topa" #: data/base/messages/resmessages12.rmsg:96 #: data/mp/messages/resmessages12.rmsg:96 msgid "Determines range to target" -msgstr "" +msgstr "UtvrÄ‘uje daljinu do mete" #: data/base/messages/resmessages12.rmsg:97 #: data/base/messages/resmessagesall.rmsg:175 msgid "Increases Cannon accuracy" -msgstr "" +msgstr "Povećava preciznost topa" #: data/base/messages/resmessages12.rmsg:98 #: data/base/messages/resmessages12.rmsg:215 @@ -629,7 +630,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:891 #: data/mp/messages/resmessagesall.rmsg:215 msgid "All cannons upgraded automatically" -msgstr "" +msgstr "Svi su topovi automatski nadograÄ‘eni" #: data/base/messages/resmessages12.rmsg:108 #: data/base/messages/resmessages1.rmsg:602 @@ -641,7 +642,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:771 #: data/mp/messages/strings/resstrings.txt:802 msgid "Flamer Upgrade" -msgstr "" +msgstr "Nadogradnja bacaÄa plamena" #: data/base/messages/resmessages12.rmsg:109 #: data/base/messages/resmessages12.rmsg:213 @@ -652,11 +653,11 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:863 #: data/mp/messages/strings/resstrings.txt:849 msgid "Automatic loading mechanism replaces manual loader" -msgstr "" +msgstr "Automatsko mehanizam punjenja zamjenjuje ruÄno punjenje" #: data/base/messages/resmessages12.rmsg:110 msgid "Increases Flamer ROF" -msgstr "" +msgstr "Povećava ROF bacaÄa plamena" #: data/base/messages/resmessages12.rmsg:111 #: data/base/messages/resmessages1.rmsg:605 @@ -668,7 +669,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:774 #: data/mp/messages/strings/resstrings.txt:805 msgid "All flamers upgraded automatically" -msgstr "" +msgstr "Svi su bacaÄi plamena automatski nadograÄ‘eni" #: data/base/messages/resmessages12.rmsg:121 #: data/base/messages/resmessages1.rmsg:537 @@ -709,7 +710,7 @@ msgstr "Novo oružje dostupno" #: data/base/messages/resmessages12.rmsg:122 #: data/mp/messages/resmessages12.rmsg:122 msgid ".50-calibre heavy machinegun" -msgstr "" +msgstr ".50-kalibarska teÅ¡ka strojnica" #: data/base/messages/resmessages12.rmsg:123 #: data/base/messages/resmessages1.rmsg:617 @@ -722,7 +723,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:877 #: data/mp/messages/resmessagesall.rmsg:890 msgid "Best Targets: Infantry, base structures, wheeled vehicles" -msgstr "" +msgstr "Najbolje Mete: PjeÅ¡aÅ¡tvo, graÄ‘evine baze, vozila sa kotaÄima" #: data/base/messages/resmessages12.rmsg:124 #: data/base/messages/resmessages1.rmsg:45 @@ -822,7 +823,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:721 #: data/mp/messages/strings/resstrings.txt:727 msgid "Body Points: Medium" -msgstr "" +msgstr "Bodovi Tijela: Srednje" #: data/base/messages/resmessages12.rmsg:134 #: data/base/messages/resmessages1.rmsg:641 @@ -845,12 +846,12 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:886 #: data/mp/messages/strings/resstrings.txt:898 msgid "Machinegun Upgrade" -msgstr "" +msgstr "Nadogradnja Strojnica" #: data/base/messages/resmessages12.rmsg:135 #: data/mp/messages/resmessages12.rmsg:135 msgid "Chaingun mechanism replaces belt-feed" -msgstr "" +msgstr "Mehanizam Strojnice zamjenjuje lanÄano punjenje" #: data/base/messages/resmessages12.rmsg:136 #: data/base/messages/resmessages23.rmsg:175 @@ -858,7 +859,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:859 #: data/mp/messages/strings/resstrings.txt:900 msgid "Increases Machinegun ROF" -msgstr "" +msgstr "Povećava ROF strojnice" #: data/base/messages/resmessages12.rmsg:137 #: data/base/messages/resmessages1.rmsg:644 @@ -881,7 +882,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:889 #: data/mp/messages/strings/resstrings.txt:901 msgid "All machineguns upgraded automatically" -msgstr "" +msgstr "Sve su strojnice automatski nadograÄ‘ene" #: data/base/messages/resmessages12.rmsg:147 #: data/base/messages/resmessages1.rmsg:667 @@ -908,7 +909,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:826 #: data/mp/messages/strings/resstrings.txt:932 msgid "New Indirect Fire Weapon Available" -msgstr "" +msgstr "Novo oružje je dostupno" #: data/base/messages/resmessages12.rmsg:148 #: data/base/messages/resmessages2.rmsg:902 @@ -917,7 +918,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:902 #: data/mp/messages/strings/resstrings.txt:933 msgid "May be assigned to a sensor" -msgstr "" +msgstr "Može biti zadan senzorima" #: data/base/messages/resmessages12.rmsg:149 #: data/base/messages/resmessages1.rmsg:669 @@ -929,7 +930,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:344 #: data/mp/messages/strings/resstrings.txt:934 msgid "Best Targets: Base structures, infantry, wheeled vehicles" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine baze, pjeÅ¡aÅ¡tvo, vozila sa kotaćima" #: data/base/messages/resmessages12.rmsg:150 #: data/base/messages/resmessages12.rmsg:189 @@ -965,7 +966,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:345 #: data/mp/messages/strings/resstrings.txt:935 msgid "Body Points: Very Low" -msgstr "" +msgstr "Bodovi Tijela: Jako Slab" #: data/base/messages/resmessages12.rmsg:160 #: data/base/messages/resmessages12.rmsg:173 @@ -984,18 +985,18 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1187 #: data/mp/messages/strings/resstrings.txt:948 msgid "Mortar Upgrade" -msgstr "" +msgstr "Nadogradnja minobacaÄa" #: data/base/messages/resmessages12.rmsg:161 #: data/mp/messages/resmessages12.rmsg:161 msgid "Targeting systems compensate for distance and weather conditions" -msgstr "" +msgstr "Sustav za ciljanje kompenzira udaljenost i vremenske uvjete(preciznost)" #: data/base/messages/resmessages12.rmsg:162 #: data/base/messages/resmessages23.rmsg:188 #: data/base/messages/resmessages3.rmsg:1176 msgid "Increases Mortar accuracy" -msgstr "" +msgstr "Povećava preciznost minobacaÄa" #: data/base/messages/resmessages12.rmsg:163 #: data/base/messages/resmessages12.rmsg:176 @@ -1014,17 +1015,17 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1190 #: data/mp/messages/strings/resstrings.txt:951 msgid "All mortars upgraded automatically" -msgstr "" +msgstr "Svi su minobacaÄi automatski nadograÄ‘eni" #: data/base/messages/resmessages12.rmsg:174 #: data/mp/messages/resmessages12.rmsg:174 msgid "Automatic loader replaces manual feed" -msgstr "" +msgstr "Automatski punjaÄ zamjenjuje ruÄno punjenje" #: data/base/messages/resmessages12.rmsg:175 #: data/base/messages/resmessages3.rmsg:1189 msgid "Increases Mortar ROF" -msgstr "" +msgstr "Povećava ROF minobacaÄa" #: data/base/messages/resmessages12.rmsg:186 #: data/base/messages/resmessages12.rmsg:251 @@ -1039,17 +1040,17 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:186 #: data/mp/messages/resmessagesall.rmsg:199 msgid "New Rocket Available" -msgstr "" +msgstr "Nova raketa je dostupna" #: data/base/messages/resmessages12.rmsg:187 #: data/mp/messages/resmessages12.rmsg:187 msgid "Rocket artillery; can be assigned to a sensor" -msgstr "" +msgstr "Raketna artiljerija može biti zadana senzorima" #: data/base/messages/resmessages12.rmsg:188 #: data/mp/messages/resmessages12.rmsg:188 msgid "Best Targets: Vehicles and Emplacements" -msgstr "" +msgstr "Najbolje Mete: Vozila i UporiÅ¡ta" #: data/base/messages/resmessages12.rmsg:199 #: data/base/messages/resmessages12.rmsg:238 @@ -1066,16 +1067,16 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:173 #: data/mp/messages/strings/resstrings.txt:1008 msgid "Rocket Upgrade" -msgstr "" +msgstr "Nadogradnja raketa" #: data/base/messages/resmessages12.rmsg:200 #: data/mp/messages/resmessages12.rmsg:200 msgid "Autoloader increases reload rate" -msgstr "" +msgstr "AutoPunjenje povećava brzinu punjenja" #: data/base/messages/resmessages12.rmsg:201 msgid "Increases Rocket ROF" -msgstr "" +msgstr "Povećava ROF raketa" #: data/base/messages/resmessages12.rmsg:202 #: data/base/messages/resmessages12.rmsg:241 @@ -1092,12 +1093,12 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:176 #: data/mp/messages/strings/resstrings.txt:1011 msgid "All rockets upgraded automatically" -msgstr "" +msgstr "Sve su rakete automatski nadograÄ‘ene" #: data/base/messages/resmessages12.rmsg:214 #: data/base/messages/resmessages3.rmsg:890 msgid "Increases Cannon ROF" -msgstr "" +msgstr "Povećava ROF topa" #: data/base/messages/resmessages12.rmsg:226 #: data/mp/messages/resmessages12.rmsg:226 @@ -1108,23 +1109,23 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:578 #: data/base/messages/resmessages3.rmsg:877 msgid "Increases Cannon damage" -msgstr "" +msgstr "Povećava Å¡tetu topa" #: data/base/messages/resmessages12.rmsg:239 #: data/mp/messages/resmessages12.rmsg:239 msgid "Rocket tracks the laser designator to the target" -msgstr "" +msgstr "Raketa prati laserski ciljaÄ prema meti" #: data/base/messages/resmessages12.rmsg:240 #: data/base/messages/resmessages1.rmsg:747 #: data/base/messages/resmessagesall.rmsg:136 msgid "Increases Rocket accuracy" -msgstr "" +msgstr "Povećava preciznost raketa" #: data/base/messages/resmessages12.rmsg:252 #: data/mp/messages/resmessages12.rmsg:252 msgid "Heavy anti-tank rocket" -msgstr "" +msgstr "TeÅ¡ka anti-tenkovska raketa" #: data/base/messages/resmessages12.rmsg:253 #: data/base/messages/resmessages1.rmsg:539 @@ -1153,22 +1154,22 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:764 #: data/mp/messages/strings/resstrings.txt:770 msgid "Best Targets: Vehicles" -msgstr "" +msgstr "Najbolje Mete: Vozila" #: data/base/messages/resmessages12.rmsg:265 #: data/mp/messages/resmessages12.rmsg:265 msgid "Fires salvoes of mini-rockets" -msgstr "" +msgstr "Puca salve mini raketa" #: data/base/messages/resmessages12.rmsg:266 #: data/mp/messages/resmessages12.rmsg:266 msgid "Best Targets: Base structures" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine baze" #: data/base/messages/resmessages1.rmsg:5 #: data/mp/messages/resmessages1.rmsg:5 msgid "New battlefield computer system" -msgstr "" +msgstr "Novi bojni raÄunalni sustav" #: data/base/messages/resmessages1.rmsg:6 #: data/mp/messages/resmessages1.rmsg:6 @@ -1176,7 +1177,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:942 #: data/mp/messages/resmessagesall.rmsg:955 msgid "Commander leads groups acts as factory delivery point" -msgstr "" +msgstr "Zapovijednik vodi grupu za toÄku dostavljana iz tvornice" #: data/base/messages/resmessages1.rmsg:7 #: data/base/messages/resmessages1.rmsg:514 @@ -1195,7 +1196,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:956 #: data/mp/messages/strings/resstrings.txt:771 msgid "Body Points: High" -msgstr "" +msgstr "Bodovi TIjela: Visoki" #: data/base/messages/resmessages1.rmsg:17 #: data/base/messages/resmessages3.rmsg:17 @@ -1204,22 +1205,22 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:17 #: data/mp/messages/resmessages3.rmsg:30 msgid "Computer Technology Breakthrough" -msgstr "" +msgstr "Proboj Kompjuterske Tehnologije" #: data/base/messages/resmessages1.rmsg:18 #: data/mp/messages/resmessages1.rmsg:18 msgid "Synaptic Link allows humans to interface directly with computers" -msgstr "" +msgstr "SinaptiÄka Veza dozvoljava ljudima da se izravno spoje suÄelje sa raÄunalom" #: data/base/messages/resmessages1.rmsg:19 #: data/mp/messages/resmessages1.rmsg:19 msgid "Cyborgs can now be researched" -msgstr "" +msgstr "Kiborgi sada mogu biti istraženi" #: data/base/messages/resmessages1.rmsg:20 #: data/mp/messages/resmessages1.rmsg:20 msgid "New research options available" -msgstr "" +msgstr "Nova opcija istraživanja je dostupna" #: data/base/messages/resmessages1.rmsg:30 #: data/base/messages/resmessages2.rmsg:17 @@ -1232,14 +1233,14 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:82 #: data/mp/messages/strings/resstrings.txt:33 msgid "Cyborg Materials Improved" -msgstr "" +msgstr "Kiborg materijali su poboljÅ¡ani" #: data/base/messages/resmessages1.rmsg:31 #: data/base/messages/resmessages1.rmsg:473 #: data/mp/messages/resmessages1.rmsg:31 #: data/mp/messages/resmessages1.rmsg:474 msgid "Layered composite alloys and energy-absorbing fibres" -msgstr "" +msgstr "Slojevi kompozitnih slitina i energetsko upijanje vlakana" #: data/base/messages/resmessages1.rmsg:32 #: data/base/messages/resmessages2.rmsg:19 @@ -1248,7 +1249,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:33 #: data/mp/messages/strings/resstrings.txt:35 msgid "Increases Kinetic Armor and Body Points" -msgstr "" +msgstr "Povećava kinetiÄki oklop i bodove tijela" #: data/base/messages/resmessages1.rmsg:33 #: data/base/messages/resmessages23.rmsg:7 @@ -1271,7 +1272,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:36 #: data/mp/messages/strings/resstrings.txt:46 msgid "All Cyborgs upgraded automatically" -msgstr "" +msgstr "Svi su Kiborgi automatski nadograÄ‘eni" #: data/base/messages/resmessages1.rmsg:43 #: data/base/messages/resmessages1.rmsg:56 @@ -1309,12 +1310,12 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:51 #: data/mp/messages/strings/resstrings.txt:83 msgid "New Cyborg Available" -msgstr "" +msgstr "Novi Kiborgi su dostupni" #: data/base/messages/resmessages1.rmsg:44 #: data/mp/messages/resmessages1.rmsg:44 msgid "Armed with Cyborg Machinegun" -msgstr "" +msgstr "Naoružan sa Kiborg strojnicom" #: data/base/messages/resmessages1.rmsg:46 #: data/base/messages/resmessages1.rmsg:59 @@ -1364,22 +1365,22 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:98 #: data/mp/messages/strings/resstrings.txt:104 msgid "Requires Cyborg factory to produce" -msgstr "" +msgstr "Treba Kiborg tvornica za proizvodnju" #: data/base/messages/resmessages1.rmsg:57 #: data/mp/messages/resmessages1.rmsg:57 msgid "Armed with Cyborg Cannon" -msgstr "" +msgstr "Naoružan sa Kiborg topom" #: data/base/messages/resmessages1.rmsg:70 #: data/mp/messages/resmessages1.rmsg:70 msgid "Armed with Cyborg Flamer" -msgstr "" +msgstr "Naoružan sa Kiborg bacaÄem plamena" #: data/base/messages/resmessages1.rmsg:83 #: data/mp/messages/resmessages1.rmsg:83 msgid "Armed with Lance Anti-Tank rocket" -msgstr "" +msgstr "Naoružan sa Lancer Anti-Tenkovskom raketom" #: data/base/messages/resmessages1.rmsg:95 #: data/base/messages/resmessages2.rmsg:56 @@ -1392,16 +1393,16 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:225 #: data/mp/messages/strings/resstrings.txt:121 msgid "Defenses Improved" -msgstr "" +msgstr "PoboljÅ¡ana Obrana" #: data/base/messages/resmessages1.rmsg:96 #: data/mp/messages/resmessages1.rmsg:96 msgid "Improved Titanium-reinforced concrete" -msgstr "" +msgstr "PoboljÅ¡an Titaniumski-Beton" #: data/base/messages/resmessages1.rmsg:97 msgid "Increases Armour and Body Points" -msgstr "" +msgstr "Povećava oklop i bodove tijela" #: data/base/messages/resmessages1.rmsg:98 #: data/base/messages/resmessages2.rmsg:59 @@ -1414,70 +1415,70 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:228 #: data/mp/messages/strings/resstrings.txt:124 msgid "All defenses and walls upgraded automatically" -msgstr "" +msgstr "Sve obrane i zidovi su automatski nadograÄ‘eni" #: data/base/messages/resmessages1.rmsg:109 #: data/mp/messages/resmessages1.rmsg:109 msgid "Steel tower with machinegun" -msgstr "" +msgstr "ÄŒelićni toranj sa strojnicom" #: data/base/messages/resmessages1.rmsg:111 #: data/mp/messages/resmessages1.rmsg:111 msgid "Defensive Strength: Low" -msgstr "" +msgstr "Obrambena Snaga: Slaba" #: data/base/messages/resmessages1.rmsg:122 #: data/mp/messages/resmessages1.rmsg:122 msgid "Armored guard tower with Mini-Pod Rocket" -msgstr "" +msgstr "Oklopni stražarski toranj sa mini raketnom ljuskom" #: data/base/messages/resmessages1.rmsg:135 #: data/mp/messages/resmessages1.rmsg:135 msgid "Armored bunker with Machinegun" -msgstr "" +msgstr "Oklopni bunker sa strojnicom" #: data/base/messages/resmessages1.rmsg:148 msgid "Armored bunker with Lancer AT rocket" -msgstr "" +msgstr "Oklopni bunker sa Lancer AT raketom" #: data/base/messages/resmessages1.rmsg:161 #: data/mp/messages/resmessages1.rmsg:161 msgid "Armored bunker with Flamer" -msgstr "" +msgstr "Oklopni bunker sa bacaÄem plamena" #: data/base/messages/resmessages1.rmsg:174 #: data/mp/messages/resmessages1.rmsg:174 msgid "Armored bunker with Light Cannon" -msgstr "" +msgstr "Oklopni bunker sa lakim topom" #: data/base/messages/resmessages1.rmsg:187 #: data/mp/messages/resmessages1.rmsg:187 msgid "Armored hardpoint with Light Cannon" -msgstr "" +msgstr "Oklopno teÅ¡ko uporiÅ¡te sa lakim topom" #: data/base/messages/resmessages1.rmsg:200 #: data/mp/messages/resmessages1.rmsg:200 msgid "Armored hardpoint with Medium Cannon" -msgstr "" +msgstr "Oklopno teÅ¡ko uporiÅ¡te sa srednjim topom" #: data/base/messages/resmessages1.rmsg:213 #: data/mp/messages/resmessages1.rmsg:213 msgid "Armored hardpoint with Heavy Cannon" -msgstr "" +msgstr "Oklopno teÅ¡ko uporiÅ¡te sa teÅ¡kim topom" #: data/base/messages/resmessages1.rmsg:226 #: data/base/messages/strings/resstrings.txt:324 #: data/mp/messages/resmessages1.rmsg:226 #: data/mp/messages/strings/resstrings.txt:350 msgid "Reinforced concrete tank traps" -msgstr "" +msgstr "Armirana betonska blokada tenkova" #: data/base/messages/resmessages1.rmsg:227 #: data/base/messages/strings/resstrings.txt:325 #: data/mp/messages/resmessages1.rmsg:227 #: data/mp/messages/strings/resstrings.txt:351 msgid "Prevents enemy movement" -msgstr "" +msgstr "Preventira neprijateljsko kretanje" #: data/base/messages/resmessages1.rmsg:238 #: data/base/messages/resmessages1.rmsg:264 @@ -1490,22 +1491,22 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:17 #: data/mp/messages/resmessagesall.rmsg:30 msgid "New Base Structure Available" -msgstr "" +msgstr "Nova graÄ‘evina baze je dostupna" #: data/base/messages/resmessages1.rmsg:239 #: data/mp/messages/resmessages1.rmsg:239 msgid "New Repair Facility Repairs Damaged Units" -msgstr "" +msgstr "Novi objekt za popravak osteÄenih jedinica" #: data/base/messages/resmessages1.rmsg:240 #: data/mp/messages/resmessages1.rmsg:240 msgid "Use the Command Console to send units back for repair" -msgstr "" +msgstr "Koristi komandu konzolu za slanje jedinica na popravak" #: data/base/messages/resmessages1.rmsg:241 #: data/mp/messages/resmessages1.rmsg:241 msgid "Or select the Repair Facility as a unit's target" -msgstr "" +msgstr "Ili odaberi objekt za popravak kao metu" #: data/base/messages/resmessages1.rmsg:251 #: data/base/messages/resmessages2.rmsg:329 @@ -1516,12 +1517,12 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:420 #: data/mp/messages/strings/resstrings.txt:359 msgid "Repair Facility Improved" -msgstr "" +msgstr "PoboljÅ¡ani Objekt za Popravak" #: data/base/messages/resmessages1.rmsg:252 #: data/mp/messages/resmessages1.rmsg:252 msgid "New automated repair techniques" -msgstr "" +msgstr "Nova automatska tehnika popravka" #: data/base/messages/resmessages1.rmsg:253 #: data/base/messages/resmessages2.rmsg:331 @@ -1529,7 +1530,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:335 #: data/mp/messages/strings/resstrings.txt:361 msgid "Increases Repair Speed" -msgstr "" +msgstr "Povećava brzinu popravka" #: data/base/messages/resmessages1.rmsg:254 #: data/base/messages/resmessages2.rmsg:332 @@ -1540,22 +1541,22 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:423 #: data/mp/messages/strings/resstrings.txt:362 msgid "All repair facilities upgraded automatically" -msgstr "" +msgstr "Svi objekti za popravak su automatski nadograÄ‘eni" #: data/base/messages/resmessages1.rmsg:265 #: data/mp/messages/resmessages1.rmsg:265 msgid "Enables command turret research" -msgstr "" +msgstr "DopuÅ¡ta istraživanje zapovjedne kupole" #: data/base/messages/resmessages1.rmsg:266 #: data/mp/messages/resmessages1.rmsg:266 msgid "Directs and collates information for command turrets" -msgstr "" +msgstr "Usmjerava i prikuplja informacije za zapovjedne kupole" #: data/base/messages/resmessages1.rmsg:267 #: data/mp/messages/resmessages1.rmsg:267 msgid "Controls up to five commanders" -msgstr "" +msgstr "Kontrola do pet zapovjednika" #: data/base/messages/resmessages1.rmsg:277 #: data/base/messages/resmessages2.rmsg:342 @@ -1567,14 +1568,14 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:373 #: data/mp/messages/strings/resstrings.txt:381 msgid "Cyborg Production Improved" -msgstr "" +msgstr "Kiborg proizvodnja je poboljÅ¡ana" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" -msgstr "" +msgstr "Automatska proizvodnja kiborga" #: data/base/messages/resmessages1.rmsg:279 #: data/base/messages/resmessages2.rmsg:344 @@ -1586,7 +1587,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:375 #: data/mp/messages/strings/resstrings.txt:383 msgid "Increases Cyborg factory output" -msgstr "" +msgstr "Povećava tvorniÄku proizvodnju kiborga" #: data/base/messages/resmessages1.rmsg:280 #: data/base/messages/resmessages2.rmsg:345 @@ -1598,26 +1599,26 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:376 #: data/mp/messages/strings/resstrings.txt:384 msgid "All Cyborg factories upgraded automatically" -msgstr "" +msgstr "Sve su kiborg tvornice automatski nadograÄ‘ene" #: data/base/messages/resmessages1.rmsg:291 #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" -msgstr "" +msgstr "Kiborg Tvornica" #: data/base/messages/resmessages1.rmsg:292 #: data/mp/messages/resmessages1.rmsg:292 msgid "Produces Cyborgs" -msgstr "" +msgstr "Proizvodi Kiborge" #: data/base/messages/resmessages1.rmsg:293 #: data/mp/messages/resmessages1.rmsg:293 msgid "Research makes additional Cyborgs available" -msgstr "" +msgstr "Istraživanje radi dodatne kiborge dostupnima" #: data/base/messages/resmessages1.rmsg:303 #: data/base/messages/resmessages2.rmsg:394 @@ -1630,24 +1631,24 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:784 #: data/mp/messages/strings/resstrings.txt:437 msgid "Production Improved" -msgstr "" +msgstr "PoboljÅ¡ana proizvodnja" #: data/base/messages/resmessages1.rmsg:304 #: data/mp/messages/resmessages1.rmsg:304 msgid "Factory module enables medium and large bodies" -msgstr "" +msgstr "TvorniÄki moduli dopuÅ¡taju srednja i velika tijela" #: data/base/messages/resmessages1.rmsg:305 #: data/base/messages/resmessages1.rmsg:318 #: data/base/messages/strings/resstrings.txt:375 #: data/mp/messages/strings/resstrings.txt:401 msgid "Increases factory output" -msgstr "" +msgstr "Povećava proizvodnju tovrnice" #: data/base/messages/resmessages1.rmsg:306 #: data/mp/messages/resmessages1.rmsg:307 msgid "Use a truck to add modules to a factory" -msgstr "" +msgstr "Koristi kamion za dodavanje modula tvornici" #: data/base/messages/resmessages1.rmsg:316 #: data/base/messages/resmessages2.rmsg:355 @@ -1657,13 +1658,13 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:391 #: data/mp/messages/strings/resstrings.txt:399 msgid "Vehicle Production Improved" -msgstr "" +msgstr "Proizvodnja vozila je poboljÅ¡ana" #: data/base/messages/resmessages1.rmsg:317 #: data/base/messages/strings/names.txt:794 #: data/mp/messages/resmessages1.rmsg:318 msgid "Automated Factory Production" -msgstr "" +msgstr "Automatska proizvodnja tovrnice" #: data/base/messages/resmessages1.rmsg:319 #: data/base/messages/resmessages2.rmsg:358 @@ -1673,12 +1674,12 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:394 #: data/mp/messages/strings/resstrings.txt:402 msgid "All vehicle factories upgraded automatically" -msgstr "" +msgstr "Sve tvornice vozila su automatski nadograÄ‘ene" #: data/base/messages/resmessages1.rmsg:329 #: data/mp/messages/resmessages1.rmsg:330 msgid "Power Module Available" -msgstr "" +msgstr "modul snage je dostupan" #: data/base/messages/resmessages1.rmsg:330 #: data/base/messages/resmessages23.rmsg:30 @@ -1687,27 +1688,27 @@ msgstr "" #: data/mp/messages/resmessages23.rmsg:30 #: data/mp/messages/resmessages3.rmsg:433 msgid "Improved Power Generator Performance" -msgstr "" +msgstr "PoboljÅ¡ana performanse generatora" #: data/base/messages/resmessages1.rmsg:331 #: data/mp/messages/resmessages1.rmsg:332 msgid "Burns oil more efficiently" -msgstr "" +msgstr "Pali naftu bolje" #: data/base/messages/resmessages1.rmsg:332 #: data/mp/messages/resmessages1.rmsg:333 msgid "Use a truck to add the module to a power generator" -msgstr "" +msgstr "Koristi kamione za dodavanje modula za generator" #: data/base/messages/resmessages1.rmsg:342 #: data/mp/messages/resmessages1.rmsg:343 msgid "Research Module Available" -msgstr "" +msgstr "Modul za istraživanje je dostupan" #: data/base/messages/resmessages1.rmsg:343 #: data/mp/messages/resmessages1.rmsg:344 msgid "Research module expands research facilities" -msgstr "" +msgstr "Modul za istraživanje povećava objekt za istraživanje" #: data/base/messages/resmessages1.rmsg:344 #: data/base/messages/resmessages1.rmsg:357 @@ -1716,12 +1717,12 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:391 #: data/mp/messages/strings/resstrings.txt:417 msgid "Increases research speed" -msgstr "" +msgstr "Povećava brzinu istraživanja" #: data/base/messages/resmessages1.rmsg:345 #: data/mp/messages/resmessages1.rmsg:346 msgid "Use a truck to add the module to a research facility" -msgstr "" +msgstr "Koristi kamion da doda modul objektu za istraživanje" #: data/base/messages/resmessages1.rmsg:355 #: data/base/messages/resmessages2.rmsg:368 @@ -1732,12 +1733,12 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:446 #: data/mp/messages/strings/resstrings.txt:415 msgid "Research Improved" -msgstr "" +msgstr "PoboljÅ¡ano Istraživanje" #: data/base/messages/resmessages1.rmsg:356 #: data/mp/messages/resmessages1.rmsg:357 msgid "Synaptic link data analysis" -msgstr "" +msgstr "Analiza podataka sinaptiÄke veze" #: data/base/messages/resmessages1.rmsg:358 #: data/base/messages/resmessages2.rmsg:371 @@ -1766,9 +1767,9 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" -msgstr "" +msgstr "PojaÄani materijal baznih graÄ‘evina" #: data/base/messages/resmessages1.rmsg:370 #: data/base/messages/resmessages2.rmsg:58 @@ -1782,7 +1783,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:123 #: data/mp/messages/strings/resstrings.txt:427 msgid "Increases Armor and Body Points" -msgstr "" +msgstr "Povećava Oklop i Bodove Tijela" #: data/base/messages/resmessages1.rmsg:371 #: data/base/messages/resmessages2.rmsg:384 @@ -1795,22 +1796,22 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:475 #: data/mp/messages/strings/resstrings.txt:428 msgid "All base structures upgraded automatically" -msgstr "" +msgstr "Sve graÄ‘evine baze su automatski badograÄ‘ene" #: data/base/messages/resmessages1.rmsg:381 #: data/mp/messages/resmessages1.rmsg:382 msgid "Project Light Body" -msgstr "" +msgstr "Projekt Lagano tijelo" #: data/base/messages/resmessages1.rmsg:382 #: data/mp/messages/resmessages1.rmsg:383 msgid "Light body vulnerable to heavy weapons" -msgstr "" +msgstr "Lagana tijela su ranjiva na teÅ¡ko naoružanje" #: data/base/messages/resmessages1.rmsg:383 #: data/mp/messages/resmessages1.rmsg:384 msgid "Good scout vehicle" -msgstr "" +msgstr "Dobro izvidniÄko vozilo" #: data/base/messages/resmessages1.rmsg:384 #: data/mp/messages/resmessages1.rmsg:385 @@ -1820,7 +1821,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:394 #: data/mp/messages/resmessages1.rmsg:395 msgid "New Paradigm Light Body" -msgstr "" +msgstr "Novi Paradigm Lagano tijelo" #: data/base/messages/resmessages1.rmsg:395 #: data/mp/messages/resmessages1.rmsg:396 @@ -1832,7 +1833,7 @@ msgstr "" #: data/mp/messages/resmessages1.rmsg:397 #: data/mp/messages/resmessages3.rmsg:630 msgid "Faster than Viper" -msgstr "" +msgstr "Brže nego Poskok" #: data/base/messages/resmessages1.rmsg:397 #: data/mp/messages/resmessages1.rmsg:398 @@ -1842,17 +1843,17 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:407 #: data/mp/messages/resmessages1.rmsg:408 msgid "Project Medium Body" -msgstr "" +msgstr "Projekt Srednje Tijelo" #: data/base/messages/resmessages1.rmsg:408 #: data/mp/messages/resmessages1.rmsg:409 msgid "Medium body increases armor and body points" -msgstr "" +msgstr "srednje tijelo povećava oklop i bodove tijela" #: data/base/messages/resmessages1.rmsg:409 #: data/mp/messages/resmessages1.rmsg:410 msgid "Good medium tank and support vehicle" -msgstr "" +msgstr "Dobar osrednji tenk i vozilo za potporu" #: data/base/messages/resmessages1.rmsg:410 #: data/mp/messages/resmessages1.rmsg:411 @@ -1862,19 +1863,19 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:420 #: data/mp/messages/resmessages1.rmsg:421 msgid "New Paradigm Medium body" -msgstr "" +msgstr "Novi Paradigm Srednje Tijelo" #: data/base/messages/resmessages1.rmsg:421 #: data/mp/messages/resmessages1.rmsg:422 msgid "Inferior armor and body points to Cobra" -msgstr "" +msgstr "Inferiorni oklop i bodovi tijela neko kod Kobre" #: data/base/messages/resmessages1.rmsg:422 #: data/base/messages/resmessages3.rmsg:643 #: data/mp/messages/resmessages1.rmsg:423 #: data/mp/messages/resmessages3.rmsg:643 msgid "Faster than Cobra" -msgstr "" +msgstr "Brži nego Kobra" #: data/base/messages/resmessages1.rmsg:423 #: data/mp/messages/resmessages1.rmsg:424 @@ -1884,12 +1885,12 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:433 #: data/mp/messages/resmessages1.rmsg:434 msgid "Project Heavy Body" -msgstr "" +msgstr "Projekt TeÅ¡ko TIjelo" #: data/base/messages/resmessages1.rmsg:434 #: data/mp/messages/resmessages1.rmsg:435 msgid "Heavy body increases armor and body points" -msgstr "" +msgstr "TeÅ¡ka tijela povećavaju oklop i bodove tijela" #: data/base/messages/resmessages1.rmsg:435 #: data/mp/messages/resmessages1.rmsg:436 @@ -1904,19 +1905,19 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:446 #: data/mp/messages/resmessages1.rmsg:447 msgid "New Paradigm Heavy Body" -msgstr "" +msgstr "Novi Paradigm TeÅ¡ko Tijelo" #: data/base/messages/resmessages1.rmsg:447 #: data/mp/messages/resmessages1.rmsg:448 msgid "Less armor and body points than Python" -msgstr "" +msgstr "Manje oklopa i bodova tijela nego Piton" #: data/base/messages/resmessages1.rmsg:448 #: data/base/messages/resmessages3.rmsg:656 #: data/mp/messages/resmessages1.rmsg:449 #: data/mp/messages/resmessages3.rmsg:656 msgid "Faster than Python" -msgstr "" +msgstr "Brži nego Piton" #: data/base/messages/resmessages1.rmsg:449 #: data/mp/messages/resmessages1.rmsg:450 @@ -1934,14 +1935,14 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:680 #: data/mp/messages/strings/resstrings.txt:592 msgid "Vehicle Engine Upgrade" -msgstr "" +msgstr "Nadogradnja Motora za Vozila" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" -msgstr "" +msgstr "Motor za ubrizgavanje goriva" #: data/base/messages/resmessages1.rmsg:461 #: data/base/messages/resmessages2.rmsg:500 @@ -1950,7 +1951,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:561 #: data/mp/messages/strings/resstrings.txt:594 msgid "Improves vehicle speed" -msgstr "" +msgstr "PoboljÅ¡ana Brzina Vozila" #: data/base/messages/resmessages1.rmsg:462 #: data/base/messages/resmessages1.rmsg:475 @@ -1980,7 +1981,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:607 #: data/mp/messages/strings/resstrings.txt:617 msgid "All vehicles upgraded automatically" -msgstr "" +msgstr "Sva su vozila automatski nadograÄ‘ena" #: data/base/messages/resmessages1.rmsg:472 #: data/base/messages/resmessages2.rmsg:511 @@ -1993,7 +1994,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:706 #: data/mp/messages/strings/resstrings.txt:604 msgid "Vehicle Bodies Improved" -msgstr "" +msgstr "PoboljÅ¡ana tijela vozila" #: data/base/messages/resmessages1.rmsg:474 #: data/base/messages/resmessages2.rmsg:513 @@ -2002,7 +2003,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:573 #: data/mp/messages/strings/resstrings.txt:606 msgid "Increases kinetic armor and body points" -msgstr "" +msgstr "Povećava kinetiÄki oklop i bodove tijela" #: data/base/messages/resmessages1.rmsg:485 #: data/base/messages/resmessages1.rmsg:498 @@ -2013,29 +2014,29 @@ msgstr "" #: data/mp/messages/resmessages1.rmsg:512 #: data/mp/messages/resmessages1.rmsg:525 msgid "New Propulsion Available" -msgstr "" +msgstr "Novi Pogon je Dostupan" #: data/base/messages/resmessages1.rmsg:486 #: data/mp/messages/resmessages1.rmsg:487 msgid "Armored Half-tracks" -msgstr "" +msgstr "Oklopljena gusjenica" #: data/base/messages/resmessages1.rmsg:487 #: data/mp/messages/resmessages1.rmsg:488 msgid "Speed: Medium" -msgstr "" +msgstr "Brzina: Srednje" #: data/base/messages/resmessages1.rmsg:499 #: data/mp/messages/resmessages1.rmsg:500 msgid "Amphibious hover propulsion" -msgstr "" +msgstr "Amfibijski hover pogon" #: data/base/messages/resmessages1.rmsg:500 #: data/base/messages/resmessages1.rmsg:526 #: data/mp/messages/resmessages1.rmsg:501 #: data/mp/messages/resmessages1.rmsg:527 msgid "Speed: Fast" -msgstr "" +msgstr "Brzina: Brza" #: data/base/messages/resmessages1.rmsg:501 #: data/base/messages/resmessages1.rmsg:527 @@ -2081,49 +2082,49 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:821 #: data/mp/messages/strings/resstrings.txt:829 msgid "Body Points: Low" -msgstr "" +msgstr "Bodovi Tijela: Mala" #: data/base/messages/resmessages1.rmsg:512 #: data/mp/messages/resmessages1.rmsg:513 msgid "Armored Tracks" -msgstr "" +msgstr "Oklopljena Gusjenica" #: data/base/messages/resmessages1.rmsg:513 #: data/mp/messages/resmessages1.rmsg:514 msgid "Speed: Slow" -msgstr "" +msgstr "Brzina: Spora" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" -msgstr "" +msgstr "Pogon na KotaÄima" #: data/base/messages/resmessages1.rmsg:538 #: data/mp/messages/resmessages1.rmsg:539 msgid "Light Cannon firing 40mm rounds" -msgstr "" +msgstr "Laki Top puca 40mm granate" #: data/base/messages/resmessages1.rmsg:551 #: data/mp/messages/resmessages1.rmsg:552 msgid "Medium Cannon firing 76mm rounds" -msgstr "" +msgstr "Srednji Top puca 76mm granate" #: data/base/messages/resmessages1.rmsg:564 #: data/mp/messages/resmessages1.rmsg:565 msgid "Heavy Cannon firing 120 mm rounds" -msgstr "" +msgstr "TeÅ¡ki Top puca 120mm granate" #: data/base/messages/resmessages1.rmsg:577 #: data/mp/messages/resmessages1.rmsg:578 msgid "High Explosive Anti-Tank Cannon Shells" -msgstr "" +msgstr "visoko eksplozivne protutenkovski top Äahure" #: data/base/messages/resmessages1.rmsg:590 #: data/mp/messages/resmessages1.rmsg:591 msgid "Flame-thrower firing Propylene Oxide gel" -msgstr "" +msgstr "BacaÄ Plamena puca propilenoksidnih gel" #: data/base/messages/resmessages1.rmsg:591 #: data/base/messages/resmessages2.rmsg:773 @@ -2133,13 +2134,13 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:370 #: data/mp/messages/strings/resstrings.txt:796 msgid "Best Targets: Bunkers, wheeled and hover vehicles" -msgstr "" +msgstr "Najbolje Mete: Bunker, vozila sa kotaÄima ili hover pogonom" #: data/base/messages/resmessages1.rmsg:592 #: data/mp/messages/resmessages1.rmsg:593 #: data/mp/messages/resmessagesall.rmsg:371 msgid "Body Points: Very low" -msgstr "" +msgstr "Bodovi Tijela: Jako mali" #: data/base/messages/resmessages1.rmsg:603 #: data/mp/messages/resmessages1.rmsg:604 @@ -2151,17 +2152,17 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:767 #: data/mp/messages/strings/resstrings.txt:804 msgid "Increases Flamer damage" -msgstr "" +msgstr "Povećava Å¡tetu bacaÄa plamena" #: data/base/messages/resmessages1.rmsg:616 #: data/mp/messages/resmessages1.rmsg:617 msgid "7.62mm machinegun" -msgstr "" +msgstr "7.62mm strojnica" #: data/base/messages/resmessages1.rmsg:629 #: data/mp/messages/resmessages1.rmsg:630 msgid "Twin 7.62mm machineguns" -msgstr "" +msgstr "Blizanci 7.62 strojnice" #: data/base/messages/resmessages1.rmsg:642 #: data/mp/messages/resmessages1.rmsg:643 @@ -2176,7 +2177,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:847 #: data/mp/messages/strings/resstrings.txt:888 msgid "Increases Machinegun damage" -msgstr "" +msgstr "Povećava Å¡tetu strojnica" #: data/base/messages/resmessages1.rmsg:655 #: data/mp/messages/resmessages1.rmsg:656 @@ -2187,29 +2188,29 @@ msgstr "" #: data/mp/messages/resmessages1.rmsg:669 #: data/mp/messages/resmessagesall.rmsg:343 msgid "May be targeted directly or assigned to a sensor turret or tower" -msgstr "" +msgstr "Može biti direktno naciljano ili biti zadano senzorskim kupolama ili tornju" #: data/base/messages/resmessages1.rmsg:681 #: data/mp/messages/resmessages1.rmsg:682 msgid "Improved high explosive shells" -msgstr "" +msgstr "PoboljÅ¡ane visoko explozivne Äahure" #: data/base/messages/resmessages1.rmsg:682 #: data/base/messages/resmessages2.rmsg:916 #: data/base/messages/strings/resstrings.txt:907 #: data/mp/messages/strings/resstrings.txt:950 msgid "Increases Mortar damage" -msgstr "" +msgstr "Povećava Å¡tetu MinobacaÄa" #: data/base/messages/resmessages1.rmsg:694 #: data/mp/messages/resmessages1.rmsg:695 msgid "Fast firing light anti-vehicle rockets" -msgstr "" +msgstr "Brzo pucanje laganih raketa protiv vozila" #: data/base/messages/resmessages1.rmsg:695 #: data/mp/messages/resmessages1.rmsg:696 msgid "Best Targets: Wheeled and hover vehicles" -msgstr "" +msgstr "Najbolje Mete: Vozila sa kotaÄima i hover pogonom" #: data/base/messages/resmessages1.rmsg:706 #: data/base/messages/resmessages1.rmsg:719 @@ -2224,7 +2225,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:986 #: data/mp/messages/strings/resstrings.txt:994 msgid "Mini-Rocket Upgrade" -msgstr "" +msgstr "Nadogradnja Mini Raketa" #: data/base/messages/resmessages1.rmsg:707 #: data/mp/messages/resmessages1.rmsg:708 @@ -2233,7 +2234,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:708 msgid "Increases Mini-Rocket accuracy" -msgstr "" +msgstr "Povećava preciznost Mini Raketa" #: data/base/messages/resmessages1.rmsg:709 #: data/base/messages/resmessages1.rmsg:722 @@ -2248,52 +2249,52 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:989 #: data/mp/messages/strings/resstrings.txt:997 msgid "All mini-rockets upgraded automatically" -msgstr "" +msgstr "Sve mini rakete su automatski nadograÄ‘ene" #: data/base/messages/resmessages1.rmsg:720 #: data/mp/messages/resmessages1.rmsg:721 msgid "Improved shaped charge warhead" -msgstr "" +msgstr "PoboljÅ¡ani oblik naboja bojne glave" #: data/base/messages/resmessages1.rmsg:721 #: data/base/messages/resmessages2.rmsg:929 #: data/base/messages/strings/resstrings.txt:945 #: data/mp/messages/strings/resstrings.txt:988 msgid "Increases Mini-Rocket damage" -msgstr "" +msgstr "Povećava Å¡tetu Mini Raketa" #: data/base/messages/resmessages1.rmsg:733 #: data/mp/messages/resmessages1.rmsg:734 msgid "Automated reload system" -msgstr "" +msgstr "Automatski sistem punjenja" #: data/base/messages/resmessages1.rmsg:734 msgid "Increases Mini-Rockets ROF" -msgstr "" +msgstr "Povećava ROF Mini Raketa" #: data/base/messages/resmessages1.rmsg:746 #: data/mp/messages/resmessages1.rmsg:747 msgid "Tracks and directs in-flight rocket to target" -msgstr "" +msgstr "Prati i usmjerava raketu u letu za ciljanje" #: data/base/messages/resmessages1.rmsg:759 #: data/mp/messages/resmessages1.rmsg:760 msgid "High Explosive Anti-Tank warhead" -msgstr "" +msgstr "Visoko Explozivne ProtuTenkovske bojne glave" #: data/base/messages/resmessages1.rmsg:760 #: data/base/messages/resmessages2.rmsg:942 #: data/base/messages/strings/resstrings.txt:967 #: data/mp/messages/strings/resstrings.txt:1010 msgid "Increases Rocket damage" -msgstr "" +msgstr "Povećava Å¡tetu Raketa" #: data/base/messages/resmessages23.rmsg:4 #: data/base/messages/resmessages3.rmsg:56 #: data/mp/messages/resmessages23.rmsg:4 #: data/mp/messages/resmessages3.rmsg:56 msgid "Cyborg Propulsion Improved" -msgstr "" +msgstr "Kiborg pogon je poboljÅ¡an" #: data/base/messages/resmessages23.rmsg:5 #: data/base/messages/resmessages2.rmsg:538 @@ -2324,7 +2325,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:645 #: data/mp/messages/strings/resstrings.txt:655 msgid "New armored construction" -msgstr "" +msgstr "Novi Oklopna konstrukcija" #: data/base/messages/resmessages23.rmsg:6 #: data/base/messages/resmessages2.rmsg:539 @@ -2355,29 +2356,29 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:646 #: data/mp/messages/strings/resstrings.txt:656 msgid "Increases Body Points" -msgstr "" +msgstr "Povećava Bodove Tijela" #: data/base/messages/resmessages23.rmsg:18 #: data/mp/messages/resmessages23.rmsg:18 msgid "Armored hardpoint with Hyper-Velocity Cannon" -msgstr "" +msgstr "Oklopno TeÅ¡ko UporiÅ¡te sa Hiper-Brzim Topom" #: data/base/messages/resmessages23.rmsg:31 #: data/base/messages/resmessages3.rmsg:434 msgid "New Power Generation Technology" -msgstr "" +msgstr "Nova Tehnologija Generatora energije" #: data/base/messages/resmessages23.rmsg:32 #: data/mp/messages/resmessages23.rmsg:31 msgid "Gas turbine boosts power output" -msgstr "" +msgstr "Plinske turbine pojaÄava izlaznu snagu" #: data/base/messages/resmessages23.rmsg:33 #: data/base/messages/resmessages3.rmsg:436 #: data/mp/messages/resmessages23.rmsg:33 #: data/mp/messages/resmessages3.rmsg:436 msgid "All power generators upgraded automatically" -msgstr "" +msgstr "Svi generatori energije su automatski nadograÄ‘eni" #: data/base/messages/resmessages23.rmsg:57 #: data/base/messages/resmessages23.rmsg:83 @@ -2386,7 +2387,7 @@ msgstr "" #: data/mp/messages/resmessages23.rmsg:83 #: data/mp/messages/resmessages3.rmsg:525 msgid "Improved fire detection systems" -msgstr "" +msgstr "PoboljÅ¡ani sustavi za otkrivanje pucnjave" #: data/base/messages/resmessages23.rmsg:69 #: data/base/messages/resmessages23.rmsg:95 @@ -2398,7 +2399,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:121 #: data/mp/messages/resmessagesall.rmsg:134 msgid "New Systems Tower Available" -msgstr "" +msgstr "novi sustavi toranja je dostupno" #: data/base/messages/resmessages23.rmsg:70 #: data/mp/messages/resmessages23.rmsg:70 @@ -2432,7 +2433,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:537 #: data/mp/messages/strings/resstrings.txt:513 msgid "VTOL CB Improved" -msgstr "" +msgstr "VTOL CB je poboljÅ¡an" #: data/base/messages/resmessages23.rmsg:84 #: data/base/messages/resmessages2.rmsg:448 @@ -2443,7 +2444,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:539 #: data/mp/messages/strings/resstrings.txt:515 msgid "Extends VTOL CB Range" -msgstr "" +msgstr "Produljuje VTOL CB doseg" #: data/base/messages/resmessages23.rmsg:85 #: data/base/messages/resmessages2.rmsg:449 @@ -2486,7 +2487,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:469 #: data/mp/messages/strings/resstrings.txt:507 msgid "New Systems Turret Available" -msgstr "" +msgstr "Novi Sistem Kupole je Dostupno" #: data/base/messages/resmessages23.rmsg:109 #: data/mp/messages/resmessages23.rmsg:109 @@ -2512,12 +2513,12 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:550 #: data/mp/messages/strings/resstrings.txt:527 msgid "VTOL Strike Improved" -msgstr "" +msgstr "PoboljÅ¡ani VTOL Udar" #: data/base/messages/resmessages23.rmsg:122 #: data/mp/messages/resmessages23.rmsg:122 msgid "Improved target recognition systems" -msgstr "" +msgstr "PoboljÅ¡ani sustav prepoznavanje cilja" #: data/base/messages/resmessages23.rmsg:123 #: data/base/messages/resmessages2.rmsg:461 @@ -2528,7 +2529,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:552 #: data/mp/messages/strings/resstrings.txt:529 msgid "Extends VTOL Strike Range" -msgstr "" +msgstr "Produljuje VTOL Udarni Doseg" #: data/base/messages/resmessages23.rmsg:124 #: data/base/messages/resmessages2.rmsg:462 @@ -2539,7 +2540,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:553 #: data/mp/messages/strings/resstrings.txt:530 msgid "All VTOL Strike sensors upgraded automatically" -msgstr "" +msgstr "Svi VTOL Udar senzori su automatski nadograÄ‘eni" #: data/base/messages/resmessages23.rmsg:134 #: data/base/messages/resmessages2.rmsg:641 @@ -2556,7 +2557,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:692 #: data/mp/messages/strings/resstrings.txt:710 msgid "AA Upgrade" -msgstr "" +msgstr "AA nadogradnja" #: data/base/messages/resmessages23.rmsg:135 #: data/base/messages/resmessages2.rmsg:837 @@ -2565,7 +2566,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:837 #: data/mp/messages/strings/resstrings.txt:833 msgid "Self-guided rocket powered shells" -msgstr "" +msgstr "Samo-NavoÄ‘eni Raketni Pogon ÄŒahure" #: data/base/messages/resmessages23.rmsg:136 #: data/base/messages/resmessages2.rmsg:643 @@ -2573,7 +2574,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:661 #: data/mp/messages/strings/resstrings.txt:694 msgid "Increases AA accuracy" -msgstr "" +msgstr "Povećava preciznost AA" #: data/base/messages/resmessages23.rmsg:137 #: data/base/messages/resmessages2.rmsg:644 @@ -2590,7 +2591,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:695 #: data/mp/messages/strings/resstrings.txt:713 msgid "All AA weapons upgraded automatically" -msgstr "" +msgstr "Svi AA oružja su automatski nadograÄ‘ena" #: data/base/messages/resmessages23.rmsg:147 #: data/base/messages/resmessages2.rmsg:706 @@ -2616,7 +2617,7 @@ msgstr "" #: data/base/messages/resmessages23.rmsg:149 #: data/mp/messages/resmessages23.rmsg:149 msgid "Best Targets: Bunkers and Hardpoints" -msgstr "" +msgstr "Najbolje Mete: Bunkeri i TeÅ¡ka UporiÅ¡ta" #: data/base/messages/resmessages23.rmsg:160 #: data/base/messages/resmessages2.rmsg:732 @@ -2628,7 +2629,7 @@ msgstr "" #: data/base/messages/resmessages23.rmsg:161 msgid "Laser designator paints and guides bombs to the target" -msgstr "" +msgstr "Laserski pokazivaÄ boje i vode bombe cilja" #: data/base/messages/resmessages23.rmsg:162 #: data/base/messages/resmessages2.rmsg:734 @@ -2636,7 +2637,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:715 #: data/mp/messages/strings/resstrings.txt:748 msgid "Increases Bombing accuracy" -msgstr "" +msgstr "Povećava preciznost Bombe" #: data/base/messages/resmessages23.rmsg:163 #: data/base/messages/resmessages2.rmsg:735 @@ -2652,7 +2653,7 @@ msgstr "" #: data/base/messages/resmessages23.rmsg:174 #: data/mp/messages/resmessages23.rmsg:174 msgid "Robotic advances make new chaingun upgrade available" -msgstr "" +msgstr "Naprednost robotike radi novu nadogradnju strojnice dostupnom" #: data/base/messages/resmessages23.rmsg:187 #: data/mp/messages/resmessages23.rmsg:187 @@ -2662,7 +2663,7 @@ msgstr "" #: data/base/messages/resmessages23.rmsg:200 #: data/mp/messages/resmessages23.rmsg:200 msgid "105mm multi-barrel Howitzer may be assigned to a sensor" -msgstr "" +msgstr "105mm viÅ¡e cijevna haubica može biti dodijeljena senzorima" #: data/base/messages/resmessages23.rmsg:201 #: data/base/messages/resmessages2.rmsg:799 @@ -2676,19 +2677,19 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:812 #: data/mp/messages/strings/resstrings.txt:820 msgid "Best Targets: Base Structures, infantry, wheeled vehicles" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine Base, pjeÅ¡aÅ¡tvo, vozila sa kotaÄima" #: data/base/messages/resmessages23.rmsg:213 #: data/mp/messages/resmessages23.rmsg:213 msgid "Multi-barrel, rapid-fire machinegun" -msgstr "" +msgstr "ViÅ¡e cijevna, rapidna strojnica" #: data/base/messages/resmessages23.rmsg:215 #: data/mp/messages/resmessages23.rmsg:215 #: data/mp/messages/resmessagesall.rmsg:878 #: data/mp/messages/resmessagesall.rmsg:891 msgid "Replaces all machineguns" -msgstr "" +msgstr "Zamjenjuje sve strojnice" #: data/base/messages/resmessages2.rmsg:4 #: data/base/messages/resmessages3.rmsg:4 @@ -2697,7 +2698,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:4 #: data/mp/messages/strings/resstrings.txt:43 msgid "Cyborg Thermal Armor Improved" -msgstr "" +msgstr "Kiborg Toplinski Oklop je poboljÅ¡an" #: data/base/messages/resmessages2.rmsg:5 #: data/base/messages/resmessages3.rmsg:5 @@ -2706,14 +2707,14 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:5 #: data/mp/messages/strings/resstrings.txt:44 msgid "Heat resistant armored layers" -msgstr "" +msgstr "Otporna na toplinu oklopljena slojevima" #: data/base/messages/resmessages2.rmsg:6 #: data/base/messages/resmessages3.rmsg:6 #: data/base/messages/strings/resstrings.txt:43 #: data/mp/messages/strings/resstrings.txt:45 msgid "Thermal Armor increased" -msgstr "" +msgstr "Toplinski Oklop je povećan" #: data/base/messages/resmessages2.rmsg:18 #: data/base/messages/resmessages2.rmsg:512 @@ -2733,14 +2734,14 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:52 #: data/mp/messages/strings/resstrings.txt:102 msgid "Armed with Bunker Buster rocket" -msgstr "" +msgstr "Naoružan sa raketom Bunker UniÅ¡tavaća" #: data/base/messages/resmessages2.rmsg:44 #: data/base/messages/strings/resstrings.txt:66 #: data/mp/messages/resmessages2.rmsg:44 #: data/mp/messages/strings/resstrings.txt:84 msgid "Armed with Cyborg Assault Gun" -msgstr "" +msgstr "Naoružan sa Kiborg JuriÅ¡nom PuÅ¡kom" #: data/base/messages/resmessages2.rmsg:57 #: data/base/messages/strings/resstrings.txt:104 @@ -2754,7 +2755,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:70 #: data/mp/messages/strings/resstrings.txt:138 msgid "AA Site with Cyclone Flak Turret" -msgstr "" +msgstr "AA položaj sa Ciklon Flak kupolom" #: data/base/messages/resmessages2.rmsg:71 #: data/base/messages/resmessages2.rmsg:97 @@ -2773,35 +2774,35 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:139 #: data/mp/messages/strings/resstrings.txt:151 msgid "Automatically targets VTOLs" -msgstr "" +msgstr "Automatski cilja VTOL-e" #: data/base/messages/resmessages2.rmsg:83 #: data/base/messages/strings/resstrings.txt:126 #: data/mp/messages/resmessages2.rmsg:83 #: data/mp/messages/strings/resstrings.txt:144 msgid "AA Site with Hurricane Gun Turret" -msgstr "" +msgstr "AA položaj Uragan oružanom kupolom" #: data/base/messages/resmessages2.rmsg:84 #: data/base/messages/strings/resstrings.txt:127 #: data/mp/messages/resmessages2.rmsg:84 #: data/mp/messages/strings/resstrings.txt:145 msgid "Automatically targets VTOL" -msgstr "" +msgstr "Automatski cilja VTOL" #: data/base/messages/resmessages2.rmsg:96 #: data/base/messages/strings/resstrings.txt:132 #: data/mp/messages/resmessages2.rmsg:96 #: data/mp/messages/strings/resstrings.txt:150 msgid "AA Site with Whirlwind Gun Turret" -msgstr "" +msgstr "AA položaj sa Vihor oružanom kupolom" #: data/base/messages/resmessages2.rmsg:109 #: data/base/messages/strings/resstrings.txt:114 #: data/mp/messages/resmessages2.rmsg:109 #: data/mp/messages/strings/resstrings.txt:132 msgid "AA Site with Tornado Flak Turret" -msgstr "" +msgstr "AA položaj sa Tornado Flak kupolom" #: data/base/messages/resmessages2.rmsg:122 #: data/base/messages/strings/resstrings.txt:142 @@ -2815,14 +2816,14 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:135 #: data/mp/messages/strings/resstrings.txt:174 msgid "Armored Bombard battery pit" -msgstr "" +msgstr "Oklopni Bombarder baterijsko uporiÅ¡te" #: data/base/messages/resmessages2.rmsg:148 #: data/base/messages/strings/resstrings.txt:168 #: data/mp/messages/resmessages2.rmsg:148 #: data/mp/messages/strings/resstrings.txt:188 msgid "Armored howitzer emplacement" -msgstr "" +msgstr "Oklopno UporiÅ¡te Haubice" #: data/base/messages/resmessages2.rmsg:161 #: data/base/messages/strings/resstrings.txt:174 @@ -2854,7 +2855,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:213 #: data/mp/messages/strings/resstrings.txt:214 msgid "Armored strongpoint with Tank Killer rocket" -msgstr "" +msgstr "Oklopno TeÅ¡ko UporiÅ¡te sa raketom ubojicom tenkova" #: data/base/messages/resmessages2.rmsg:214 #: data/base/messages/resmessages2.rmsg:227 @@ -2887,7 +2888,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:245 #: data/mp/messages/strings/resstrings.txt:251 msgid "Automatically targets enemies in range" -msgstr "" +msgstr "Automatski cilja neprijatelje u radijusu" #: data/base/messages/resmessages2.rmsg:226 #: data/base/messages/strings/resstrings.txt:198 @@ -2950,44 +2951,44 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:330 #: data/mp/messages/strings/resstrings.txt:360 msgid "New robotic repair techniques" -msgstr "" +msgstr "Nova robotiÄka tehnika popravka" #: data/base/messages/resmessages2.rmsg:343 #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" -msgstr "" +msgstr "Robotska Kiborg Proizvodnja" #: data/base/messages/resmessages2.rmsg:356 #: data/base/messages/strings/resstrings.txt:366 #: data/mp/messages/resmessages2.rmsg:356 #: data/mp/messages/strings/resstrings.txt:392 msgid "New Robotic Techniques improve factory production" -msgstr "" +msgstr "Nova Robotska Tehnika poboljÅ¡ava proizvodnju tvornice" #: data/base/messages/resmessages2.rmsg:357 #: data/base/messages/strings/resstrings.txt:367 #: data/mp/messages/strings/resstrings.txt:393 msgid "Increases factory production rate" -msgstr "" +msgstr "Povećava stopu proizvodnje u tvornice" #: data/base/messages/resmessages2.rmsg:369 #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" -msgstr "" +msgstr "Namjenski sinaptiÄki povezati analizu podataka" #: data/base/messages/resmessages2.rmsg:382 #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -2996,10 +2997,10 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" -msgstr "" +msgstr "Robotska Proizvodnja VTOL-a" #: data/base/messages/resmessages2.rmsg:396 #: data/base/messages/resmessages3.rmsg:487 @@ -3008,7 +3009,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:487 #: data/mp/messages/strings/resstrings.txt:439 msgid "Increases VTOL factory output" -msgstr "" +msgstr "Povećava proizvodnju VTOL-a u tvornici" #: data/base/messages/resmessages2.rmsg:397 #: data/base/messages/resmessages3.rmsg:488 @@ -3017,7 +3018,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:488 #: data/mp/messages/strings/resstrings.txt:440 msgid "All VTOL factories upgraded automatically" -msgstr "" +msgstr "Sve VTOL tvornice su automatski nadograÄ‘ene" #: data/base/messages/resmessages2.rmsg:407 #: data/base/messages/resmessages3.rmsg:498 @@ -3032,7 +3033,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3058,7 +3059,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:420 #: data/mp/messages/strings/resstrings.txt:487 msgid "Improved Sensor Tower Available" -msgstr "" +msgstr "PoboljÅ¡ani Senzor Tornjevi su Dostupni" #: data/base/messages/resmessages2.rmsg:421 #: data/base/messages/strings/resstrings.txt:460 @@ -3097,14 +3098,14 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:460 #: data/mp/messages/strings/resstrings.txt:528 msgid "New target recognition systems" -msgstr "" +msgstr "Novi sistem prepoznavanja mete" #: data/base/messages/resmessages2.rmsg:472 #: data/base/messages/strings/resstrings.txt:527 #: data/mp/messages/resmessages2.rmsg:472 #: data/mp/messages/strings/resstrings.txt:560 msgid "Collective Light Body" -msgstr "" +msgstr "Kolektvi Lagano Tijelo" #: data/base/messages/resmessages2.rmsg:473 #: data/base/messages/resmessages3.rmsg:629 @@ -3120,7 +3121,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:474 #: data/mp/messages/strings/resstrings.txt:562 msgid "Slower than Viper" -msgstr "" +msgstr "Sporiji nego Poskok" #: data/base/messages/resmessages2.rmsg:475 #: data/base/messages/strings/resstrings.txt:530 @@ -3134,7 +3135,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:485 #: data/mp/messages/strings/resstrings.txt:572 msgid "Collective Medium Body" -msgstr "" +msgstr "Kolektivno Srednje Tijelo" #: data/base/messages/resmessages2.rmsg:486 #: data/base/messages/resmessages3.rmsg:642 @@ -3150,7 +3151,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:487 #: data/mp/messages/strings/resstrings.txt:574 msgid "Slower than Cobra" -msgstr "" +msgstr "Sporiji nego Kobra" #: data/base/messages/resmessages2.rmsg:488 #: data/base/messages/strings/resstrings.txt:542 @@ -3163,10 +3164,10 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" -msgstr "" +msgstr "Turbo Motor" #: data/base/messages/resmessages2.rmsg:524 #: data/base/messages/resmessages3.rmsg:719 @@ -3176,7 +3177,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:836 #: data/mp/messages/strings/resstrings.txt:614 msgid "Vehicle Thermal Armor Improved" -msgstr "" +msgstr "Toplinski Oklop Vozila je PoboljÅ¡an" #: data/base/messages/resmessages2.rmsg:525 #: data/base/messages/resmessages3.rmsg:720 @@ -3193,7 +3194,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:583 #: data/mp/messages/strings/resstrings.txt:616 msgid "Increases Thermal Armor" -msgstr "" +msgstr "Povećava Toplinski Oklop" #: data/base/messages/resmessages2.rmsg:537 #: data/base/messages/resmessages2.rmsg:550 @@ -3224,7 +3225,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:644 #: data/mp/messages/strings/resstrings.txt:654 msgid "Vehicle Propulsion Improved" -msgstr "" +msgstr "Pogon Vozila je PoboljÅ¡an" #: data/base/messages/resmessages2.rmsg:540 #: data/base/messages/resmessages3.rmsg:735 @@ -3279,7 +3280,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:680 #: data/mp/messages/strings/resstrings.txt:686 msgid "New AA Turret Available" -msgstr "" +msgstr "Nova AA Kupola je Dostupna" #: data/base/messages/resmessages2.rmsg:590 #: data/base/messages/strings/resstrings.txt:636 @@ -3308,7 +3309,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:682 #: data/mp/messages/strings/resstrings.txt:688 msgid "Aerial targets only" -msgstr "" +msgstr "ZraÄne ciljeve samo" #: data/base/messages/resmessages2.rmsg:603 #: data/base/messages/strings/resstrings.txt:642 @@ -3346,7 +3347,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:823 #: data/mp/messages/strings/resstrings.txt:702 msgid "AA Flak Upgrade" -msgstr "" +msgstr "AA Flak Nadogradnja" #: data/base/messages/resmessages2.rmsg:655 #: data/base/messages/strings/resstrings.txt:670 @@ -3360,7 +3361,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:671 #: data/mp/messages/strings/resstrings.txt:704 msgid "Increases AA Flak damage" -msgstr "" +msgstr "Povećava Å¡teti AA Flak-a" #: data/base/messages/resmessages2.rmsg:657 #: data/base/messages/resmessages3.rmsg:826 @@ -3369,7 +3370,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:826 #: data/mp/messages/strings/resstrings.txt:705 msgid "All AA flak weapons upgraded automatically" -msgstr "" +msgstr "Svi AA flak oružja su automatski nadograÄ‘eni" #: data/base/messages/resmessages2.rmsg:668 #: data/base/messages/strings/resstrings.txt:678 @@ -3383,7 +3384,7 @@ msgstr "" #: data/base/messages/strings/resstrings.txt:679 #: data/mp/messages/strings/resstrings.txt:712 msgid "Increases AA ROF" -msgstr "" +msgstr "Povećava ROF AA" #: data/base/messages/resmessages2.rmsg:680 #: data/base/messages/resmessages2.rmsg:693 @@ -3412,7 +3413,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:720 #: data/mp/messages/strings/resstrings.txt:726 msgid "Best Targets: Base Structures and Defenses" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine Baze i Obrambene" #: data/base/messages/resmessages2.rmsg:694 #: data/base/messages/strings/resstrings.txt:692 @@ -3433,7 +3434,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:708 #: data/mp/messages/strings/resstrings.txt:732 msgid "Best Targets: Base Structures" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine Baze" #: data/base/messages/resmessages2.rmsg:720 #: data/base/messages/strings/resstrings.txt:704 @@ -3447,7 +3448,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:721 #: data/mp/messages/strings/resstrings.txt:738 msgid "Best Targets: Defenses" -msgstr "" +msgstr "Najbolje Mete: Obrambene" #: data/base/messages/resmessages2.rmsg:733 #: data/base/messages/strings/resstrings.txt:714 @@ -3467,7 +3468,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:748 #: data/mp/messages/strings/resstrings.txt:765 msgid "Replaces Medium Cannon" -msgstr "" +msgstr "Zamjenjuje Srednji Top" #: data/base/messages/resmessages2.rmsg:759 #: data/base/messages/strings/resstrings.txt:736 @@ -3517,7 +3518,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:825 #: data/mp/messages/strings/resstrings.txt:828 msgid "Best Targets: Base Structures, bunkers" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine Baze, Bunker" #: data/base/messages/resmessages2.rmsg:836 #: data/base/messages/resmessages2.rmsg:849 @@ -3538,14 +3539,14 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:840 #: data/mp/messages/strings/resstrings.txt:848 msgid "Howitzer Upgrade" -msgstr "" +msgstr "Nadogradnja Haubice" #: data/base/messages/resmessages2.rmsg:838 #: data/base/messages/resmessages3.rmsg:903 #: data/base/messages/strings/resstrings.txt:795 #: data/mp/messages/strings/resstrings.txt:834 msgid "Increases Howitzer accuracy" -msgstr "" +msgstr "Povećava Preciznost Haubice" #: data/base/messages/resmessages2.rmsg:839 #: data/base/messages/resmessages2.rmsg:852 @@ -3566,7 +3567,7 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:843 #: data/mp/messages/strings/resstrings.txt:851 msgid "All howitzers upgraded automatically" -msgstr "" +msgstr "Sve Haubice su automatski nadograÄ‘ene" #: data/base/messages/resmessages2.rmsg:850 #: data/base/messages/strings/resstrings.txt:802 @@ -3574,21 +3575,21 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:850 #: data/mp/messages/strings/resstrings.txt:841 msgid "High Explosive shells" -msgstr "" +msgstr "Visoko Eksplozivne ÄŒahure" #: data/base/messages/resmessages2.rmsg:851 #: data/base/messages/resmessages3.rmsg:916 #: data/base/messages/strings/resstrings.txt:803 #: data/mp/messages/strings/resstrings.txt:842 msgid "Increases Howitzer damage" -msgstr "" +msgstr "Povećava Å¡tetu Haubice" #: data/base/messages/resmessages2.rmsg:864 #: data/base/messages/resmessages3.rmsg:929 #: data/base/messages/strings/resstrings.txt:811 #: data/mp/messages/strings/resstrings.txt:850 msgid "Increases Howitzer ROF" -msgstr "" +msgstr "Povećava ROF Haubice" #: data/base/messages/resmessages2.rmsg:876 #: data/base/messages/strings/resstrings.txt:846 @@ -3602,7 +3603,7 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:889 #: data/mp/messages/strings/resstrings.txt:899 msgid "Improved chaingun mechanism" -msgstr "" +msgstr "PoboljÅ¡ani mehanizam strojnice" #: data/base/messages/resmessages2.rmsg:915 #: data/base/messages/strings/resstrings.txt:906 @@ -3628,49 +3629,49 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:18 #: data/mp/messages/resmessages3.rmsg:18 msgid "NEXUS Intruder Program analyzed" -msgstr "" +msgstr "NEXUS Uljezni Program je analiziran" #: data/base/messages/resmessages3.rmsg:19 #: data/mp/messages/resmessages3.rmsg:19 msgid "Intruder parasite isolated" -msgstr "" +msgstr "Uljez/Parazit je izoliran" #: data/base/messages/resmessages3.rmsg:20 #: data/base/messages/resmessages3.rmsg:33 #: data/mp/messages/resmessages3.rmsg:20 #: data/mp/messages/resmessages3.rmsg:33 msgid "Reduced chance of NEXUS take-over" -msgstr "" +msgstr "Smanjena mogućnost NEXUS preuzimanja" #: data/base/messages/resmessages3.rmsg:31 #: data/mp/messages/resmessages3.rmsg:31 msgid "Improved NEXUS resistance circuitry" -msgstr "" +msgstr "PoboljÅ¡ana NEXUS otpora strujnih krugova" #: data/base/messages/resmessages3.rmsg:32 #: data/mp/messages/resmessages3.rmsg:32 msgid "Computer systems can now be 'ring-fenced' from NEXUS" -msgstr "" +msgstr "RaÄunalni sustavi se sada može \"ring-ograÄ‘en ' od NEXUS-a" #: data/base/messages/resmessages3.rmsg:43 #: data/mp/messages/resmessages3.rmsg:43 msgid "New Cyborg Research Available" -msgstr "" +msgstr "Novi Kiborg istraživanje je Dostupno" #: data/base/messages/resmessages3.rmsg:44 #: data/mp/messages/resmessages3.rmsg:44 msgid "Aerodynamic Jump Pack" -msgstr "" +msgstr "AerodinamiÄkog SkoÄi Pack" #: data/base/messages/resmessages3.rmsg:45 #: data/mp/messages/resmessages3.rmsg:45 msgid "Gives Cyborg limited flight abilities" -msgstr "" +msgstr "Daje kiborgu ograniÄene sposobnosti leta" #: data/base/messages/resmessages3.rmsg:46 #: data/mp/messages/resmessages3.rmsg:46 msgid "Jump Cyborgs can now be researched" -msgstr "" +msgstr "SkoÄi kiborgi sada može biti istražena" #: data/base/messages/resmessages3.rmsg:70 #: data/base/messages/resmessages3.rmsg:694 @@ -3727,12 +3728,12 @@ msgstr "" #: data/mp/messages/strings/resstrings.txt:95 #: data/mp/messages/strings/resstrings.txt:101 msgid "New Jump Cyborg Available" -msgstr "" +msgstr "Novi SkoÄi Kiborg je Dostupan" #: data/base/messages/resmessages3.rmsg:148 #: data/mp/messages/resmessages3.rmsg:148 msgid "Armed with Lancer anti-tank missile" -msgstr "" +msgstr "Naoružan sa Lancer ProtuTenkovskim projektilom" #: data/base/messages/resmessages3.rmsg:161 #: data/mp/messages/resmessages3.rmsg:161 @@ -3786,7 +3787,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:304 msgid "Armored strongpoint with Pulse Laser" -msgstr "" +msgstr "Oklopno uporiÅ¡te sa Pulsiranim laserom" #: data/base/messages/resmessages3.rmsg:317 #: data/mp/messages/resmessages3.rmsg:317 @@ -3831,7 +3832,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:421 #: data/mp/messages/resmessages3.rmsg:421 msgid "Advanced repair techniques" -msgstr "" +msgstr "Napredne tehnike popravljanja" #: data/base/messages/resmessages3.rmsg:435 #: data/mp/messages/resmessages3.rmsg:434 @@ -3841,14 +3842,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3860,14 +3861,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -3966,7 +3967,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:628 #: data/mp/messages/resmessages3.rmsg:628 msgid "NEXUS Light Body" -msgstr "" +msgstr "NEXUS lagano tijelo" #: data/base/messages/resmessages3.rmsg:631 #: data/mp/messages/resmessages3.rmsg:631 @@ -3976,7 +3977,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:641 #: data/mp/messages/resmessages3.rmsg:641 msgid "NEXUS Medium Body" -msgstr "" +msgstr "NEXUS Osrednje Tijelo" #: data/base/messages/resmessages3.rmsg:644 #: data/mp/messages/resmessages3.rmsg:644 @@ -3986,7 +3987,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:654 #: data/mp/messages/resmessages3.rmsg:654 msgid "NEXUS Heavy Body" -msgstr "" +msgstr "NEXUS TeÅ¡ko Tijelo" #: data/base/messages/resmessages3.rmsg:655 #: data/base/messages/resmessagesall.rmsg:109 @@ -4005,14 +4006,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" -msgstr "" +msgstr "plinske turbine motora" #: data/base/messages/resmessages3.rmsg:681 #: data/mp/messages/resmessages3.rmsg:681 msgid "Ionizing Turbine Engine" -msgstr "" +msgstr "ionizirajući turbinski motor" #: data/base/messages/resmessages3.rmsg:785 #: data/base/messages/resmessages3.rmsg:798 @@ -4026,14 +4027,14 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:786 #: data/mp/messages/resmessages3.rmsg:799 msgid "Body Points and Speed Increased" -msgstr "" +msgstr "Bodovi Tijela i Brzina je Povećana" #: data/base/messages/resmessages3.rmsg:787 #: data/base/messages/resmessages3.rmsg:800 #: data/mp/messages/resmessages3.rmsg:787 #: data/mp/messages/resmessages3.rmsg:800 msgid "All VTOLs upgraded automatically" -msgstr "" +msgstr "Svi VTOL-i su automatski nadograÄ‘eni" #: data/base/messages/resmessages3.rmsg:811 #: data/mp/messages/resmessages3.rmsg:811 @@ -4063,7 +4064,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:201 #: data/mp/messages/resmessagesall.rmsg:903 msgid "Best Targets: Bunkers and hardpoints" -msgstr "" +msgstr "Najbolje Mete: Bunkeri i TeÅ¡ka UporiÅ¡ta" #: data/base/messages/resmessages3.rmsg:863 msgid "Bombs lock on and guide themselves to the target" @@ -4086,7 +4087,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:902 #: data/mp/messages/resmessages3.rmsg:902 msgid "Computer guided shells" -msgstr "" +msgstr "RaÄunalno voÄ‘ena Äahura" #: data/base/messages/resmessages3.rmsg:915 #: data/mp/messages/resmessages3.rmsg:915 @@ -4099,7 +4100,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:953 #: data/mp/messages/resmessagesall.rmsg:472 msgid "New Laser Weapon Available" -msgstr "" +msgstr "Nova Lasersko Oružje je Dostpuno" #: data/base/messages/resmessages3.rmsg:941 #: data/mp/messages/resmessages3.rmsg:941 @@ -4111,7 +4112,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:942 #: data/mp/messages/resmessages3.rmsg:955 msgid "Best Targets: Cyborgs" -msgstr "" +msgstr "Najbolje Mete: Kiborgi" #: data/base/messages/resmessages3.rmsg:954 #: data/mp/messages/resmessages3.rmsg:954 @@ -4125,7 +4126,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:979 #: data/mp/messages/resmessages3.rmsg:992 msgid "Laser Upgrade" -msgstr "" +msgstr "Nadogradnja Lasera" #: data/base/messages/resmessages3.rmsg:967 #: data/mp/messages/resmessages3.rmsg:967 @@ -4134,7 +4135,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:968 msgid "Increases Laser accuracy" -msgstr "" +msgstr "Povećava preciznost Lasera" #: data/base/messages/resmessages3.rmsg:969 #: data/base/messages/resmessages3.rmsg:982 @@ -4143,7 +4144,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:982 #: data/mp/messages/resmessages3.rmsg:995 msgid "All lasers upgraded automatically" -msgstr "" +msgstr "Svi su laseri automatski nadograÄ‘eni" #: data/base/messages/resmessages3.rmsg:980 #: data/mp/messages/resmessages3.rmsg:980 @@ -4152,7 +4153,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:981 msgid "Increases Laser damage" -msgstr "" +msgstr "Povećana Å¡teta Lasera" #: data/base/messages/resmessages3.rmsg:993 #: data/mp/messages/resmessages3.rmsg:993 @@ -4161,7 +4162,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:994 msgid "Increases Laser ROF" -msgstr "" +msgstr "Povećana ROF Lasera" #: data/base/messages/resmessages3.rmsg:1006 #: data/mp/messages/resmessages3.rmsg:1006 @@ -4178,17 +4179,17 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1031 #: data/mp/messages/resmessages3.rmsg:1044 msgid "New Missile Turret Available" -msgstr "" +msgstr "Nova Kupola Projektila je Dostupna" #: data/base/messages/resmessages3.rmsg:1032 #: data/mp/messages/resmessages3.rmsg:1032 msgid "Anti-tank missile" -msgstr "" +msgstr "ProtuTenkovski Projektil" #: data/base/messages/resmessages3.rmsg:1045 #: data/mp/messages/resmessages3.rmsg:1045 msgid "Bunker buster missile" -msgstr "" +msgstr "Projektil UniÅ¡tavać Bunkera" #: data/base/messages/resmessages3.rmsg:1057 #: data/base/messages/resmessages3.rmsg:1070 @@ -4201,17 +4202,17 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1148 #: data/mp/messages/resmessages3.rmsg:1161 msgid "Missile Upgrade" -msgstr "" +msgstr "Nadogradnja Projektila" #: data/base/messages/resmessages3.rmsg:1058 #: data/mp/messages/resmessages3.rmsg:1058 msgid "On-board computer predicts target movement" -msgstr "" +msgstr "On-board raÄunala predviÄ‘a ciljani pokret" #: data/base/messages/resmessages3.rmsg:1059 #: data/base/messages/resmessages3.rmsg:1072 msgid "Increases Missile accuracy" -msgstr "" +msgstr "Povećava preciznost Projektila" #: data/base/messages/resmessages3.rmsg:1060 #: data/base/messages/resmessages3.rmsg:1073 @@ -4224,7 +4225,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1151 #: data/mp/messages/resmessages3.rmsg:1164 msgid "All missiles upgraded automatically" -msgstr "" +msgstr "Svi projektili su automatski nadograÄ‘eni" #: data/base/messages/resmessages3.rmsg:1071 #: data/mp/messages/resmessages3.rmsg:1071 @@ -4239,14 +4240,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:1085 msgid "Increases Missile damage" -msgstr "" +msgstr "Povećava Å¡tetu Projektila" #: data/base/messages/resmessages3.rmsg:1096 #: data/base/messages/resmessages3.rmsg:1109 #: data/mp/messages/resmessages3.rmsg:1096 #: data/mp/messages/resmessages3.rmsg:1109 msgid "New SAM Turret Available" -msgstr "" +msgstr "Nova SAM Kupola je Dostupna" #: data/base/messages/resmessages3.rmsg:1097 #: data/mp/messages/resmessages3.rmsg:1097 @@ -4261,7 +4262,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:747 #: data/mp/messages/resmessagesall.rmsg:851 msgid "Best Targets: Aerial targets only" -msgstr "" +msgstr "Najbolje Mete: ZraÄne ciljeve samo" #: data/base/messages/resmessages3.rmsg:1110 #: data/mp/messages/resmessages3.rmsg:1110 @@ -4286,7 +4287,7 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1124 #: data/mp/messages/resmessages3.rmsg:1137 msgid "Best Targets: Base structures and cyborgs" -msgstr "" +msgstr "Najbolje Mete: GraÄ‘evine Baze i Kiborgi" #: data/base/messages/resmessages3.rmsg:1136 #: data/mp/messages/resmessages3.rmsg:1136 @@ -4301,7 +4302,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:1150 #: data/base/messages/resmessages3.rmsg:1163 msgid "Increases Missile ROF" -msgstr "" +msgstr "Povećava ROF Projektila" #: data/base/messages/resmessages3.rmsg:1162 #: data/mp/messages/resmessages3.rmsg:1162 @@ -4349,7 +4350,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:1240 #: data/mp/messages/resmessages3.rmsg:1240 msgid "Computer predicts and compensates for target's movement" -msgstr "" +msgstr "RaÄunalo predviÄ‘a i kompenzira ciljani pokret" #: data/base/messages/resmessages3.rmsg:1241 msgid "Increases Rail Gun accuracy" @@ -4458,7 +4459,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:514 #: data/mp/messages/resmessagesall.rmsg:709 msgid "Improved sensor range" -msgstr "" +msgstr "PoboljÅ¡an Radijus senzora" #: data/base/messages/resmessagesall.rmsg:58 #: data/mp/messages/resmessagesall.rmsg:58 @@ -4483,7 +4484,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:95 #: data/mp/messages/resmessagesall.rmsg:108 msgid "Sensors Improved" -msgstr "" +msgstr "PoboljÅ¡ani Senzor" #: data/base/messages/resmessagesall.rmsg:83 #: data/mp/messages/resmessagesall.rmsg:83 @@ -4492,14 +4493,14 @@ msgstr "" #: data/base/messages/resmessagesall.rmsg:84 msgid "Extends Sensor Range" -msgstr "" +msgstr "Produženi Senzorski Radijus" #: data/base/messages/resmessagesall.rmsg:85 #: data/mp/messages/resmessagesall.rmsg:85 #: data/mp/messages/resmessagesall.rmsg:98 #: data/mp/messages/resmessagesall.rmsg:111 msgid "All sensors upgraded automatically" -msgstr "" +msgstr "Svi su senzori automatski nadograÄ‘eni" #: data/base/messages/resmessagesall.rmsg:96 #: data/mp/messages/resmessagesall.rmsg:122 @@ -4509,12 +4510,12 @@ msgstr "" #: data/base/messages/resmessagesall.rmsg:108 #: data/mp/messages/resmessagesall.rmsg:147 msgid "Collective Heavy Body" -msgstr "" +msgstr "Kolektiv TeÅ¡ko Tijelo" #: data/base/messages/resmessagesall.rmsg:110 #: data/mp/messages/resmessagesall.rmsg:149 msgid "Slower than Python" -msgstr "" +msgstr "Sporiji neko Piton" #: data/base/messages/resmessagesall.rmsg:111 #: data/mp/messages/resmessagesall.rmsg:150 @@ -4534,7 +4535,7 @@ msgstr "" #: data/base/messages/resmessagesall.rmsg:123 #: data/mp/messages/resmessagesall.rmsg:162 msgid "Speed: VTOL" -msgstr "" +msgstr "Brzina:VTOL" #: data/base/messages/resmessagesall.rmsg:135 #: data/mp/messages/resmessagesall.rmsg:174 @@ -4557,53 +4558,56 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" -msgstr "" +msgstr "Zadatak: Locirajte i obnovite tehnologiju neuralne sinapse" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." -msgstr "" +msgstr "Uspostavite bazu, onda traženje graÄ‘evina prije kolapsa." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." -msgstr "" +msgstr "Ova struktura sadrži tehnologiju bitno za uspjeh projekta." #: data/base/messages/strings/cam1strings.txt:7 msgid "ALPHA BASE MISSION: Scavenger Raiders" -msgstr "" +msgstr "MISIJA ALFA BAZE: Strvinari" #: data/base/messages/strings/cam1strings.txt:8 msgid "Scavenger raiders are approaching our base." -msgstr "" +msgstr "Strvinari se približavaju se naÅ¡oj bazi" #: data/base/messages/strings/cam1strings.txt:9 msgid "Defend the base then destroy the Scavenger camps." -msgstr "" +msgstr "Obrani bazu i uniÅ¡ti kampove Strvinara" #: data/base/messages/strings/cam1strings.txt:11 #: data/base/messages/strings/cam1strings.txt:65 msgid "ALPHA BASE MISSION: Power Surge Detected" -msgstr "" +msgstr "MISIJA ALFA BAZE: Strujni Udar je Detektiran" #: data/base/messages/strings/cam1strings.txt:12 msgid "A power surge has been detected to the south of our position." -msgstr "" +msgstr "Strujni udari je otkriven na južnoj strani od naÅ¡e pozicije." #: data/base/messages/strings/cam1strings.txt:13 msgid "Investigate and secure the area." -msgstr "" +msgstr "Istražiti i osigurati podruÄje." #: data/base/messages/strings/cam1strings.txt:15 msgid "ALPHA BASE MISSION: The New Paradigm" -msgstr "" +msgstr "MISIJA ALFA BAZE: Novi Paradigma" #: data/base/messages/strings/cam1strings.txt:16 msgid "The New Paradigm control superior weapons technology." -msgstr "" +msgstr "Novi Paradigm kontrolira superiornu oružanu tehnologiju." #: data/base/messages/strings/cam1strings.txt:17 msgid "They may have the synaptic link technology, it's vital we retrieve it." -msgstr "" +msgstr "Oni možda imaju tehnologiju sinaptiÄke veze, važno je da je se domognete." #: data/base/messages/strings/cam1strings.txt:19 msgid "TRANSPORT MISSION: Locate and Recover Artifacts" @@ -4734,7 +4738,7 @@ msgstr "" #: data/base/messages/strings/cam2strings.txt:108 #: data/base/messages/strings/cam3strings.txt:156 msgid " " -msgstr "." +msgstr " " #: data/base/messages/strings/cam1strings.txt:66 msgid "Congratulations Commander." @@ -4754,31 +4758,31 @@ msgstr "" #: data/base/messages/strings/cam1strings.txt:75 msgid "PROJECT TEAM UPDATES" -msgstr "" +msgstr "PROJEKT TIM AŽURIRANJE" #: data/base/messages/strings/cam1strings.txt:78 msgid "TEAM BETA UPDATE" -msgstr "" +msgstr "TIM BETA AŽURIRANJE" #: data/base/messages/strings/cam1strings.txt:79 msgid "We have recovered some artifacts." -msgstr "" +msgstr "Mi smo pronaÅ¡li neke artefakte." #: data/base/messages/strings/cam1strings.txt:80 msgid "There is a better equipped force operating in this area." -msgstr "" +msgstr "Tamo je dobro opremljena snaga operira u ovom podruÄju." #: data/base/messages/strings/cam1strings.txt:83 msgid "TEAM GAMMA UPDATE" -msgstr "" +msgstr "TIM GAMA AŽURIRANJE" #: data/base/messages/strings/cam1strings.txt:84 msgid "Nothing to report." -msgstr "" +msgstr "NiÅ¡ta za prijavit." #: data/base/messages/strings/cam1strings.txt:85 msgid "We've discovered no artifacts and encountered no hostiles." -msgstr "" +msgstr "Mi nismo otkrili artefakte ni naiÅ¡li na neprijatelje" #: data/base/messages/strings/cam1strings.txt:88 msgid "ALPHA BASE INTELLIGENCE REPORT: Enemy Attack" @@ -4822,7 +4826,7 @@ msgstr "" #: data/base/messages/strings/cam1strings.txt:108 msgid "Supplemental" -msgstr "" +msgstr "Dodatak" #: data/base/messages/strings/cam1strings.txt:109 msgid "The synaptic link technology was at this location but was removed." @@ -4921,14 +4925,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4937,16 +4945,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5243,6 +5254,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5251,6 +5264,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5259,10 +5273,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5271,6 +5287,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5297,6 +5314,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5656,7 +5674,7 @@ msgstr "" #: data/base/messages/strings/genstrings.txt:9 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:9 msgid "Unknown Artifact" -msgstr "" +msgstr "Nepoznati Artefakt" #: data/base/messages/strings/genstrings.txt:10 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:10 @@ -5666,7 +5684,7 @@ msgstr "" #: data/base/messages/strings/genstrings.txt:13 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:13 msgid "Landing Zone" -msgstr "" +msgstr "SlijetaliÅ¡te" #: data/base/messages/strings/genstrings.txt:14 #: data/base/messages/strings/genstrings.txt:24 @@ -5688,32 +5706,32 @@ msgstr "" #: data/base/messages/strings/genstrings.txt:18 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:18 msgid "Mission Failed" -msgstr "" +msgstr "Misija Propala" #: data/base/messages/strings/genstrings.txt:19 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:19 msgid "Mission Successful" -msgstr "" +msgstr "Misija UspjeÅ¡na" #: data/base/messages/strings/genstrings.txt:22 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:22 msgid "Enemy Landing Zone" -msgstr "" +msgstr "Neprijateljsko SlijetiÅ¡te" #: data/base/messages/strings/genstrings.txt:23 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:23 msgid "Enemy Base" -msgstr "" +msgstr "Neprijateljska Baza" #: data/base/messages/strings/genstrings.txt:27 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:27 msgid "Incoming transmission" -msgstr "" +msgstr "Dolazni Prijenos" #: data/base/messages/strings/genstrings.txt:30 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:30 msgid "Incoming intelligence report." -msgstr "" +msgstr "Dolazno ObavjeÅ¡tajno IzvjeÅ¡Äe." #: data/base/messages/strings/genstrings.txt:33 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:33 @@ -5736,7 +5754,7 @@ msgstr "Transport" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Kamion" @@ -5745,7 +5763,7 @@ msgstr "Kamion" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "AI unit" @@ -5772,7 +5790,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "AI unit" @@ -5803,7 +5821,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "AI unit" @@ -5820,7 +5838,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "AI unit" @@ -5844,7 +5862,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "AI unit" @@ -5856,7 +5874,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "AI unit" @@ -5866,7 +5884,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "AI unit" @@ -5883,7 +5901,7 @@ msgstr "AI unit" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "AI unit" @@ -5897,26 +5915,26 @@ msgid "Light Cannon Python Tracks" msgstr "AI unit" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "AI unit" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "AI unit" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "AI unit" @@ -5980,7 +5998,7 @@ msgstr "Scavenger" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "StrojniÄar" @@ -5989,9 +6007,9 @@ msgstr "StrojniÄar" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "BacaÄ plamena" @@ -6001,8 +6019,8 @@ msgstr "BacaÄ plamena" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lanser raketa" @@ -6011,7 +6029,7 @@ msgstr "Lanser raketa" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Topovnik" @@ -6105,8 +6123,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6210,14 +6228,14 @@ msgstr "Polu-gusjeniÄar 3" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Robotske noge 2" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Robotske noge 3" @@ -6239,7 +6257,7 @@ msgstr "Noge" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Robotske noge" @@ -6267,26 +6285,26 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" -msgstr "" +msgstr "Senzor Toranj" #: data/base/messages/strings/names.txt:368 #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" -msgstr "" +msgstr "Senzor Kupola" #: data/base/messages/strings/names.txt:371 #: data/base/messages/strings/names.txt:372 @@ -6308,7 +6326,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6319,71 +6337,70 @@ msgstr "" #: data/base/messages/strings/names.txt:378 msgid "NEXUS Link" -msgstr "" +msgstr "NEXUS Veza" #: data/base/messages/strings/names.txt:380 #: data/base/messages/strings/names.txt:909 -#, fuzzy msgid "Scrambler Turret" -msgstr "PrÄkaÅ¡" +msgstr "" #: data/base/messages/strings/names.txt:383 #: data/mp/messages/strings/names.txt:390 msgid "Oil Derrick" -msgstr "" +msgstr "Nafta" #: data/base/messages/strings/names.txt:384 #: data/mp/messages/strings/names.txt:391 msgid "Command Center" -msgstr "" +msgstr "Zapovjedni Centar" #: data/base/messages/strings/names.txt:385 #: data/mp/messages/strings/names.txt:392 msgid "Factory" -msgstr "" +msgstr "Tvornica" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" -msgstr "" +msgstr "TvorniÄki Modul" #: data/base/messages/strings/names.txt:387 #: data/mp/messages/strings/names.txt:394 msgid "Power Generator" -msgstr "" +msgstr "Generator" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" -msgstr "" +msgstr "Energetski Modul" #: data/base/messages/strings/names.txt:389 #: data/mp/messages/strings/names.txt:396 msgid "Research Facility" -msgstr "" +msgstr "Objekt za Istraživanje" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" -msgstr "" +msgstr "MOdul za Istraživanje" #: data/base/messages/strings/names.txt:391 #: data/mp/messages/strings/names.txt:398 msgid "Demolish Structure" -msgstr "" +msgstr "UniÅ¡ti Strukturu" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" -msgstr "" +msgstr "Objetk za Popravak" #: data/base/messages/strings/names.txt:394 #: data/mp/messages/strings/names.txt:401 @@ -6402,10 +6419,10 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" -msgstr "" +msgstr "VTOL Tvornica" #: data/base/messages/strings/names.txt:402 #: data/base/messages/strings/names.txt:721 @@ -6414,63 +6431,63 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" -msgstr "" +msgstr "Pakao TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" -msgstr "" +msgstr "PaklenaOluja UporiÅ¡te" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" -msgstr "" +msgstr "Tornado AA Flak Položaj" #: data/base/messages/strings/names.txt:410 #: data/base/messages/strings/names.txt:712 msgid "Cyclone AA Flak Site" -msgstr "" +msgstr "Ciklon AA Flak Položaj" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" -msgstr "" +msgstr "JuriÅ¡ni Top Stražarski Toranj" #: data/base/messages/strings/names.txt:418 #: data/base/messages/strings/names.txt:1369 @@ -6479,200 +6496,200 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" -msgstr "" +msgstr "JuriÅ¡ni Top TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" -msgstr "" +msgstr "CB Toranj" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" -msgstr "" +msgstr "VTOL CB Toranj" #: data/base/messages/strings/names.txt:428 msgid "VTOL Radar Tower" -msgstr "" +msgstr "VTOl Radar Toranj" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" -msgstr "" +msgstr "TeÅ¡ka Strojnica TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" -msgstr "" +msgstr "Lagani Top TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" -msgstr "" +msgstr "Srednji Top TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" -msgstr "" +msgstr "TeÅ¡ki Top TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" -msgstr "" +msgstr "BacaÄ Plamena TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" -msgstr "" +msgstr "ÄŒamcer TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" -msgstr "" +msgstr "Strojnica Stražarski Toranj" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" -msgstr "" +msgstr "Blizanci Strojnice Stražarski Toranj" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" -msgstr "" +msgstr "TeÅ¡ka Strojnica Toranj" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" -msgstr "" +msgstr "BacaÄ Plamena Stražarski Toranj" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" -msgstr "" +msgstr "Lancer Toranj" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" -msgstr "" +msgstr "Mini Raketni Toranj" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" -msgstr "" +msgstr "Strojnice Bunker" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" -msgstr "" +msgstr "Blizanci Strojnice Bunker" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" -msgstr "" +msgstr "TeÅ¡ka Strojnica Bunker" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" -msgstr "" +msgstr "Lagani Top Bunker" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" -msgstr "" +msgstr "BacaÄ Vatre Bunker" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" -msgstr "" +msgstr "Lancer Bunker" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" -msgstr "" +msgstr "Blokada za Tenkove" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" -msgstr "" +msgstr "Haubica UporiÅ¡te" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6683,139 +6700,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" -msgstr "" +msgstr "Lagani Top" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" -msgstr "" +msgstr "Srednji Top" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" -msgstr "" +msgstr "TeÅ¡ki Top" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" -msgstr "" +msgstr "Pakao" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" -msgstr "" +msgstr "Haubica" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" -msgstr "" +msgstr "Zemljo Tres" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" -msgstr "" +msgstr "Zemljo Tres UporiÅ¡te" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" -msgstr "" +msgstr "Paklenoluja" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" -msgstr "" +msgstr "Pulsirani Laser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" -msgstr "" +msgstr "Strojnica" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" -msgstr "" +msgstr "Blizanci Strojnica" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" -msgstr "" +msgstr "TeÅ¡ka Strojnica" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6826,157 +6843,157 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" -msgstr "" +msgstr "Osvetnik Sam" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" -msgstr "" +msgstr "MinobacaÄ" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" -msgstr "" +msgstr "MinobacaÄ UporiÅ¡te" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" #: data/base/messages/strings/names.txt:523 #: data/base/messages/strings/names.txt:1181 msgid "Mini-Rocket Artillery" -msgstr "" +msgstr "Mini Raketna Artiljerija" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6985,62 +7002,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" -msgstr "" +msgstr "VTOL Top" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" -msgstr "" +msgstr "VTOL JuriÅ¡ni Top" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" -msgstr "" +msgstr "VTOL Pulsirani Laser" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" -msgstr "" +msgstr "VTOl Strojnica" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" -msgstr "" +msgstr "VTOL Blizanci Strojnice" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" -msgstr "" +msgstr "VTOL TeÅ¡ke Strojnice" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7049,339 +7066,339 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" -msgstr "" +msgstr "Kolektiv Zid" #: data/base/messages/strings/names.txt:582 msgid "Collective CWall" -msgstr "" +msgstr "Kolektiv KZid" #: data/base/messages/strings/names.txt:604 msgid "NEXUS Wall" -msgstr "" +msgstr "NEXUS Zid" #: data/base/messages/strings/names.txt:605 msgid "NEXUS CWall" -msgstr "" +msgstr "NEXUS KZid" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" -msgstr "" +msgstr "KAM1 ISTRAŽIVANJE" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" -msgstr "" +msgstr "NAPREDNO ISTRAŽIVANJE" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" -msgstr "" +msgstr "KAM1 VOZILA" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" -msgstr "" +msgstr "KAM1 ORUŽJA" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" -msgstr "" +msgstr "KAM1 SISTEMI" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" -msgstr "" +msgstr "KAM1 OBRANE" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" -msgstr "" +msgstr "KAM! GRAÄEVINE" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" -msgstr "" +msgstr "KAM2 ISTRAŽIVANJE" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" -msgstr "" +msgstr "KAM2 VOZILA" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" -msgstr "" +msgstr "KAM2 KIBORGI" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" -msgstr "" +msgstr "KAM2 ORUŽJA" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" -msgstr "" +msgstr "KAM2 SISTEMI" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" -msgstr "" +msgstr "KAM2 OBRANE" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" -msgstr "" +msgstr "KAM2 GRAÄEVINE" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" -msgstr "" +msgstr "KAM3 ISTRAŽIVANJE" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" -msgstr "" +msgstr "SinaptiÄka Veza" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" -msgstr "" +msgstr "Projektilni CiljaÄki Kodovi" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" -msgstr "" +msgstr "Druga Razina Projektilni CiljaÄki Kodovi" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" -msgstr "" +msgstr "Treća Razina Projektilni CiljaÄki Kodovi" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" -msgstr "" +msgstr "Kiborg Toplinski Oklop" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" -msgstr "" +msgstr "Kiborg Toplinski Oklop Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" -msgstr "" +msgstr "Kiborg Toplinski Oklop Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" -msgstr "" +msgstr "TeÅ¡ki StrojniÄar Kiborg" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" -msgstr "" +msgstr "Kiborg BacaÄ Plamena" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" -msgstr "" +msgstr "Kiborg StrojniÄar" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" -msgstr "" +msgstr "Lancer Kiborg" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7396,15 +7413,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7413,134 +7430,134 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" -msgstr "" +msgstr "UporiÅ¡te MinobacaÄ" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" -msgstr "" +msgstr "Mini Raketna Baterija" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" #: data/base/messages/strings/names.txt:756 msgid "Heavy Machinegun Guard Tower" -msgstr "" +msgstr "TeÅ¡ka Strojnica Stražarski Toranj" #: data/base/messages/strings/names.txt:758 msgid "Lancer Guard Tower" -msgstr "" +msgstr "Lancer Stražarski Toranj" #: data/base/messages/strings/names.txt:759 msgid "Mini-Rocket Guard Tower" -msgstr "" +msgstr "Mini Raketna Stražarski Toranj" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:775 #: data/base/messages/strings/names.txt:1381 msgid "HPV Cannon Hardpoint" -msgstr "" +msgstr "HPV Topovski TeÅ¡ko UporiÅ¡te" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7578,54 +7595,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" -msgstr "" +msgstr "Plinski Turbinski Generator" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" -msgstr "" +msgstr "Vihor Turbinski Generator" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" -msgstr "" +msgstr "Objekt za Popravke" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7662,172 +7679,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" -msgstr "" +msgstr "Samo Popravljanje Vozila" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" -msgstr "" +msgstr "Nadogradnja Senzora" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" -msgstr "" +msgstr "GraÄ‘evinska Jedinica" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" -msgstr "" +msgstr "Inžinjerstvo" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7837,390 +7854,390 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" -msgstr "" +msgstr "CB kupola" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" #: data/base/messages/strings/names.txt:913 msgid "NEXUS Intruder Program" -msgstr "" +msgstr "Nexus Uljez Program" #: data/base/messages/strings/names.txt:914 msgid "NEXUS Resistance Circuits" -msgstr "" +msgstr "NEXUS Otporni sklopovi" #: data/base/messages/strings/names.txt:915 msgid "NEXUS Resistance Circuits Mk2" -msgstr "" +msgstr "NEXUS Otporni sklopovi Mk2" #: data/base/messages/strings/names.txt:916 msgid "NEXUS Resistance Circuits Mk3" -msgstr "" +msgstr "NEXUS Otporni sklopovi Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" -msgstr "" +msgstr "Toplinski Oklop" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" -msgstr "" +msgstr "Toplinski Oklop Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" -msgstr "" +msgstr "Toplinski Oklop Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" -msgstr "" +msgstr "Lagano Tijelo - Poskok" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" -msgstr "" +msgstr "Lagano Tijelo - Leoprad" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" -msgstr "" +msgstr "Lagano Tijelo - Osveta" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" -msgstr "" +msgstr "Lagano Tijelo - Kukac" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" -msgstr "" +msgstr "Srednje Tijelo - Kobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" -msgstr "" +msgstr "Srednje Tijelo - Pantera" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" -msgstr "" +msgstr "Srednje Tijelo - Odmazda" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" -msgstr "" +msgstr "Srednje Tijelo - Å korpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" -msgstr "" +msgstr "TeÅ¡ko Tijelo - Tigar" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" -msgstr "" +msgstr "TeÅ¡ko Tijelo - Osveta" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" -msgstr "" +msgstr "TeÅ¡ko Tijelo - Piton" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" -msgstr "" +msgstr "TeÅ¡ko Tijelo - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8229,17 +8246,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8256,824 +8273,824 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" -msgstr "" +msgstr "Topovski laserski daljinomjer" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" -msgstr "" +msgstr "Topovski Laserski oznaÄivać" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" -msgstr "" +msgstr "HEAT Topovske ÄŒahure" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" -msgstr "" +msgstr "HEAT Topovske ÄŒahure Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" -msgstr "" +msgstr "HEAT Topovske ÄŒahure Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" -msgstr "" +msgstr "APFSDS Topovske Runde" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" -msgstr "" +msgstr "APFSDS Topovske Runde Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" -msgstr "" +msgstr "APFSDS Topovske Runde Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" -msgstr "" +msgstr "HVAPFSDS Topovske Runde" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" -msgstr "" +msgstr "HVAPFSDS Topovske Runde Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" -msgstr "" +msgstr "HVAPFSDS Topovske Runde Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" -msgstr "" +msgstr "AutoPunjać Topa" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" -msgstr "" +msgstr "AutoPunjać Topa Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" -msgstr "" +msgstr "AutoPunjać Topa Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" -msgstr "" +msgstr "Topovski Rapidni PunjaÄ" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" -msgstr "" +msgstr "Topovski Rapidni PunjaÄ Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" -msgstr "" +msgstr "Topovski Rapidni PunjaÄ Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" -msgstr "" +msgstr "Visoka Energetska Laserski Emiter" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" -msgstr "" +msgstr "Visoka Energetska Laserski Emiter Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" -msgstr "" +msgstr "Visoka Energetska Laserski Emiter Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" -msgstr "" +msgstr "Visoka Temperatura Gel-a BacaÄa Plamena" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" -msgstr "" +msgstr "Visoka Temperatura Gel-a BacaÄa Plamena Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" -msgstr "" +msgstr "Visoka Temperatura Gel-a BacaÄa Plamena Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" -msgstr "" +msgstr "Super Vrući Gel BacaÄa Plamena" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" -msgstr "" +msgstr "Super Vrući Gel BacaÄa Plamena Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" -msgstr "" +msgstr "Super Vrući Gel BacaÄa Plamena Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" -msgstr "" +msgstr "AutoPunjaÄ BacaÄa Plamena" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" -msgstr "" +msgstr "AutoPunjaÄ BacaÄa Plamena Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" -msgstr "" +msgstr "AutoPunjaÄ BacaÄa Plamena Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" -msgstr "" +msgstr "TeÅ¡ki BacaÄ Vatre - Pakao" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" -msgstr "" +msgstr "TeÅ¡ka Haubica - Zemljin Potres" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" -msgstr "" +msgstr "Rotirajuća Haubica - VatrenaOluja" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" -msgstr "" +msgstr "HE Haubica ÄŒahura" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" -msgstr "" +msgstr "HE Haubica ÄŒahura Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" -msgstr "" +msgstr "HE Haubica ÄŒahura Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" -msgstr "" +msgstr "HEAP Haubica ÄŒahure" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" -msgstr "" +msgstr "HEAP Haubica ÄŒahure Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" -msgstr "" +msgstr "HEAP Haubica ÄŒahure Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" -msgstr "" +msgstr "AutoPunjaÄ Haubice" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" -msgstr "" +msgstr "AutoPunjaÄ Haubice Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" -msgstr "" +msgstr "AutoPunjaÄ Haubice Mk3" #: data/base/messages/strings/names.txt:1080 msgid "Fast Loader" -msgstr "" +msgstr "Brzi PunjaÄ" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" -msgstr "" +msgstr "ÄŒvršći MG meci" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" -msgstr "" +msgstr "APDSB MG Meci Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" -msgstr "" +msgstr "APDSB MG Meci Mk2" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" -msgstr "" +msgstr "Nadogradnja Strojnice" #: data/base/messages/strings/names.txt:1096 msgid "Rapid Fire Chaingun Upgrade" -msgstr "" +msgstr "Rapidno Pucanje Strojnice Nadogradnja" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" -msgstr "" +msgstr "Hiper Pucanje Strojnice Nadogradnja" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" -msgstr "" +msgstr "Traži i UniÅ¡ti Projektil" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" -msgstr "" +msgstr "Napredna Projektilna Bojna Glava" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" -msgstr "" +msgstr "Napredna Projektilna Bojna Glava Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" -msgstr "" +msgstr "Napredna Projektilna Bojna Glava Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" -msgstr "" +msgstr "HEAP Projektil Bojna Glava" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" -msgstr "" +msgstr "HEAP Projektil Bojna Glava Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" -msgstr "" +msgstr "HEAP Projektil Bojna Glava Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" -msgstr "" +msgstr "PoboljÅ¡ano Sistem Punjenja Projektila" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" -msgstr "" +msgstr "MinobacaÄki CiljaÄki Kompjuter" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" -msgstr "" +msgstr "HE MinobacaÄki ÄŒahure" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" -msgstr "" +msgstr "HE MinobacaÄki ÄŒahure Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" -msgstr "" +msgstr "HE MinobacaÄki ÄŒahure Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" -msgstr "" +msgstr "HEAP MinobacaÄki ÄŒahure" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" -msgstr "" +msgstr "HEAP MinobacaÄki ÄŒahure Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" -msgstr "" +msgstr "HEAP MinobacaÄki ÄŒahure Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" -msgstr "" +msgstr "AutoPunjenje MinobacaÄa" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" -msgstr "" +msgstr "AutoPunjenje MinobacaÄa Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" -msgstr "" +msgstr "AutoPunjenje MinobacaÄa Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" -msgstr "" +msgstr "Brzi MinobacaÄki PunjaÄ" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" -msgstr "" +msgstr "TeÅ¡ki MinobacaÄ - Bombarder" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" -msgstr "" +msgstr "Rotirajući MinobacaÄ -" #: data/base/messages/strings/names.txt:1145 msgid "Target Prediction Computer" -msgstr "" +msgstr "RaÄunalno PredviÄ‘anje Cilja" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" -msgstr "" +msgstr "Stabilizirana Mini Rakete" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" -msgstr "" +msgstr "Stabilizirana Mini Rakete Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" -msgstr "" +msgstr "HE Mini Rockets" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" -msgstr "" +msgstr "HE Mini Rockets Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" -msgstr "" +msgstr "HE Mini Rockets Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" -msgstr "" +msgstr "HEAP Mini Rakete" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" -msgstr "" +msgstr "HEAP Mini Rakete Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" -msgstr "" +msgstr "HEAP Mini Rakete Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" -msgstr "" +msgstr "Brzo Pucanje Mini Raketa" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" -msgstr "" +msgstr "Brzo Pucanje Mini Raketa Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" -msgstr "" +msgstr "Brzo Pucanje Mini Raketa Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" -msgstr "" +msgstr "Rapidno Pucanje Mini Raketa" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" -msgstr "" +msgstr "Rapidno Pucanje Mini Raketa Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" -msgstr "" +msgstr "Rapidno Pucanje Mini Raketa Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" -msgstr "" +msgstr "HEAT Bojna Raketna Glava" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" -msgstr "" +msgstr "HEAT Bojna Raketna Glava Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" -msgstr "" +msgstr "HEAT Bojna Raketna Glava Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" -msgstr "" +msgstr "HESH Bojna Raketna Glava Mk" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" -msgstr "" +msgstr "HESH Bojna Raketna Glava Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" -msgstr "" +msgstr "HESH Bojna Raketna Glava Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" -msgstr "" +msgstr "AutoPunjenje Raketa" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" -msgstr "" +msgstr "AutoPunjenje Raketa Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" -msgstr "" +msgstr "AutoPunjenje Raketa Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" -msgstr "" +msgstr "Lancer AT raketa" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" -msgstr "" +msgstr "UniÅ¡tavać Bunkera Raketa" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" -msgstr "" +msgstr "Raketa Ubojica Tenkova" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" -msgstr "" +msgstr "Novi Paradigma Zapovjedni Centar" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" -msgstr "" +msgstr "Kolektiv Zapovjedni Centar" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" -msgstr "" +msgstr "Kiborg Laboratorij" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" -msgstr "" +msgstr "Inžinjerski Laboratorij" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" -msgstr "" +msgstr "RobotiÄki Laboratorij" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" -msgstr "" +msgstr "Laserska Optika Laboratiorij" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" -msgstr "" +msgstr "Elektronski Laboratorij" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" -msgstr "" +msgstr "Kemijski Laboratorij" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9091,10 +9108,10 @@ msgstr "" #: data/base/messages/strings/names.txt:1368 msgid "MRL Emplacement" -msgstr "" +msgstr "MRL uporiÅ¡te" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9103,49 +9120,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" -msgstr "" +msgstr "BiÄ" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" -msgstr "" +msgstr "Bunker UniÅ¡tavać" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" -msgstr "" +msgstr "SruÅ¡eni Transport" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9154,64 +9171,64 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" -msgstr "" +msgstr "Raketni Silo" #: data/base/messages/strings/resstrings.txt:234 #: data/mp/messages/strings/resstrings.txt:260 msgid "Armored guard tower with Heavy Machinegun" -msgstr "" +msgstr "Oklopni stražarski toranj sa TeÅ¡kom Strojnicom" #: data/base/messages/strings/resstrings.txt:240 #: data/mp/messages/strings/resstrings.txt:266 msgid "Armored guard tower with Flamer" -msgstr "" +msgstr "Oklopni stražarski toranj sa Lancer AT raketama" #: data/base/messages/strings/resstrings.txt:246 #: data/mp/messages/strings/resstrings.txt:272 msgid "Armored guard tower with Lancer AT Rocket" -msgstr "" +msgstr "Oklopni stražarski toranj sa Lancer AT raketama" #: data/base/messages/strings/resstrings.txt:260 #: data/mp/messages/strings/resstrings.txt:286 msgid "Armored bunker with Heavy Machinegun" -msgstr "" +msgstr "Oklopni bunker sa TeÅ¡kom Strojnicom" #: data/base/messages/strings/resstrings.txt:280 #: data/mp/messages/strings/resstrings.txt:306 msgid "Armored hardpoint with Flamer" -msgstr "" +msgstr "Oklopno TeÅ¡ko UporiÅ¡te sa BacaÄem Plamena" #: data/base/messages/strings/resstrings.txt:356 #: data/mp/messages/strings/resstrings.txt:382 @@ -9287,30 +9304,30 @@ msgstr "" #: data/base/script/text/cam2cx.slo:270 #: data/base/script/text/genexp.slo:854 msgid "Enemy Escaping" -msgstr "" +msgstr "Neprijatelj Bježi" #: data/base/script/text/cam2dx.slo:40 #: data/base/script/text/cam3a-d1x.slo:99 #: data/base/script/text/cam3a-d2x.slo:109 msgid "Objective Destroyed" -msgstr "" +msgstr "Cilj je UniÅ¡ten" #: data/base/script/text/cam2dx.slo:63 #: data/base/script/text/cam3a-d1x.slo:129 msgid "Objective Captured" -msgstr "" +msgstr "Cilj je Zarobljen" #: data/base/script/text/cam3-2x.slo:118 msgid "Reinforcements are now available" -msgstr "" +msgstr "PojaÄanje je sada dostupno" #: data/base/script/text/tutorial3.slo:289 msgid "In this training session you'll learn how to build an effective base" -msgstr "" +msgstr "U ovom treningu ćete nauÄiti kako izgraditi uÄinkovitu bazu" #: data/base/script/text/tutorial3.slo:304 msgid "Oil resources are key to your success" -msgstr "" +msgstr "Naftni izvori su kljuÄ za tvoj uspjeh" #: data/base/script/text/tutorial3.slo:313 msgid "To build an oil derrick, select one of your trucks" @@ -9466,554 +9483,1507 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "ZavrÅ¡etak misije..." + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "KAMPANJA JEDAN" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "ZAPADNI SEKTOR" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Zora, 4. srpnja 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Ciljevi PROJEKTA" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Nova Era" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Jutro, 4. srpnja 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "U letu za zapadni sektor" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "Alpha Team približava se svom odrediÅ¡tu" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Transport destinacije slijedi:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alfa - Zapadni Sektor" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alpha vi ste spremni za polijetanje." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Sretno i dobar lov." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "Približavanje zoni slijetanja. Team Alpha poÄinje Briefing." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Zapovjednik, vi vodite Alfa Tim, jedan od triju ekspedicijskih timova poslan od strane Projekta za pronalaženje predmeta prije kolapsa." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Tvoja destinacija je u zapadnoj zoni" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "ZapovjedniÄe, mi smo pronaÅ¡li zapovjedniÄku kupoli od Novog Paradigma." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "VaÅ¡i napadni na nas neće ići nekažnjeno." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "VI ste u kontroverziji od Novog Paradigma." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." msgstr "" +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Oprez!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Vi sada ulazite u zabranjenu zonu." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Vratite se u zadanu zonu ili budi te uniÅ¡teni." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Ponavljam. Vratite se u zadanu zonu ili budi te uniÅ¡teni." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Kraj Poruke." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Vi će te biti uniÅ¡teni!" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "KAMPANJA DVA" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "ISTOÄŒNI SEKTOR" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "KOLEKTIV" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "NASDA Brifing slijedi..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "ZavrÅ¡etak misije..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "KAMPANJA TRI" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "SJEVERNI SEKTOR" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Pokaži sljedeÄeg kapetana" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Zapovjedniće, dobrodoÅ¡ao u NEXUS!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "Tvoje snage you sada moje! DobrodoÅ¡ao u Nexus." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "Moji laserski sateliti se sada pokreću. Ja ih namjeravam testirati na tebi, zapovjedniÄe!" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Sumrak, 3. studenog 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Zemlja, Visoka Orbita" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "Kolaps" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19 sijeÄanj 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Sjeverna Amerika" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Nuklearni reaktor" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Ponoć, 10. travnja 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Rocky Mountains" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Zora, 4. travnja 2100" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Novi PoÄetak" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "Nažda Sustav je razvijen da nas zaÅ¡titi. Trebalo je biti ultimatno nuklearnog odvaÄanja. Kako se pokazalo, to je bion naÅ¡ krvnik." + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "Izvješća je reklo da NASDA razvila greÅ¡ke tijekom rutinske provjere sistema. Ne vjeruj u to. Netko nas je htjeo izbaciti." + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "Te su nuklearke ciljanje na sve velike gradove oko svijeta. NASDA je programirana da poÄetak kolapsa. Kad je protu napad pokrenut, laserska obrana i anti-projektilni uporiÅ¡ta podbaciti." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "Svijet koji smo mi znali je zavrÅ¡io." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "Nuklearna zima je udarila jako. Bolesti i glad pogodio veÄinu od nas koji su preživjeli nuklearni udar. Ratovi zbog konzervne hrane za pse je uzeo viÅ¡e." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "Mi smo otiÅ¡li iz Seattle rano u 86. Mi smo ćuli da Rocky Mountains su relativno bez radijacije-" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "Nakon borbe od bandi pljaÄkaÅ¡a i stigli smo do baze. Njegovo osoblje je bilo mrtvo. Ubijeni od bilo koje bolesti." + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "Mi smo otvorili vrata, i oÄistili od tijela unutra." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "Znali smo da stvari nikad neće biti iste, ali smo bili odluÄni da napravimo novi svijet iz ruÅ¡evina. Mi smo obnovili slijetiÅ¡ta i doveli stari sustav u pogon." + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Bili smo konaÄno spremni za poÄetak projekta." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Nakon mnogo dugih mjeseci borbe, mi smo porazili NEXUS." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "Rat okji je zapoÄeo Doktor Reed je zavrÅ¡en." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Mi smo naÅ¡li mnoge tehnologije koje smo tražili." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "Sada je vrijeme da ih koristim za obrnovu svijeta." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Lagano, iz pepela mi ćemo uskrsnuti ..." + #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" -msgstr "" +msgid "Cobra Hover Heavy-Repair" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" -msgstr "" +msgid "Viper HMG Wheels" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" -msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" -msgstr "" +msgid "TK Mantis Hover" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" -msgstr "" +msgid "Cobra HMG Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" -msgstr "" +msgid "Cobra Hover HC" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" -msgstr "" +msgid "Scorpion Lancer Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" -msgstr "" +msgid "Scorpion Heavy Cannon Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" -msgstr "" +msgid "Scorpion Lancer VTOL" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" -msgstr "" +msgid "Scorpion BB VTOL" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" -msgstr "" +msgid "Viper Command Turret Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" -msgstr "" +msgid "Cobra Command Turret Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" -msgstr "" +msgid "Scorpion Command Turret Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" -msgstr "" +msgid "mantis Command Turret Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" -msgstr "" +msgid "Cobra Lancer Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" -msgstr "" +msgid "Mantis Heavy Cannon Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" -msgstr "" +msgid "Mantis Tank Killer Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" -msgstr "" +msgid "Mantis Scourge Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" -msgstr "" +msgid "Scorpion Heavy Machinegun Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" -msgstr "" +msgid "Scorpion Repair Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" -msgstr "" +msgid "Scorpion Heavy Repair Hover" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" -msgstr "" +msgid "Cobra Hover Truck" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" -msgstr "" +msgid "Scorpion Hover Truck" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" -msgstr "" +msgid "Mantis Hover Truck" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" -msgstr "" +msgid "Cobra Bunker Buster Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" -msgstr "" +msgid "Scorpion Bunker Buster Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" -msgstr "" +msgid "Mantis Bunker Buster Tracks" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" -msgstr "" +msgid "Viper Tracks Lancer" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" -msgstr "" +msgid "Cobra Half-Tracks Mini-Pod" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" -msgstr "" +msgid "Cobra Tracks Mini-Pod" +msgstr "AI unit" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "AI unit" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" -msgstr "" +msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1874 -#, fuzzy msgid "VTOL HPV Cannon Bug VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1876 -#, fuzzy msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1878 -#, fuzzy msgid "VTOL HPV Cannon Mantis VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1920 -#, fuzzy msgid "HPV Cannon Python Hover" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "AI unit" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "AI unit" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "StrojniÄar" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +#, fuzzy +msgid "Rail Gun Tiger Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "AI unit" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "PlaÄenik" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "Brzina gradnje +10%" @@ -10021,79 +10991,79 @@ msgstr "Brzina gradnje +10%" #: data/mp/messages/resmessages12.rmsg:97 #: data/mp/messages/resmessagesall.rmsg:214 msgid "Cannon accuracy +10%" -msgstr "" +msgstr "Preciznost Topa +10%" #: data/mp/messages/resmessages12.rmsg:110 msgid "Flamer reload time -15%" -msgstr "" +msgstr "Vrijeme punjenja BacaÄa Vatre -15$" #: data/mp/messages/resmessages12.rmsg:136 #: data/mp/messages/resmessages23.rmsg:175 #: data/mp/messages/resmessages2.rmsg:890 msgid "Machinegun reload time -15%" -msgstr "" +msgstr "Vrijeme punjenja Strojnice -15%" #: data/mp/messages/resmessages12.rmsg:162 #: data/mp/messages/resmessages23.rmsg:188 #: data/mp/messages/resmessages3.rmsg:1176 msgid "Mortar accuracy +10%" -msgstr "" +msgstr "Preciznost MinobacaÄa +10%" #: data/mp/messages/resmessages12.rmsg:175 #: data/mp/messages/resmessages3.rmsg:1189 msgid "Mortar reload time -10%" -msgstr "" +msgstr "Vrijeme punjenja MinobacaÄa -10%" #: data/mp/messages/resmessages12.rmsg:201 msgid "Rocket reload time -15%" -msgstr "" +msgstr "Vrijeme punjenja Raketa -15%" #: data/mp/messages/resmessages12.rmsg:214 #: data/mp/messages/resmessages3.rmsg:890 msgid "Cannon reload time -10%" -msgstr "" +msgstr "Vrijeme punjenja Topa -10%" #: data/mp/messages/resmessages12.rmsg:227 #: data/mp/messages/resmessages1.rmsg:579 #: data/mp/messages/resmessages3.rmsg:877 msgid "Cannon damage +25%" -msgstr "" +msgstr "Å teta Topa +25%" #: data/mp/messages/resmessages12.rmsg:240 #: data/mp/messages/resmessages1.rmsg:748 #: data/mp/messages/resmessagesall.rmsg:175 msgid "Rocket accuracy +10%" -msgstr "" +msgstr "Preciznost Raketa +10%" #: data/mp/messages/resmessages1.rmsg:32 #: data/mp/messages/resmessages3.rmsg:71 #: data/mp/messages/resmessages3.rmsg:84 msgid "Kinetic Armor +35%, Body Points +35%" -msgstr "" +msgstr "KinetiÄki Oklop +35%, Bodovi Tijela +35%" #: data/mp/messages/resmessages1.rmsg:97 msgid "Armour +35%, Body Points +30%" -msgstr "" +msgstr "Oklop +35%, Bodovi Tijela +35%" #: data/mp/messages/resmessages1.rmsg:148 msgid "Armored guard tower with Lancer AT rocket" -msgstr "" +msgstr "Oklopni stražarski toranj sa Lancer AT raketama" #: data/mp/messages/resmessages1.rmsg:253 #: data/mp/messages/resmessages2.rmsg:331 #: data/mp/messages/resmessages3.rmsg:422 msgid "Repair Speed +100%" -msgstr "" +msgstr "Brzina Popravka +100%" #: data/mp/messages/resmessages1.rmsg:306 #, no-c-format msgid "Factory output speed +100% per module" -msgstr "" +msgstr "Brzina proizvodnje tvornice +100% po modulu" #: data/mp/messages/resmessages1.rmsg:319 #: data/mp/messages/resmessagesall.rmsg:786 msgid "Factory output speed +60%" -msgstr "" +msgstr "Brzina proizvodnje Tvornice +60%" #: data/mp/messages/resmessages1.rmsg:345 msgid "Research speed +85%" @@ -10113,33 +11083,33 @@ msgstr "Brzina istraživanja +30%" #: data/mp/messages/resmessages3.rmsg:461 #: data/mp/messages/resmessages3.rmsg:474 msgid "Armor +35%, Body Points +30%" -msgstr "" +msgstr "Oklop +35%, Bodovi Tijela +30%" #: data/mp/messages/resmessages1.rmsg:462 #: data/mp/messages/resmessages2.rmsg:500 #: data/mp/messages/resmessages3.rmsg:669 #: data/mp/messages/resmessages3.rmsg:682 msgid "Vehicle speed +5%" -msgstr "" +msgstr "Brzina Vozila +5%" #: data/mp/messages/resmessages1.rmsg:475 #: data/mp/messages/resmessages2.rmsg:513 #: data/mp/messages/resmessages3.rmsg:695 #: data/mp/messages/resmessages3.rmsg:708 msgid "Kinetic armor +30%, body points +30%" -msgstr "" +msgstr "KinetiÄki oklop +30%, bodovi tijela +30%" #: data/mp/messages/resmessages1.rmsg:553 #: data/mp/messages/resmessages1.rmsg:566 #: data/mp/messages/resmessages2.rmsg:747 msgid "Best Targets: Vehicles, Hardpoints" -msgstr "" +msgstr "Najbolje Mete: Vozila, TeÅ¡ka UporiÅ¡ta" #: data/mp/messages/resmessages1.rmsg:605 #: data/mp/messages/resmessages2.rmsg:786 #: data/mp/messages/resmessagesall.rmsg:773 msgid "Flamer damage +25%" -msgstr "" +msgstr "Å teta BacaÄa Plamena+25%" #: data/mp/messages/resmessages1.rmsg:644 #: data/mp/messages/resmessages1.rmsg:657 @@ -10147,34 +11117,34 @@ msgstr "" #: data/mp/messages/resmessages3.rmsg:1007 #: data/mp/messages/resmessages3.rmsg:1020 msgid "Machinegun damage +25%" -msgstr "" +msgstr "Å teta Strojnice +25%" #: data/mp/messages/resmessages1.rmsg:683 #: data/mp/messages/resmessages2.rmsg:916 msgid "Mortar damage +25%" -msgstr "" +msgstr "Å teta MinobacaÄa +25%" #: data/mp/messages/resmessages1.rmsg:709 msgid "Mini-Rocket accuracy +10%" -msgstr "" +msgstr "Preicznost Mini Raketa +10%" #: data/mp/messages/resmessages1.rmsg:722 #: data/mp/messages/resmessages2.rmsg:929 msgid "Mini-Rocket damage +25%" -msgstr "" +msgstr "Å teta Mini Raketa +25%" #: data/mp/messages/resmessages1.rmsg:735 msgid "Mini-Rocket reload time -15%" -msgstr "" +msgstr "Vrijeme punjenja Mini Rakete -15%" #: data/mp/messages/resmessages1.rmsg:761 #: data/mp/messages/resmessages2.rmsg:942 msgid "Rocket damage +25%" -msgstr "" +msgstr "Å teta Raketa +25%" #: data/mp/messages/resmessages23.rmsg:32 msgid "Power output +25%" -msgstr "" +msgstr "Proizvodnja energije +25%" #: data/mp/messages/resmessages23.rmsg:45 #: data/mp/messages/resmessages3.rmsg:513 @@ -10185,13 +11155,13 @@ msgstr "Brzina gradnje +20%" #: data/mp/messages/resmessages2.rmsg:643 #: data/mp/messages/resmessages3.rmsg:812 msgid "AA accuracy +10%" -msgstr "" +msgstr "AA preciznost +10%" #: data/mp/messages/resmessages23.rmsg:160 #: data/mp/messages/resmessages2.rmsg:732 #: data/mp/messages/resmessages3.rmsg:862 msgid "Bomb Upgrade" -msgstr "" +msgstr "Nadogradnja Bombe" #: data/mp/messages/resmessages23.rmsg:161 msgid "Improved trinitramine explosive formula" @@ -10201,19 +11171,19 @@ msgstr "" #: data/mp/messages/resmessages2.rmsg:734 #: data/mp/messages/resmessages3.rmsg:864 msgid "Bomb damage +25%" -msgstr "" +msgstr "Å teta Bombe +25%" #: data/mp/messages/resmessages2.rmsg:6 msgid "Thermal Armor +45%" -msgstr "" +msgstr "Toplinski Oklop +45%" #: data/mp/messages/resmessages2.rmsg:19 msgid "Kinetic Armor +35%, and Body Points +35%" -msgstr "" +msgstr "KinetiÄki Oklop +35%, i Bodovi Tijela +35%" #: data/mp/messages/resmessages2.rmsg:357 msgid "Factory production rate +60%" -msgstr "" +msgstr "Stopa proizvodnja Tvornice +60%" #: data/mp/messages/resmessages2.rmsg:358 #: data/mp/messages/resmessagesall.rmsg:787 @@ -10223,74 +11193,74 @@ msgstr "Sve Tvornice su automatski nadograÄ‘ene" #: data/mp/messages/resmessages2.rmsg:409 #: data/mp/messages/resmessages3.rmsg:500 msgid "Rearming speed +30%" -msgstr "" +msgstr "Brzina Punjenja +30%" #: data/mp/messages/resmessages2.rmsg:526 msgid "Thermal armor +40%" -msgstr "" +msgstr "Toplinski oklop +40%" #: data/mp/messages/resmessages2.rmsg:656 #: data/mp/messages/resmessages3.rmsg:825 msgid "AA Flak damage +25%" -msgstr "" +msgstr "AA Flak Å¡teta +25%" #: data/mp/messages/resmessages2.rmsg:669 #: data/mp/messages/resmessages3.rmsg:838 msgid "AA reload time -15%" -msgstr "" +msgstr "Vrijeme punjenja AA -15%" #: data/mp/messages/resmessages2.rmsg:838 #: data/mp/messages/resmessages3.rmsg:903 msgid "Howitzer accuracy +10%" -msgstr "" +msgstr "Preciznost Haubice +10%" #: data/mp/messages/resmessages2.rmsg:851 #: data/mp/messages/resmessages3.rmsg:916 msgid "Howitzer damage +25%" -msgstr "" +msgstr "Å teta Haubice +25%" #: data/mp/messages/resmessages2.rmsg:864 #: data/mp/messages/resmessages3.rmsg:929 msgid "Howitzer reload time -10%" -msgstr "" +msgstr "Vrijeme punjenja Haubice -10%" #: data/mp/messages/resmessages3.rmsg:6 msgid "Thermal Armor +35%" -msgstr "" +msgstr "Toplinski Oklop +35%" #: data/mp/messages/resmessages3.rmsg:304 msgid "Armored guard tower with Pulse Laser" -msgstr "" +msgstr "Oklopni stražarski toranj sa Pulsirani Laserom" #: data/mp/messages/resmessages3.rmsg:435 msgid "Power output +30%" -msgstr "" +msgstr "Proizvodnja Energije +30%" #: data/mp/messages/resmessages3.rmsg:721 #: data/mp/messages/resmessagesall.rmsg:838 msgid "Thermal Armor +40%" -msgstr "" +msgstr "Toplinski Oklop +40%" #: data/mp/messages/resmessages3.rmsg:968 msgid "Laser accuracy +10%" -msgstr "" +msgstr "Laserska preciznost +10%" #: data/mp/messages/resmessages3.rmsg:981 msgid "Laser damage +25%" -msgstr "" +msgstr "Å teta Lasera +25%" #: data/mp/messages/resmessages3.rmsg:994 msgid "Laser reload time -15%" -msgstr "" +msgstr "Vrijeme punjenja Lasera -15%" #: data/mp/messages/resmessages3.rmsg:1059 #: data/mp/messages/resmessages3.rmsg:1072 msgid "Missile accuracy +10%" -msgstr "" +msgstr "Projektilna Preciznost +10%" #: data/mp/messages/resmessages3.rmsg:1085 msgid "Missile damage +25%" -msgstr "" +msgstr "Projektilna Å teta +25%" #: data/mp/messages/resmessages3.rmsg:1150 #: data/mp/messages/resmessages3.rmsg:1163 @@ -10311,27 +11281,27 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:84 msgid "Sensor Range +25%" -msgstr "" +msgstr "Raspon Senzora +25%" #: data/mp/messages/resmessagesall.rmsg:96 msgid "Improved Thermal Emissions detection" -msgstr "" +msgstr "PoboljÅ¡ana Toplinsko Emisijska Detektcija" #: data/mp/messages/resmessagesall.rmsg:97 msgid "Sensor Range +15%" -msgstr "" +msgstr "Raspon Senzora +15%" #: data/mp/messages/resmessagesall.rmsg:109 msgid "Advanced Thermal Emissions detection" -msgstr "" +msgstr "Napredno Toplinsko Emisijska detektcija" #: data/mp/messages/resmessagesall.rmsg:110 msgid "Sensor Range +10%" -msgstr "" +msgstr "Raspon Senzora +10%" #: data/mp/messages/resmessagesall.rmsg:135 msgid "Radar detector tower detects enemy sensors" -msgstr "" +msgstr "Radarski detektorski toranj detektira neprijateljske senzore" #: data/mp/messages/resmessagesall.rmsg:136 msgid "Orders assigned indirect fire units to fire at the enemy sensors" @@ -10339,31 +11309,31 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:137 msgid "Counter-battery fire continues until enemy sensor is suppressed" -msgstr "" +msgstr "Ofenzivna-baterija nastavlja pucati dok je neprijateljski senzor potisnut" #: data/mp/messages/resmessagesall.rmsg:225 msgid "Cyborg Transport Available" -msgstr "" +msgstr "Kiborg Transport je Dostupan" #: data/mp/messages/resmessagesall.rmsg:226 msgid "Armed with Machinegun" -msgstr "" +msgstr "Naoružan sa Strojnicom" #: data/mp/messages/resmessagesall.rmsg:228 msgid "Requires heavy VTOL factory to produce" -msgstr "" +msgstr "Potrebno je teÅ¡ka VTOL tvornica da proizvodi" #: data/mp/messages/resmessagesall.rmsg:239 msgid "Incendiary howitzer emplacement" -msgstr "" +msgstr "Zapaljiva Haubica sa UporiÅ¡tem" #: data/mp/messages/resmessagesall.rmsg:252 msgid "Armored Incendiary Mortar battery pit" -msgstr "" +msgstr "Oklopni Zapaljivi minobacaÄ baterijsko uporiÅ¡te" #: data/mp/messages/resmessagesall.rmsg:265 msgid "Armored strongpoint with Plasmite Flamer" -msgstr "" +msgstr "Oklopno TeÅ¡ko UporiÅ¡te sa Plasma bacaÄem" #: data/mp/messages/resmessagesall.rmsg:278 msgid "Armed with Cyborg Thermite Flamer" @@ -10371,19 +11341,19 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:291 msgid "Armed with grenades" -msgstr "" +msgstr "Naoružan sa granatama" #: data/mp/messages/resmessagesall.rmsg:304 msgid "Combat engineer with construction ability" -msgstr "" +msgstr "Borbeni inžinjer sa sposobnosti za gradnju" #: data/mp/messages/resmessagesall.rmsg:317 msgid "Mechanic with repair ability" -msgstr "" +msgstr "MehaniÄar sa sposobnosti za popravak" #: data/mp/messages/resmessagesall.rmsg:330 msgid "Incendiary Howitzer may be assigned to a sensor" -msgstr "" +msgstr "Zapaljiva Haubica može biti zadana senzorima" #: data/mp/messages/resmessagesall.rmsg:369 msgid "Plasmite Flame-thrower" @@ -10391,11 +11361,11 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:384 msgid "Steals technology from structures and takes control of weapons" -msgstr "" +msgstr "Krade tehnologiju iz graÄ‘evina i preuzima kontrolu oružja" #: data/mp/messages/resmessagesall.rmsg:394 msgid "New Electronic Technology Discovered" -msgstr "" +msgstr "Nova Elektronska Tehnologija je Otkrivena" #: data/mp/messages/resmessagesall.rmsg:396 msgid "On-board resistance circuit systems" @@ -10403,15 +11373,15 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:397 msgid "Enables resistance to Nexus Link technology" -msgstr "" +msgstr "UkljuÄuje otpor prema Nexus Veznom tehnologijom" #: data/mp/messages/resmessagesall.rmsg:410 msgid "Enables self-repair" -msgstr "" +msgstr "OmoguÄava Samo-Popravljanje" #: data/mp/messages/resmessagesall.rmsg:421 msgid "Armed with medium cannon" -msgstr "" +msgstr "Naoružani sa srednjim laserom" #: data/mp/messages/resmessagesall.rmsg:434 #: data/mp/messages/resmessagesall.rmsg:447 @@ -10420,15 +11390,15 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:460 msgid "Armed with tank killer rockets" -msgstr "" +msgstr "Naoružan sa raketama ubojicama tenkova" #: data/mp/messages/resmessagesall.rmsg:473 msgid "Fires heavy pulses of laser light" -msgstr "" +msgstr "Puca TeÅ¡ske Pulsirane Lasersko Svijetlo" #: data/mp/messages/resmessagesall.rmsg:474 msgid "Best Targets: Heavy cyborgs" -msgstr "" +msgstr "Najbolje Mete: TeÅ¡ki Kiborgi" #: data/mp/messages/resmessagesall.rmsg:486 msgid "76mm twin-barrel automatic-cannon" @@ -10437,15 +11407,15 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:498 #: data/mp/messages/resmessagesall.rmsg:511 msgid "New Systems Structure Available" -msgstr "" +msgstr "Novi Sustavi GraÄ‘evina je Dostupno" #: data/mp/messages/resmessagesall.rmsg:499 msgid "Complete battlefield visibility" -msgstr "" +msgstr "Potpuna vidljivost bojiÅ¡ta" #: data/mp/messages/resmessagesall.rmsg:501 msgid "Does not offer sensor targeting" -msgstr "" +msgstr "Ne nudi senzorsko ciljanje" #: data/mp/messages/resmessagesall.rmsg:512 #: data/mp/messages/resmessagesall.rmsg:707 @@ -10454,11 +11424,11 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:524 msgid "New Advanced Weapon Available" -msgstr "" +msgstr "Novo Napredno Oružje je Dostupno" #: data/mp/messages/resmessagesall.rmsg:525 msgid "Very slow recharge time" -msgstr "" +msgstr "Jako sporo vrijeme punjenja" #: data/mp/messages/resmessagesall.rmsg:526 msgid "Immense damage infliction capability" @@ -10470,12 +11440,12 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:538 msgid "Armored guard tower with Nexus Link" -msgstr "" +msgstr "Oklopni stražarski toranj sa Nexus Vezom" #: data/mp/messages/resmessagesall.rmsg:551 #: data/mp/messages/resmessagesall.rmsg:564 msgid "Plasma Cannon firing plasma" -msgstr "" +msgstr "Plasma Top puca plazmu" #: data/mp/messages/resmessagesall.rmsg:565 #: data/mp/messages/resmessagesall.rmsg:643 @@ -10484,19 +11454,19 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:682 #: data/mp/messages/resmessagesall.rmsg:695 msgid "Best Targets : Vehicles" -msgstr "" +msgstr "Najbolje Mete: Vozila" #: data/mp/messages/resmessagesall.rmsg:577 msgid "Armored strongpoint with Heavy Laser" -msgstr "" +msgstr "Oklopno UporiÅ¡te sa TeÅ¡kim Laserom" #: data/mp/messages/resmessagesall.rmsg:590 msgid "Armored guard tower with EMP Cannon" -msgstr "" +msgstr "Oklopni stražarski toranj sa EMP Topom" #: data/mp/messages/resmessagesall.rmsg:603 msgid "Armed with Cyborg Pulse Laser" -msgstr "" +msgstr "Naoružan sa Kiborg Pulsirani Laser" #: data/mp/messages/resmessagesall.rmsg:616 msgid "Armed with Cyborg Rail Gun" @@ -10504,7 +11474,7 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:629 msgid "Armed with Cyborg Scourge Missile Launcher" -msgstr "" +msgstr "Naoružan sa Kiborg BiÄ Projektil Lanser" #: data/mp/messages/resmessagesall.rmsg:642 msgid "Uses advanced mass driver railgun technology" @@ -10515,31 +11485,31 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:670 #: data/mp/messages/resmessagesall.rmsg:683 msgid "Defensive Strength : High" -msgstr "" +msgstr "Obrambena Snaga: Velika" #: data/mp/messages/resmessagesall.rmsg:655 msgid "Uses advanced cannon technology" -msgstr "" +msgstr "Koristi napredno tehnoloÅ¡ko topovsko oružje" #: data/mp/messages/resmessagesall.rmsg:668 msgid "Uses advanced rocket gun technology" -msgstr "" +msgstr "Koristi napredno tehnoloÅ¡ko raketno oružje" #: data/mp/messages/resmessagesall.rmsg:681 msgid "Uses advanced missile gun technology" -msgstr "" +msgstr "Koristi napredno tehnoloÅ¡ko projektilno oružje" #: data/mp/messages/resmessagesall.rmsg:694 msgid "Powerful Electronic magnetic pulse weapon" -msgstr "" +msgstr "MoÄno Elektronsko magnetsko pulsirano oružje" #: data/mp/messages/resmessagesall.rmsg:706 msgid "New System Available" -msgstr "" +msgstr "Novi Sistem Dostupan" #: data/mp/messages/resmessagesall.rmsg:719 msgid "Medium Super Heavy Body" -msgstr "" +msgstr "Srednje Super TeÅ¡ko Tijelo" #: data/mp/messages/resmessagesall.rmsg:720 msgid "More armor and body points than Vengeance" @@ -10547,51 +11517,51 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:721 msgid "Slow moving Body" -msgstr "" +msgstr "Sporo pokretljivo Tijelo" #: data/mp/messages/resmessagesall.rmsg:732 msgid "Large Super Heavy Body" -msgstr "" +msgstr "Ogromno Super TeÅ¡ko Tijelo" #: data/mp/messages/resmessagesall.rmsg:733 msgid "Maximum armor and body points" -msgstr "" +msgstr "Maksimalni oklop i bodova tijela" #: data/mp/messages/resmessagesall.rmsg:734 msgid "Very slow moving Body" -msgstr "" +msgstr "Jako sporo kretanje Tijela" #: data/mp/messages/resmessagesall.rmsg:745 msgid "Hardpoint Vindicator SAM Site Available" -msgstr "" +msgstr "TeÅ¡ko UporiÅ¡te Branitelj SAM Položaj Dostupan" #: data/mp/messages/resmessagesall.rmsg:758 msgid "Hardpoint Whirlwind AA Gun Available" -msgstr "" +msgstr "TeÅ¡ko UporiÅ¡te Vihor AA Top Dostupan" #: data/mp/messages/resmessagesall.rmsg:811 msgid "Armored EMP Mortar battery pit" -msgstr "" +msgstr "Oklopni EMP minobacaÄ baterijsko uporiÅ¡te" #: data/mp/messages/resmessagesall.rmsg:823 msgid "Laser AA Gun Available" -msgstr "" +msgstr "Laser AA Top Dostupan" #: data/mp/messages/resmessagesall.rmsg:824 msgid "Twin Medium Anti-Aircraft Laser" -msgstr "" +msgstr "Srednji Anti-Avionski Laserski Blizanci" #: data/mp/messages/resmessagesall.rmsg:849 msgid "Hardpoint Avenger SAM Site Available" -msgstr "" +msgstr "TeÅ¡ko UporiÅ¡te Osvetnika SAM Položaja je Dostupno" #: data/mp/messages/resmessagesall.rmsg:862 msgid "Hardpoint Cyclone AA Gun Available" -msgstr "" +msgstr "TeÅ¡ko UporiÅ¡te Ciklon AA Oružje je Dostupno" #: data/mp/messages/resmessagesall.rmsg:863 msgid "Quad 80mm Anti-Aircraft machinegun" -msgstr "" +msgstr "Quad 80mm Anti-Avionska strojnica" #: data/mp/messages/resmessagesall.rmsg:876 #: data/mp/messages/resmessagesall.rmsg:889 @@ -10608,28 +11578,28 @@ msgstr "" #: data/mp/messages/resmessagesall.rmsg:914 msgid "New VTOL Missile Launcher" -msgstr "" +msgstr "Novi VTOL Projektil Lanser" #: data/mp/messages/resmessagesall.rmsg:915 msgid "Fires Electronic Magnetic Pulse Missiles" -msgstr "" +msgstr "Puca Eletronske Magnetske Pulsirane Projektile" #: data/mp/messages/resmessagesall.rmsg:927 #: data/mp/messages/resmessagesall.rmsg:940 #: data/mp/messages/resmessagesall.rmsg:953 msgid "Stronger Commander Turret Available for Design" -msgstr "" +msgstr "Snažna Zapovjedna Kupola Dostupna za Dizajn" #: data/mp/messages/resmessagesall.rmsg:928 #: data/mp/messages/resmessagesall.rmsg:941 #: data/mp/messages/resmessagesall.rmsg:954 msgid "Upgraded battlefield computer system" -msgstr "" +msgstr "NadograÄ‘en Bojni Kompjuterski Sistem" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" -msgstr "" +msgstr "Kiborg Transport" #: data/mp/messages/strings/names.txt:144 msgid "Light Cannon Viper Half-tracks" @@ -10637,662 +11607,675 @@ msgstr "" #: data/mp/messages/strings/names.txt:175 msgid "Repair Turret Viper Half-track" -msgstr "" +msgstr "AI unit" #: data/mp/messages/strings/names.txt:183 msgid "Mini-Rocket Array Viper Wheels" -msgstr "" +msgstr "AI unit" #: data/mp/messages/strings/names.txt:184 msgid "Bunker Buster Rockets Viper Wheels" -msgstr "" +msgstr "AI unit" #: data/mp/messages/strings/names.txt:189 msgid "Sensor Turret Cobra Half-tracks" -msgstr "" +msgstr "AI unit" #: data/mp/messages/strings/names.txt:194 msgid "Mini-Rocket Array Cobra Half-tracks" -msgstr "" +msgstr "AI unit" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" -msgstr "" +msgstr "Radar Detektor" #: data/mp/messages/strings/names.txt:380 msgid "Radar Detector Tower" -msgstr "" +msgstr "Radar Detektor Toranj" #: data/mp/messages/strings/names.txt:385 msgid "Nexus Link" -msgstr "" +msgstr "Nexus Veza" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" +msgstr "Nexus Vezni bunker" + +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" -msgstr "" - -#: data/mp/messages/strings/names.txt:416 -msgid "Tornado AA Site" -msgstr "" +msgstr "Pakao Bunker" #: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +msgid "Tornado AA Site" +msgstr "Tornado AA položaj" + +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" -msgstr "" +msgstr "Ciklon AA Položaj" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" -msgstr "" +msgstr "TeÅ¡ki Pulsirani Laser UporiÅ¡te" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" -msgstr "" +msgstr "Pulsirani Laser Toranj" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" -msgstr "" +msgstr "Seraph Projektil Mreža" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" -msgstr "" +msgstr "Mini Raketna Mreža" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" -msgstr "" +msgstr "Laserski Satelitski Zapovijedni postaja" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" -msgstr "" - -#: data/mp/messages/strings/names.txt:611 -msgid "Nexus Wall" -msgstr "" +msgstr "Kolektiv Kutni Zid" #: data/mp/messages/strings/names.txt:612 -msgid "Nexus Corner Wall" -msgstr "" +msgid "Nexus Wall" +msgstr "Nexus Zid" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:613 +msgid "Nexus Corner Wall" +msgstr "Nexus Kutni Zid" + +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" -msgstr "" +msgstr "Seraph Projektil Baterija" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" -msgstr "" +msgstr "BacaÄ Plamena Toranj" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 -msgid "Automated Manufacturing" -msgstr "" - -#: data/mp/messages/strings/names.txt:806 -msgid "Automated Manufacturing Mk2" -msgstr "" - -#: data/mp/messages/strings/names.txt:807 -msgid "Automated Manufacturing Mk3" -msgstr "" - #: data/mp/messages/strings/names.txt:808 -msgid "Robotic Manufacturing" -msgstr "" +msgid "Automated Manufacturing" +msgstr "Automatska Proizvodnja" #: data/mp/messages/strings/names.txt:809 -msgid "Robotic Manufacturing Mk2" -msgstr "" +msgid "Automated Manufacturing Mk2" +msgstr "Automatska Proizvodnja Mk2" #: data/mp/messages/strings/names.txt:810 -msgid "Robotic Manufacturing Mk3" -msgstr "" +msgid "Automated Manufacturing Mk3" +msgstr "Automatska Proizvodnja Mk3" #: data/mp/messages/strings/names.txt:811 -msgid "Advanced Manufacturing" -msgstr "" +msgid "Robotic Manufacturing" +msgstr "Robotska Proizvodnja" #: data/mp/messages/strings/names.txt:812 -msgid "Advanced Manufacturing Mk2" -msgstr "" +msgid "Robotic Manufacturing Mk2" +msgstr "Robotska Proizvodnja Mk2" #: data/mp/messages/strings/names.txt:813 +msgid "Robotic Manufacturing Mk3" +msgstr "Robotska Proizvodnja Mk3" + +#: data/mp/messages/strings/names.txt:814 +msgid "Advanced Manufacturing" +msgstr "Napredna Proizvodnja" + +#: data/mp/messages/strings/names.txt:815 +msgid "Advanced Manufacturing Mk2" +msgstr "Napredna Proizvodnja Mk2" + +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" -msgstr "" - -#: data/mp/messages/strings/names.txt:833 -msgid "Automated Repair Facility Mk2" -msgstr "" - -#: data/mp/messages/strings/names.txt:834 -msgid "Automated Repair Facility Mk3" -msgstr "" - -#: data/mp/messages/strings/names.txt:835 -msgid "Robotic Repair Facility" -msgstr "" +msgstr "Napredna Proizvodnja Mk3" #: data/mp/messages/strings/names.txt:836 -msgid "Robotic Repair Facility Mk2" -msgstr "" +msgid "Automated Repair Facility Mk2" +msgstr "Automatski Objekt za Popravak Mk2" #: data/mp/messages/strings/names.txt:837 -msgid "Advanced Repair Facility" -msgstr "" +msgid "Automated Repair Facility Mk3" +msgstr "Automatski Objekt za Popravak Mk3" #: data/mp/messages/strings/names.txt:838 -msgid "Robotic Repair Facility Mk3" -msgstr "" +msgid "Robotic Repair Facility" +msgstr "Objekt sa RobotiÄkim Popravkom" #: data/mp/messages/strings/names.txt:839 -msgid "Advanced Repair Facility Mk2" -msgstr "" +msgid "Robotic Repair Facility Mk2" +msgstr "Objekt sa RobotiÄkim Popravkom Mk2" #: data/mp/messages/strings/names.txt:840 +msgid "Advanced Repair Facility" +msgstr "Napredni Objekt za Popravak" + +#: data/mp/messages/strings/names.txt:841 +msgid "Robotic Repair Facility Mk3" +msgstr "Objekt sa RobotiÄkim Popravkom Mk3" + +#: data/mp/messages/strings/names.txt:842 +msgid "Advanced Repair Facility Mk2" +msgstr "Napredni Objekt za Popravak Mk2" + +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" -msgstr "" +msgstr "Napredni Objekt za Popravak Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" -msgstr "" +msgstr "Automatski Porpavak" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" -msgstr "" - -#: data/mp/messages/strings/names.txt:926 -msgid "Nexus Intruder Program" -msgstr "" - -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 -msgid "Nexus Resistance Circuits" -msgstr "" - -#: data/mp/messages/strings/names.txt:928 -msgid "Nexus Resistance Circuits Mk2" -msgstr "" +msgstr "TeÅ¡ka Kupola za Popravak" #: data/mp/messages/strings/names.txt:929 -msgid "Nexus Resistance Circuits Mk3" -msgstr "" +msgid "Nexus Intruder Program" +msgstr "Nexus Uljez Program" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 +msgid "Nexus Resistance Circuits" +msgstr "Nexus Otporni Sklopovi" + +#: data/mp/messages/strings/names.txt:931 +msgid "Nexus Resistance Circuits Mk2" +msgstr "Nexus Otporni Sklopovi Mk2" + +#: data/mp/messages/strings/names.txt:932 +msgid "Nexus Resistance Circuits Mk3" +msgstr "Nexus Otporni Sklopovi Mk3" + +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" -msgstr "" +msgstr "HE Bombske ÄŒahure" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" -msgstr "" +msgstr "PoboljÅ¡ana Bojevna Glava" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" -msgstr "" +msgstr "Napredna Bojevna Glava" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" -msgstr "" +msgstr "Brzo Punjenje Haubice" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" -msgstr "" +msgstr "Rapidno Pucanje Strojnice" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" -msgstr "" +msgstr "HESH Mini Raketa" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" -msgstr "" +msgstr "HESH Mini Raketa Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" -msgstr "" +msgstr "HESH Mini Raketa Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" -msgstr "" +msgstr "JuriÅ¡ni Top" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" -msgstr "" +msgstr "AI unit" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" -msgstr "" - -#: data/mp/messages/strings/names.txt:1514 -msgid "Bunker Buster Cobra Hover" -msgstr "" - -#: data/mp/messages/strings/names.txt:1516 -msgid "Sensor Upgrade Mk2" -msgstr "" +msgstr "AI unit" #: data/mp/messages/strings/names.txt:1517 +msgid "Bunker Buster Cobra Hover" +msgstr "AI unit" + +#: data/mp/messages/strings/names.txt:1519 +msgid "Sensor Upgrade Mk2" +msgstr "Senzor Nadogradnja Mk2" + +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" -msgstr "" +msgstr "Senzor Nadogradnja Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" -msgstr "" +msgstr "Parni TurboGenerato Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" -msgstr "" - -#: data/mp/messages/strings/names.txt:1523 -msgid "Gas Turbine Generator Mk3" -msgstr "" +msgstr "Plinski Turbinski Generator Mk2" #: data/mp/messages/strings/names.txt:1526 -msgid "Vapor Turbine Generator Mk3" -msgstr "" +msgid "Gas Turbine Generator Mk3" +msgstr "Plinski Turbinski Generator Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1529 +msgid "Vapor Turbine Generator Mk3" +msgstr "Parni TurboGenerato Mk3" + +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 -msgid "Grenadier Cyborg" -msgstr "" - #: data/mp/messages/strings/names.txt:1619 +msgid "Grenadier Cyborg" +msgstr "Grenadir Kiborg" + +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" -msgstr "" +msgstr "Grenadir" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" -msgstr "" +msgstr "Kiborg Inžinjer" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" -msgstr "" +msgstr "Kiborg MehaniÄar" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 -msgid "Incendiary Howitzer" -msgstr "" - -#: data/mp/messages/strings/names.txt:1637 #: data/mp/messages/strings/names.txt:1638 -msgid "Incendiary Howitzer Emplacement" -msgstr "" - #: data/mp/messages/strings/names.txt:1639 +msgid "Incendiary Howitzer" +msgstr "Zapaljiva Haubica" + #: data/mp/messages/strings/names.txt:1640 -msgid "Plasmite Flamer" -msgstr "" - #: data/mp/messages/strings/names.txt:1641 +msgid "Incendiary Howitzer Emplacement" +msgstr "Zapaljiva Haubica UporiÅ¡te" + #: data/mp/messages/strings/names.txt:1642 -msgid "Plasmite Flamer Bunker" -msgstr "" - #: data/mp/messages/strings/names.txt:1643 +msgid "Plasmite Flamer" +msgstr "Plasma BacaÄ" + #: data/mp/messages/strings/names.txt:1644 -msgid "Incendiary Mortar" -msgstr "" - #: data/mp/messages/strings/names.txt:1645 +msgid "Plasmite Flamer Bunker" +msgstr "Plasma BacaÄ Bunker" + #: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 +msgid "Incendiary Mortar" +msgstr "Zapaljivi minobacaÄ" + +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" -msgstr "" +msgstr "Zapaljiva minobacaÄko uporiÅ¡te" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" -msgstr "" - -#: data/mp/messages/strings/names.txt:1651 -msgid "Cyborg Superdense Thermal Armor Mk2" -msgstr "" - -#: data/mp/messages/strings/names.txt:1652 -msgid "Cyborg Superdense Thermal Armor Mk3" -msgstr "" +msgstr "Super Guste Toplinski Oklop Kiborga" #: data/mp/messages/strings/names.txt:1654 -msgid "Vehicle Superdense Thermal Armor" -msgstr "" +msgid "Cyborg Superdense Thermal Armor Mk2" +msgstr "Super Guste Toplinski Oklop Kiborga Mk2" #: data/mp/messages/strings/names.txt:1655 +msgid "Cyborg Superdense Thermal Armor Mk3" +msgstr "Super Guste Toplinski Oklop Kiborga Mk3" + +#: data/mp/messages/strings/names.txt:1657 +msgid "Vehicle Superdense Thermal Armor" +msgstr "Super Guste Toplinski Oklop Vozila" + +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" -msgstr "" +msgstr "Super Guste Toplinski Oklop Vozila Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" -msgstr "" +msgstr "Super Guste Toplinski Oklop Vozila Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 -msgid "Super Heavy-Gunner" -msgstr "" - +#: data/mp/messages/strings/names.txt:1664 #: data/mp/messages/strings/names.txt:1665 #: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 -#: data/mp/messages/strings/names.txt:1668 -msgid "Super Auto-Cannon Cyborg" -msgstr "" +msgid "Super Heavy-Gunner" +msgstr "Super TeÅ¡ki Topnik" +#: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 #: data/mp/messages/strings/names.txt:1670 #: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 -#: data/mp/messages/strings/names.txt:1673 -msgid "Super HPV Cyborg" -msgstr "" +msgid "Super Auto-Cannon Cyborg" +msgstr "Super Auto-Top Kiborg" +#: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 #: data/mp/messages/strings/names.txt:1675 #: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 -#: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" +msgid "Super HPV Cyborg" +msgstr "Super HPV Kiborg" +#: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" -msgstr "" +msgid "Super Tank-Killer Cyborg" +msgstr "Super Ubojica Tenka Kiborg" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "TeÅ¡ki Laser" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "VTOL TeÅ¡ki Laser" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" -msgstr "" +msgstr "TeÅ¡ki Lasersko UporiÅ¡te" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 -msgid "Twin Assault Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1692 #: data/mp/messages/strings/names.txt:1693 -msgid "Twin Assault Cannon Bunker" -msgstr "" +#: data/mp/messages/strings/names.txt:1694 +msgid "Twin Assault Cannon" +msgstr "JuriÅ¡ni Topovski Blizanci" +#: data/mp/messages/strings/names.txt:1695 #: data/mp/messages/strings/names.txt:1696 +msgid "Twin Assault Cannon Bunker" +msgstr "JuriÅ¡ni Blizanci Topovi Bunker" + +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 +msgid "Satellite Uplink Center" +msgstr "Satelistki Uplink Centar" + +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 +msgid "Wide Spectrum Sensor" +msgstr "Å irok Spektrum Senzora" + #: data/mp/messages/strings/names.txt:1701 #: data/mp/messages/strings/names.txt:1703 -msgid "Satellite Uplink Center" -msgstr "" - -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 -msgid "Wide Spectrum Sensor" -msgstr "" - -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 msgid "Wide Spectrum Sensor Tower" -msgstr "" +msgstr "Toranj Å irokog Spektra Senzor" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" -msgstr "" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" +msgstr "Plasma Top" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 -#: data/mp/messages/strings/names.txt:1724 -msgid "Super Pulse Laser Cyborg" -msgstr "" +msgid "Plasma Cannon Emplacement" +msgstr "Plasma Top UporiÅ¡te" +#: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 #: data/mp/messages/strings/names.txt:1726 #: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 +msgid "Super Pulse Laser Cyborg" +msgstr "Super Pulsirani Laser Kiborg" + #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 -msgid "Super Scourge Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1735 #: data/mp/messages/strings/names.txt:1736 #: data/mp/messages/strings/names.txt:1737 -msgid "Nexus Link Tower" -msgstr "" +msgid "Super Scourge Cyborg" +msgstr "Super BiÄ Kiborg" #: data/mp/messages/strings/names.txt:1739 -#: data/mp/messages/strings/names.txt:1742 -msgid "EMP Cannon" -msgstr "" - #: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 -msgid "EMP Cannon Tower" -msgstr "" +msgid "Nexus Link Tower" +msgstr "Nexus vezni toranj" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 +msgid "EMP Cannon" +msgstr "EMP top" + +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 +msgid "EMP Cannon Tower" +msgstr "EMP topovski toranj" + +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 -msgid "Cannon Fortress" -msgstr "" - +#: data/mp/messages/strings/names.txt:1753 #: data/mp/messages/strings/names.txt:1754 #: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 -msgid "Heavy Rocket Bastion" -msgstr "" +msgid "Cannon Fortress" +msgstr "Topovska TvrÄ‘ava" +#: data/mp/messages/strings/names.txt:1757 #: data/mp/messages/strings/names.txt:1758 #: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +msgid "Heavy Rocket Bastion" +msgstr "TeÅ¡ko Raketni Bastijon" + +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" -msgstr "" - -#: data/mp/messages/strings/names.txt:1764 -msgid "Heavy Body - Wyvern" -msgstr "" - -#: data/mp/messages/strings/names.txt:1765 -msgid "Wyvern" -msgstr "" +msgstr "Projektil TvrÄ‘ava" #: data/mp/messages/strings/names.txt:1767 -msgid "Multi Turret Body - Dragon" -msgstr "" +msgid "Heavy Body - Wyvern" +msgstr "TeÅ¡ko Tijelo - Wyvern" #: data/mp/messages/strings/names.txt:1768 -msgid "Dragon" -msgstr "" +msgid "Wyvern" +msgstr "Wyvern" #: data/mp/messages/strings/names.txt:1770 -msgid "Superhot Plasmite gel" -msgstr "" +msgid "Multi Turret Body - Dragon" +msgstr "ViÅ¡e Kupolno Tijelo - Zmaj" #: data/mp/messages/strings/names.txt:1771 +msgid "Dragon" +msgstr "Zmaj" + +#: data/mp/messages/strings/names.txt:1773 +msgid "Superhot Plasmite gel" +msgstr "SuperPogodak Plasma gel" + +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" -msgstr "" +msgstr "SuperPogodak Plasma gel Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" -msgstr "" +msgstr "SuperPogodak Plasma gel Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" -msgstr "" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" +msgstr "EMP minobacaÄ" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 -msgid "Stormbringer AA Laser" -msgstr "" +msgid "EMP Mortar Pit" +msgstr "EMP minobacaÄko uporiÅ¡te" -#: data/mp/messages/strings/names.txt:1781 #: data/mp/messages/strings/names.txt:1783 -msgid "Stormbringer Emplacement" -msgstr "" +#: data/mp/messages/strings/names.txt:1785 +msgid "Stormbringer AA Laser" +msgstr "Donositelj Oluje AA Laser" #: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 -msgid "Vindicator Hardpoint" -msgstr "" - #: data/mp/messages/strings/names.txt:1786 +msgid "Stormbringer Emplacement" +msgstr "Donositelj Oluje UporiÅ¡te" + #: data/mp/messages/strings/names.txt:1787 -msgid "Whirlwind Hardpoint" -msgstr "" - #: data/mp/messages/strings/names.txt:1788 +msgid "Vindicator Hardpoint" +msgstr "Branitelj TeÅ¡ko UporiÅ¡te" + #: data/mp/messages/strings/names.txt:1789 -msgid "Cyclone Hardpoint" -msgstr "" - #: data/mp/messages/strings/names.txt:1790 +msgid "Whirlwind Hardpoint" +msgstr "Vihor TeÅ¡ko UporiÅ¡te" + #: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 +msgid "Cyclone Hardpoint" +msgstr "Ciklon TeÅ¡ko UporiÅ¡te" + +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" -msgstr "" +msgstr "Osvetnik TeÅ¡ko UporiÅ¡te" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 -msgid "Twin Assault Gun" -msgstr "" - -#: data/mp/messages/strings/names.txt:1797 #: data/mp/messages/strings/names.txt:1798 -msgid "Twin Assault Gun Hardpoint" -msgstr "" +#: data/mp/messages/strings/names.txt:1799 +msgid "Twin Assault Gun" +msgstr "Blizanci JuriÅ¡no Oružje" #: data/mp/messages/strings/names.txt:1800 -msgid "VTOL Plasmite Bomb Bay" -msgstr "" - #: data/mp/messages/strings/names.txt:1801 -msgid "Plasmite Bomb" -msgstr "" - -#: data/mp/messages/strings/names.txt:1802 -msgid "VTOL EMP Missile Launcher" -msgstr "" +msgid "Twin Assault Gun Hardpoint" +msgstr "Blizanci JuriÅ¡no Oružje TeÅ¡ko UporiÅ¡te" #: data/mp/messages/strings/names.txt:1803 +msgid "VTOL Plasmite Bomb Bay" +msgstr "VTOL Spremni Plasma Bombi" + +#: data/mp/messages/strings/names.txt:1804 +msgid "Plasmite Bomb" +msgstr "Plasmena Bomba" + +#: data/mp/messages/strings/names.txt:1805 +msgid "VTOL EMP Missile Launcher" +msgstr "VTOL EMP lanser projektila" + +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" -msgstr "" +msgstr "EMP lanser projektila" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 -msgid "Command Turret II" -msgstr "" - -#: data/mp/messages/strings/names.txt:1809 #: data/mp/messages/strings/names.txt:1810 -msgid "Command Turret III" -msgstr "" - #: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 -msgid "Command Turret IV" -msgstr "" +msgid "Command Turret II" +msgstr "Zapovijedna Kupola 2" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 +msgid "Command Turret III" +msgstr "Zapovijedna Kupola 3" + +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 +msgid "Command Turret IV" +msgstr "Zapovijedna Kupola 4" + +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "AI unit" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "AI unit" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "AI unit" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "AI unit" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "AI unit" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "AI unit" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11406,7 +12389,7 @@ msgstr "Slovenski" #: lib/framework/i18n.c:98 #: lib/framework/i18n.c:150 msgid "Ukrainian" -msgstr "Ukarajinski" +msgstr "Ukrajinski" #: lib/framework/i18n.c:99 #: lib/framework/i18n.c:151 @@ -11422,33 +12405,29 @@ msgstr "Tradicionalni Kineski" msgid "Latin" msgstr "Latinski" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" -msgstr "" +msgstr "UpiÅ¡ite siÅ¡fru ovdje" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr "" - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 -#: src/intorder.c:787 +#: src/intorder.c:782 #: src/loadsave.c:256 #: src/multimenu.c:479 #: src/multimenu.c:1357 @@ -11456,11 +12435,11 @@ msgstr "" #: src/transporter.c:375 #: src/transporter.c:840 msgid "Close" -msgstr "" +msgstr "Zatvori" #: src/clparse.c:232 msgid "Run in cheat mode" -msgstr "" +msgstr "Pokreni u modu varanja" #: src/clparse.c:233 msgid "Set configuration directory" @@ -11492,7 +12471,7 @@ msgstr "" #: src/clparse.c:236 msgid "file" -msgstr "" +msgstr "Dosije" #: src/clparse.c:237 msgid "Flush all debug output written to stderr" @@ -11500,15 +12479,15 @@ msgstr "" #: src/clparse.c:238 msgid "Play in fullscreen mode" -msgstr "" +msgstr "Igraj u punom ekranu" #: src/clparse.c:239 msgid "Load a specific game" -msgstr "" +msgstr "UÄitaj specifiÄnu igru" #: src/clparse.c:239 msgid "game-name" -msgstr "" +msgstr "ime-igre" #: src/clparse.c:240 msgid "Show this help message and exit" @@ -11522,15 +12501,15 @@ msgstr "" #: src/clparse.c:242 #: src/clparse.c:243 msgid "mod" -msgstr "" +msgstr "mod" #: src/clparse.c:242 msgid "Enable a campaign only mod" -msgstr "" +msgstr "Ukljući samo kampanjski modul" #: src/clparse.c:243 msgid "Enable a multiplay only mod" -msgstr "" +msgstr "Ukljući samo viÅ¡eigraća modul" #: src/clparse.c:244 msgid "Disable asserts" @@ -11542,43 +12521,43 @@ msgstr "" #: src/clparse.c:246 msgid "Load a saved game" -msgstr "" +msgstr "UÄitaj saÄuvanu igru" #: src/clparse.c:246 msgid "savegame" -msgstr "" +msgstr "saÄuvaj igru" #: src/clparse.c:247 msgid "Play in windowed mode" -msgstr "" +msgstr "Igraju u Prozorskom modu" #: src/clparse.c:248 msgid "Show version information and exit" -msgstr "" +msgstr "Pokaži verziju i izaÄ‘i" #: src/clparse.c:249 msgid "Set the resolution to use" -msgstr "" +msgstr "Postavite rezoluciju za koriÅ¡tenje" #: src/clparse.c:249 msgid "WIDTHxHEIGHT" -msgstr "" +msgstr "Å IRINAxVISINA" #: src/clparse.c:250 msgid "Enable shadows" -msgstr "" +msgstr "Ukljući sjene" #: src/clparse.c:251 msgid "Disable shadows" -msgstr "" +msgstr "Iskljući sjene" #: src/clparse.c:252 msgid "Enable sound" -msgstr "" +msgstr "Ukljući zvuk" #: src/clparse.c:253 msgid "Disable sound" -msgstr "" +msgstr "Iskljući zvuk" #: src/clparse.c:254 msgid "Activate self-test" @@ -11590,37 +12569,37 @@ msgstr "" #: src/clparse.c:255 msgid "host" -msgstr "" +msgstr "host" #: src/clparse.c:256 msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:446 +#: src/configuration.c:447 +#: src/multistat.c:124 msgid "Player" -msgstr "" +msgstr "IgraÄ" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" -msgstr "" +msgstr "Novo Vozilo" #: src/design.c:525 msgid "Vehicle Body" -msgstr "" +msgstr "Tijelo Vozila" #: src/design.c:547 msgid "Vehicle Propulsion" -msgstr "" +msgstr "Pogon Vozila" #: src/design.c:570 #: src/design.c:595 #: src/design.c:621 msgid "Vehicle Turret" -msgstr "" +msgstr "Kupola Vozila" #: src/design.c:642 msgid "Delete Design" @@ -11629,12 +12608,12 @@ msgstr "IzbriÅ¡i dizajn" #: src/design.c:696 #: src/design.c:744 msgid "Kinetic Armour" -msgstr "" +msgstr "KinetiÄki Oklop" #: src/design.c:705 #: src/design.c:755 msgid "Thermal Armour" -msgstr "" +msgstr "Toplinski Oklop" #: src/design.c:721 #: src/design.c:775 @@ -11643,680 +12622,679 @@ msgstr "Snaga motora" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Težina" #: src/design.c:815 #: src/design.c:835 msgid "Total Power Required" -msgstr "" +msgstr "Potpuna Potreba Energije" #: src/design.c:848 #: src/design.c:869 msgid "Total Body Points" -msgstr "" +msgstr "Potpuni Bodovi Tijela" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" -msgstr "" +msgstr "PotroÅ¡nja Energije" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transport" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hidra " -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" -msgstr "" +msgstr "Senzorov Doseg" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" -msgstr "" +msgstr "Senzor Snaga" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" -msgstr "" +msgstr "ECM Snaga" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" -msgstr "" +msgstr "Bodovi za Gradnju" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" -msgstr "" +msgstr "Doseg" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" -msgstr "" +msgstr "Å tete" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" -msgstr "" +msgstr "Stopa Pucanja" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" -msgstr "" +msgstr "Brzina na Zraku" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" -msgstr "" +msgstr "Brzina na Cesti" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" -msgstr "" +msgstr "Brzina izvan Ceste" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" -msgstr "" +msgstr "Brzina na Vodi" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" -msgstr "" +msgstr "Oružja" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" -msgstr "" +msgstr "Sistemi" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" -msgstr "" +msgstr "IgraÄ otiÅ¡ao" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" -msgstr "" +msgstr "IgraÄ Pao" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." -msgstr "" +msgstr "NedopuÅ¡teno GraÄ‘enje. Izvor Nafte Gori!" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:1857 +#: src/display.c:1875 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" -msgstr "" +msgstr "Kamionu nareÄ‘eno da sagradi pumpu za naftu" -#: src/display.c:2048 +#: src/display.c:2078 +#, fuzzy msgid "2 trucks ordered to build Oil Derrick" -msgstr "" +msgstr "Kamionu nareÄ‘eno da sagradi pumpu za naftu" -#: src/display.c:2049 -#, c-format +#: src/display.c:2079 +#, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" -msgstr "" +msgstr "Kamionu nareÄ‘eno da sagradi pumpu za naftu" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" -msgstr "" +msgstr "Jedinica Izgubljena!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" -msgstr "" +msgstr "GraÄ‘evina Restaurirana" -#: src/droid.c:2935 +#: src/droid.c:2956 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2948 +#: src/droid.c:2969 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2961 +#: src/droid.c:2982 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2986 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3270 msgid "Rookie" -msgstr "" +msgstr "Novak" -#: src/droid.c:3250 +#: src/droid.c:3271 msgctxt "rank" msgid "Green" msgstr "" -#: src/droid.c:3251 +#: src/droid.c:3272 msgid "Trained" -msgstr "" +msgstr "Treniran" -#: src/droid.c:3252 +#: src/droid.c:3273 msgid "Regular" -msgstr "" +msgstr "Normalan" -#: src/droid.c:3253 +#: src/droid.c:3274 msgid "Professional" -msgstr "" +msgstr "Profesionalac" -#: src/droid.c:3254 +#: src/droid.c:3275 msgid "Veteran" -msgstr "" +msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3276 msgid "Elite" -msgstr "" +msgstr "Elita" -#: src/droid.c:3256 +#: src/droid.c:3277 msgid "Special" -msgstr "" +msgstr "Specijal" -#: src/droid.c:3257 +#: src/droid.c:3278 msgid "Hero" -msgstr "" - -#: src/frontend.c:252 -msgid "Single Player" -msgstr "" +msgstr "Junak" #: src/frontend.c:253 -msgid "Multi Player" -msgstr "" +msgid "Single Player" +msgstr "Jedan IgraÄ" #: src/frontend.c:254 -#: src/frontend.c:312 -msgid "Tutorial" -msgstr "" +msgid "Multi Player" +msgstr "ViÅ¡e IgraÄa" #: src/frontend.c:255 -msgid "Options" -msgstr "" +#: src/frontend.c:313 +msgid "Tutorial" +msgstr "Vježbe" #: src/frontend.c:256 +msgid "Options" +msgstr "Opcije" + +#: src/frontend.c:257 msgid "View Intro" -msgstr "" +msgstr "Prikaži Uvod" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" -msgstr "" +msgstr "Izaći iz Igre" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" -msgstr "" - -#: src/frontend.c:313 -msgid "Fast Play" -msgstr "" +msgstr "GLAVNI MENI" #: src/frontend.c:314 +msgid "Fast Play" +msgstr "Brzo Igranje" + +#: src/frontend.c:315 msgid "TUTORIALS" -msgstr "" +msgstr "Vježbe" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" -msgstr "" - -#: src/frontend.c:370 -msgid "New Campaign" -msgstr "" +msgstr "Natrag" #: src/frontend.c:371 -msgid "Start Skirmish Game" -msgstr "" +msgid "New Campaign" +msgstr "Nova Kampanja" #: src/frontend.c:372 -msgid "Challenges" -msgstr "" +msgid "Start Skirmish Game" +msgstr "PoÄeti Trening Igru" #: src/frontend.c:373 +msgid "Challenges" +msgstr "Izazovi" + +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" -msgstr "" +msgstr "UÄitaj Igru" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" -msgstr "" +msgstr "JEDAN IGRAÄŒ" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 -#: src/mission.c:2526 -#: src/mission.c:2631 +#: src/mission.c:2534 +#: src/mission.c:2639 msgid "Load Saved Game" -msgstr "" +msgstr "UÄitaj SaÄuvanu Igru" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" -msgstr "" - -#: src/frontend.c:526 -msgid "Host Game" -msgstr "" +msgstr "VIÅ E IGRAÄŒA" #: src/frontend.c:527 -msgid "Join Game" -msgstr "" +msgid "Host Game" +msgstr "Napravi Igru" -#: src/frontend.c:584 -#: src/multiint.c:1254 -msgid "OPTIONS" -msgstr "" +#: src/frontend.c:528 +msgid "Join Game" +msgstr "Pridruži se Igri" #: src/frontend.c:585 -msgid "Game Options" -msgstr "" +#: src/multiint.c:1144 +msgid "OPTIONS" +msgstr "POSTAVKE" #: src/frontend.c:586 -msgid "Graphics Options" -msgstr "" +msgid "Game Options" +msgstr "Opcije Igre" #: src/frontend.c:587 -msgid "Video Options" -msgstr "" +msgid "Graphics Options" +msgstr "GrafiÄke opcije" #: src/frontend.c:588 -#: src/ingameop.c:288 -msgid "Audio Options" -msgstr "" +msgid "Video Options" +msgstr "Video opcije" #: src/frontend.c:589 -msgid "Mouse Options" -msgstr "" +#: src/ingameop.c:288 +msgid "Audio Options" +msgstr "Audio opcije" #: src/frontend.c:590 +msgid "Mouse Options" +msgstr "Opcije miÅ¡a" + +#: src/frontend.c:591 msgid "Key Mappings" msgstr "" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" -msgstr "" +msgstr "Video reprodukcija" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" -msgstr "" +msgstr "Puni Ekran" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" -msgstr "" +msgstr "Drmati Zaslon" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" -msgstr "" - -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 -msgid "Off" -msgstr "" - -#: src/frontend.c:686 -#: src/multiint.c:1323 -msgid "Fog" -msgstr "" - -#: src/frontend.c:689 -#: src/frontend.c:775 -msgid "Mist" -msgstr "" - -#: src/frontend.c:693 -#: src/frontend.c:768 -#: src/multiint.c:1325 -msgid "Fog Of War" -msgstr "" - -#: src/frontend.c:700 -#: src/frontend.c:712 -msgid "Subtitles" -msgstr "" +msgstr "UkljuÄeno" +#: src/frontend.c:682 +#: src/frontend.c:702 #: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 +msgid "Off" +msgstr "IskljuÄeno" + +#: src/frontend.c:687 +#: src/multiint.c:1213 +msgid "Fog" +msgstr "Magla" + +#: src/frontend.c:690 +#: src/frontend.c:768 +msgid "Mist" +msgstr "Misterija" + +#: src/frontend.c:694 +#: src/frontend.c:761 +#: src/multiint.c:1215 +msgid "Fog Of War" +msgstr "Magla Rata" + +#: src/frontend.c:699 +msgid "Subtitles" +msgstr "Titlovi" + +#: src/frontend.c:711 msgid "Shadows" -msgstr "" +msgstr "Sjene" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" -msgstr "" +msgstr "OPCIJE SLIKE" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" -msgstr "" +msgstr "Glasovna jaÄina" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" -msgstr "" +msgstr "FX jaÄina" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" -msgstr "" +msgstr "JaÄina glazbe" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" -msgstr "" +msgstr "OPCIJE ZVUKA" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" -msgstr "" +msgstr "GrafiÄki naÄin" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" -msgstr "" +msgstr "U prozoru" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" -msgstr "" +msgstr "Rezolucija*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" -msgstr "" +msgstr "VeliÄina tekstura*" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" -msgstr "" +msgstr "Verikarno osvježivanje*" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" -msgstr "" +msgstr "* Radi tek nakon ponovnog pokretanja igre" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" -msgstr "" +msgstr "OPCIJE VIDEA" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" -msgstr "" +msgstr "Obrni rotaciju" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" -msgstr "" +msgstr "Zarobi Kursor" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" -msgstr "" +msgstr "Obojeni Kursori*" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" -msgstr "" +msgstr "Zamjeni Tipke MiÅ¡a" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" -msgstr "" +msgstr "* Može negativno utjecati na performanse" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" -msgstr "" +msgstr "OPCIJE MIÅ A" + +#: src/frontend.c:1277 +#: src/frontend.c:1343 +msgid "Difficulty" +msgstr "Težina" + +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 +msgid "Easy" +msgstr "Lagano" #: src/frontend.c:1284 -#: src/frontend.c:1350 -msgid "Difficulty" -msgstr "" +#: src/frontend.c:1354 +#: src/frontend.c:1374 +msgid "Normal" +msgstr "Srednje" #: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 -msgid "Easy" -msgstr "" - -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 -msgid "Normal" -msgstr "" - -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" -msgstr "" +msgstr "TeÅ¡ko" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" -msgstr "" +msgstr "Brzina " -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" -msgstr "" +msgstr "Jezik" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" -msgstr "" +msgstr "Boja" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" -msgstr "" +msgstr "OPCIJE IGRE" -#: src/frontend.c:1693 -#: src/multiint.c:2235 -msgid "Active mods: " -msgstr "" +#: src/frontend.c:1706 +#: src/multiint.c:2125 +msgid "Mod: " +msgstr "Modifikacija:" -#: src/hci.c:1363 +#: src/hci.c:1360 msgid "MAP SAVED!" -msgstr "" +msgstr "KARTA SPREMLJENA!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 #, fuzzy msgid "GAME SAVED: " msgstr "Igra spremljena:" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" -msgstr "" +msgstr "Nije moguće napraviti graÄ‘evinu" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." -msgstr "" +msgstr "IgraÄ %u vara, postavio si je : %s" -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." -msgstr "" +msgstr "IgraÄ %u vara, postavio si je : %s" -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." -msgstr "" +msgstr "IgraÄ %u vara, postavio si je : %s" -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" -msgstr "" +msgstr "Kapetani (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" -msgstr "" +msgstr "VijeÄanje (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" -msgstr "" +msgstr "Proizvedi (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" -msgstr "" +msgstr "Dizajniraj (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" -msgstr "" +msgstr "Istražuj (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" -msgstr "" +msgstr "Gradi (F3)" -#: src/hci.c:3891 -#: src/multiint.c:1370 +#: src/hci.c:3876 +#: src/multiint.c:1260 #: src/multimenu.c:763 msgid "Power" -msgstr "" +msgstr "Resursi" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" -msgstr "" +msgstr "Kvadratić" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" -msgstr "" +msgstr "Postavi teksture na kartu" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" -msgstr "" +msgstr "Jedinica" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" -msgstr "" +msgstr "Postavi jedinice na kartu" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" -msgstr "" +msgstr "GraÄ‘evina" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" -msgstr "" +msgstr "Postavi graÄ‘evine na kartu" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" -msgstr "" +msgstr "Pogodnosti" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" -msgstr "" +msgstr "Postavi pogodnost na kartu" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" -msgstr "" +msgstr "Pauziraj igru" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" -msgstr "" +msgstr "Podesi visinu svih objekata na karti" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" -msgstr "" +msgstr "IzaÄ‘i" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" -msgstr "" +msgstr "IzaÄ‘i iz igre" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" -msgstr "" +msgstr "Procesna trakica" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" -msgstr "" +msgstr "Dostavna toÄka Tvornice" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" msgstr "Ponovi proizvodnju" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "Tablica zakreni lijevo" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "Tablica zakreni desno" @@ -12342,8 +13320,8 @@ msgstr "" #: src/ingameop.c:295 #: src/ingameop.c:523 -#: src/mission.c:2513 -#: src/mission.c:2634 +#: src/mission.c:2521 +#: src/mission.c:2642 msgid "Save Game" msgstr "Spermi igru" @@ -12359,10 +13337,18 @@ msgstr "Igra se ne može nastaviti ako nema hosta." msgid "--> QUIT <--" msgstr "---> IZLAZ <---" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" -msgstr "Proces gradnje" +msgstr "Bodovi za Gradnju" #: src/intdisplay.c:228 msgid "Construction Progress" @@ -12373,7 +13359,7 @@ msgid "Power Accrued" msgstr "Dobiveni resursi" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1397 msgid "PAUSED" msgstr "PAUZIRANO" @@ -12500,287 +13486,287 @@ msgstr "Dodijeli proizvodnju Avionske Tvornice" msgid "Circle" msgstr "Kruži" -#: src/keybind.c:134 +#: src/keybind.c:136 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Ta opcija je onemoguÄena u Online igrama." -#: src/keybind.c:140 +#: src/keybind.c:142 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "ImaÅ¡ vremeplov i zaustavio si vrijeme... no vremeplov baÅ¡ i nije stabilan..." -#: src/keybind.c:224 +#: src/keybind.c:226 msgid "Lets us see what you see!" msgstr "Daj nam da vidimo Å¡to ti vidiÅ¡." -#: src/keybind.c:226 +#: src/keybind.c:228 msgid "Fine, weapon & sensor display is off!" msgstr "Dobro, dometi se viÅ¡e neće prikazivati..." -#: src/keybind.c:357 -#, c-format +#: src/keybind.c:359 +#, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "" +msgstr "IgraÄ %u vara, postavio si je : %s" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:399 +#: src/keybind.c:429 +#: src/keybind.c:446 +#: src/keybind.c:490 +#: src/keybind.c:598 +#: src/keybind.c:638 +#: src/keybind.c:744 +#: src/keybind.c:1287 +#: src/keybind.c:1344 +#: src/keybind.c:1446 +#: src/keybind.c:1567 +#: src/keybind.c:1918 +#: src/keybind.c:1959 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(IgraÄ %u) vara(!!!):%s" -#: src/keybind.c:398 +#: src/keybind.c:400 msgid "Hard as nails!!!" msgstr "TvrÄ‘i od noktiju!!!" -#: src/keybind.c:412 +#: src/keybind.c:414 msgid "Takings thing easy!" msgstr "Olako shvaÄaÅ¡ stvari..." -#: src/keybind.c:428 +#: src/keybind.c:430 msgid "1000 big ones!!!" msgstr "1000 resursa primljeno od Boga." -#: src/keybind.c:445 +#: src/keybind.c:447 msgid "Power overwhelming" msgstr "PreviÅ¡e resursa... No njih nikad dosta..." -#: src/keybind.c:460 +#: src/keybind.c:462 msgid "Back to normality!" msgstr "Nazad na standarde!" -#: src/keybind.c:473 +#: src/keybind.c:475 msgid "Getting tricky!" msgstr "Postaje zamrÅ¡eno..." -#: src/keybind.c:489 +#: src/keybind.c:491 msgid "Twice as nice!" msgstr "Duplo bolje!" -#: src/keybind.c:500 +#: src/keybind.c:502 msgid "FPS display is enabled." msgstr "FPS vrijednost se prikazuje" -#: src/keybind.c:504 +#: src/keybind.c:506 msgid "FPS display is disabled." msgstr "FPS vrijednost se ne prikazuje" -#: src/keybind.c:525 +#: src/keybind.c:530 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:562 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(IgraÄ %u) vara: Jedinica:%d GraÄ‘evina:%d Objekata:%d" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power disabled" msgstr "NeograniÄeni resursi iskljuÄeni" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power enabled" msgstr "NeograniÄeni resursi ukljuÄeni" -#: src/keybind.c:634 +#: src/keybind.c:639 msgid "All items made available" msgstr "Sada je sve (baÅ¡ SVE) dostupno" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog on" msgstr "Magla ukljuÄena" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog off" msgstr "Magla iskljuÄena" -#: src/keybind.c:1179 +#: src/keybind.c:1176 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Upozorenje! Ova Å¡ifra može kasnije uzrokovati probleme! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1176 msgid "Ending Mission." msgstr "ZavrÅ¡etak misije..." -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW ENABLED!" msgstr "VARANJE JE MOGUÄŒE" -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW DISABLED!" msgstr "VARANJE NIJE MOGUÄŒE" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode ON" msgstr "Božji naÄin ukjuÄen" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode OFF" msgstr "Božji naÄin iskljuÄen" -#: src/keybind.c:1360 +#: src/keybind.c:1357 msgid "View Aligned to North" msgstr "Pogled na sjever" -#: src/keybind.c:1369 +#: src/keybind.c:1366 #, c-format msgid "Trap cursor %s" msgstr "Zarobi pokazivaÄ %s" -#: src/keybind.c:1450 +#: src/keybind.c:1447 msgid "Researched EVERYTHING for you!" msgstr "SVE je istraženo!" -#: src/keybind.c:1481 +#: src/keybind.c:1503 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "IgraÄ %u vara! : %s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1504 msgid "Researched" msgstr "Istraženo" -#: src/keybind.c:1503 +#: src/keybind.c:1525 msgid "Only displaying energy bars when selected" msgstr "Prikazuj zdravlje objekata samo kada su odabrani" -#: src/keybind.c:1506 +#: src/keybind.c:1528 msgid "Always displaying energy bars for units" msgstr "Uvijek prikazuj zdravlje jedinica" -#: src/keybind.c:1509 +#: src/keybind.c:1531 msgid "Always displaying energy bars for units and structures" msgstr "Uvijek prikazuj zdravlje objekata" -#: src/keybind.c:1531 +#: src/keybind.c:1553 msgid "Demo mode off - Returning to normal game mode" msgstr "Nazad u normalan naÄin igre" -#: src/keybind.c:1546 +#: src/keybind.c:1568 msgid "Debug menu is Open" msgstr "Meni za varanje je otvoren." -#: src/keybind.c:1577 +#: src/keybind.c:1599 msgid "Unable to locate any resource extractors!" msgstr "NemaÅ¡ ni jednu pumpu!" -#: src/keybind.c:1798 +#: src/keybind.c:1820 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Snijeg" -#: src/keybind.c:1804 +#: src/keybind.c:1826 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "KiÅ¡a" -#: src/keybind.c:1810 +#: src/keybind.c:1832 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Vedro" -#: src/keybind.c:1895 +#: src/keybind.c:1917 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Ovo može biti gadno ako se ne koristi dobro..." -#: src/keybind.c:1897 +#: src/keybind.c:1919 msgid "All enemies destroyed by cheating!" msgstr "Svi neprijatelji uniÅ¡teni!" -#: src/keybind.c:1938 +#: src/keybind.c:1960 msgid "Destroying selected droids and structures!" msgstr "UniÅ¡tavanje odabranih objekata." -#: src/keybind.c:2460 +#: src/keybind.c:2482 msgid "Centered on player HQ, direction NORTH" msgstr "Na igraÄevu sjediÅ¡u" -#: src/keybind.c:2472 +#: src/keybind.c:2494 msgid "Unable to locate HQ!" msgstr "Nema sjediÅ¡ta!" -#: src/keybind.c:2479 +#: src/keybind.c:2501 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "Limitiranje brzine u grupi je izbaÄeno iz igre zbog greÅ¡aka." -#: src/keybind.c:2528 +#: src/keybind.c:2550 msgid "Vertical rotation direction: Normal" msgstr "Smjer vertikalne rotacije: normalno" -#: src/keybind.c:2533 +#: src/keybind.c:2555 msgid "Vertical rotation direction: Flipped" msgstr "Smjer vertikalne rotacije: obrnuto" -#: src/keybind.c:2542 +#: src/keybind.c:2564 msgid "Screen shake when things die: Off" msgstr "Potres kada se objekti uniÅ¡te: NE" -#: src/keybind.c:2547 +#: src/keybind.c:2569 msgid "Screen shake when things die: On" msgstr "Potres kada se objekti uniÅ¡te: DA" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2614 +#: src/keybind.c:2657 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Brzina igre ne može biti promjenjena u internetskoj igri." -#: src/keybind.c:2613 -#: src/keybind.c:2656 +#: src/keybind.c:2635 #: src/keybind.c:2678 +#: src/keybind.c:2700 msgid "Game Speed Reset" msgstr "Brzina igre resetirana" -#: src/keybind.c:2617 +#: src/keybind.c:2639 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Brzin poveÄana na %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2682 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Brzina smanjena na %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2712 msgid "Build menu will reopen" msgstr "Meni za gradnju će se ponovo otvoriti" -#: src/keybind.c:2694 +#: src/keybind.c:2716 msgid "Build menu will not reopen" msgstr "Meni za gradnju se neće ponovo otvoriti" -#: src/keybind.c:2706 +#: src/keybind.c:2728 msgid "Radar showing friend-foe colors" msgstr "Karta prikazuje savezniÄke boje" -#: src/keybind.c:2710 +#: src/keybind.c:2732 msgid "Radar showing player colors" msgstr "Karta prikazuje boje igraÄa" -#: src/keybind.c:2731 +#: src/keybind.c:2753 msgid "Radar showing only objects" msgstr "Karta prikazuje samo objekte" -#: src/keybind.c:2734 +#: src/keybind.c:2756 msgid "Radar blending terrain and height" msgstr "Karta prikazuje visine i teren" -#: src/keybind.c:2737 +#: src/keybind.c:2759 msgid "Radar showing terrain" msgstr "Karta prikazuje teren" -#: src/keybind.c:2740 +#: src/keybind.c:2762 msgid "Radar showing revealed terrain" msgstr "Karta prikazuje otkrivena podruÄja" -#: src/keybind.c:2743 +#: src/keybind.c:2765 msgid "Radar showing height" msgstr "Karta prikazuje visine" @@ -12789,12 +13775,12 @@ msgid "KEY MAPPING" msgstr "TipkovniÄke kratice" #: src/keyedit.c:369 -#: src/multiint.c:638 -#: src/multiint.c:681 -#: src/multiint.c:1072 -#: src/multiint.c:1456 +#: src/multiint.c:528 +#: src/multiint.c:571 +#: src/multiint.c:962 +#: src/multiint.c:1346 msgid "Return To Previous Screen" -msgstr "Nazadx" +msgstr "Nazad" #: src/keyedit.c:374 msgid "Select Default" @@ -13165,42 +14151,42 @@ msgstr "Ponovno otvaranje menija za gradnju" msgid "Could not save game!" msgstr "Igra se ne može spremiti" -#: src/mission.c:2066 +#: src/mission.c:2074 msgid "Load Transport" msgstr "Ukrcaj na transport" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED by cheating!" msgstr "POBJEDIO SI!!! - jer si koristio sifre." -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED" msgstr "POBJEDIO SI!!!" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED--and you cheated!" msgstr "Koristio si Å¡ifre - ali si ipak IZGUBIO!!!" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED" msgstr "IZGUBIO SI!!!" -#: src/mission.c:2492 -#: src/mission.c:2532 -#: src/mission.c:2650 +#: src/mission.c:2500 +#: src/mission.c:2540 +#: src/mission.c:2658 msgid "Quit To Main Menu" msgstr "IzaÄ‘i na glavni meni" -#: src/mission.c:2500 +#: src/mission.c:2508 msgid "Continue Game" msgstr "Nastavi igru" -#: src/mission.c:2597 +#: src/mission.c:2605 msgid "GAME SAVED :" msgstr "Igra spremljena:" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2634 +#: src/move.c:2650 #, c-format msgid "You found %u power in an oil drum." msgstr "NaÅ¡ao si %u resursa u baÄvi." @@ -13255,268 +14241,268 @@ msgstr "%s sklapa savez s %s" msgid "You Discover Blueprints For %s" msgstr "NaÅ¡ao si nacrte za %s" -#: src/multiint.c:572 +#: src/multiint.c:462 #: src/multilimit.c:192 msgid "Accept Settings" msgstr "Prihvati postavke" -#: src/multiint.c:574 -#: src/multiint.c:1120 +#: src/multiint.c:464 +#: src/multiint.c:1010 msgid "Cancel" msgstr "PoniÅ¡ti" -#: src/multiint.c:585 +#: src/multiint.c:475 msgid "IP Address or Machine Name" msgstr "IP" -#: src/multiint.c:635 +#: src/multiint.c:525 msgid "CONNECTION" msgstr "VEZA" -#: src/multiint.c:648 +#: src/multiint.c:538 msgid "Lobby" msgstr "Predvorje" -#: src/multiint.c:649 +#: src/multiint.c:539 msgid "IP" msgstr "IP" -#: src/multiint.c:841 +#: src/multiint.c:731 msgid "No games are available" msgstr "Nema dostupnih igara." -#: src/multiint.c:844 +#: src/multiint.c:734 msgid "Game is full" msgstr "Igra je popunjena!" -#: src/multiint.c:848 +#: src/multiint.c:738 msgid "You were kicked!" msgstr "IzbaÄen si!" -#: src/multiint.c:851 +#: src/multiint.c:741 msgid "Wrong Game Version!" msgstr "Kriva verzija igre!" -#: src/multiint.c:854 +#: src/multiint.c:744 msgid "You have an incompatible mod." msgstr "ImaÅ¡ nedozvoljeni mod." -#: src/multiint.c:858 +#: src/multiint.c:748 msgid "Host couldn't send file?" msgstr "Host ne može poslati datoteku." -#: src/multiint.c:862 +#: src/multiint.c:752 msgid "Incorrect Password!" msgstr "NetoÄna lozinka." -#: src/multiint.c:865 +#: src/multiint.c:755 msgid "Host has dropped connection!" msgstr "Host je prekinuo igru." -#: src/multiint.c:869 +#: src/multiint.c:759 msgid "Connection Error" msgstr "GreÅ¡ka u povezivanju" -#: src/multiint.c:1013 +#: src/multiint.c:903 msgid "Searching" msgstr "Traženje" -#: src/multiint.c:1069 +#: src/multiint.c:959 msgid "GAMES" msgstr "Igre" -#: src/multiint.c:1077 +#: src/multiint.c:967 msgid "Refresh Games List" msgstr "Osvježi popis igara" -#: src/multiint.c:1097 +#: src/multiint.c:987 msgid "Enter Password:" msgstr "Unesi lozinku:" -#: src/multiint.c:1118 +#: src/multiint.c:1008 msgid "OK" msgstr "OK" -#: src/multiint.c:1259 -#: src/multiint.c:1266 +#: src/multiint.c:1149 +#: src/multiint.c:1156 msgid "Select Game Name" msgstr "Odaberi naziv igre" -#: src/multiint.c:1259 +#: src/multiint.c:1149 msgid "One-Player Skirmish" msgstr "OkrÅ¡aj za 1 igraÄa" -#: src/multiint.c:1269 +#: src/multiint.c:1159 msgid "Select Map" msgstr "Odaberi kartu" -#: src/multiint.c:1277 +#: src/multiint.c:1167 msgid "Click to set Password" msgstr "Odaberi lozinku" -#: src/multiint.c:1287 -#: src/multiint.c:1288 +#: src/multiint.c:1177 +#: src/multiint.c:1178 msgid "Scavengers" msgstr "Sa stanovnicima" -#: src/multiint.c:1290 +#: src/multiint.c:1180 msgid "No Scavengers" msgstr "Bez stanovnika" -#: src/multiint.c:1320 +#: src/multiint.c:1210 msgid "Select Player Name" msgstr "Odaberi ime igraÄa" -#: src/multiint.c:1326 +#: src/multiint.c:1216 msgid "Distance Fog" msgstr "Magla udaljenosti" -#: src/multiint.c:1337 +#: src/multiint.c:1227 #: src/multimenu.c:756 msgid "Alliances" msgstr "Savezi" -#: src/multiint.c:1340 +#: src/multiint.c:1230 msgid "No Alliances" msgstr "Opći rat" -#: src/multiint.c:1342 +#: src/multiint.c:1232 msgid "Allow Alliances" msgstr "Slobodno" -#: src/multiint.c:1346 +#: src/multiint.c:1236 msgid "Locked Teams" msgstr "Timovi" -#: src/multiint.c:1372 +#: src/multiint.c:1262 msgid "Low Power Levels" msgstr "Niska razina resursa" -#: src/multiint.c:1374 +#: src/multiint.c:1264 msgid "Medium Power Levels" msgstr "Srednja razina resursa" -#: src/multiint.c:1376 +#: src/multiint.c:1266 msgid "High Power Levels" msgstr "Visoka razina resursa" -#: src/multiint.c:1408 +#: src/multiint.c:1298 msgid "Base" msgstr "Baza" -#: src/multiint.c:1410 +#: src/multiint.c:1300 msgid "Start with No Bases" msgstr "ZapoÄni bez baza" -#: src/multiint.c:1412 +#: src/multiint.c:1302 msgid "Start with Bases" msgstr "ZapoÄni sa bazama" -#: src/multiint.c:1414 +#: src/multiint.c:1304 msgid "Start with Advanced Bases" msgstr "ZapoÄni sa naprednim bazama" -#: src/multiint.c:1446 +#: src/multiint.c:1336 msgid "Map Preview" msgstr "Predprikaz karte" -#: src/multiint.c:1448 +#: src/multiint.c:1338 msgid "Click to see Map" msgstr "Klikni za predprikaz karte" -#: src/multiint.c:1462 +#: src/multiint.c:1352 msgid "Start Hosting Game" msgstr "ZapoÄni hostanje igre" -#: src/multiint.c:1470 +#: src/multiint.c:1360 msgid "Show Structure Limits" msgstr "Pokaži limite" -#: src/multiint.c:1470 +#: src/multiint.c:1360 msgid "Set Structure Limits" msgstr "Postavi limite" -#: src/multiint.c:1533 +#: src/multiint.c:1423 msgid "Player colour" msgstr "Boja igraÄa" -#: src/multiint.c:1549 +#: src/multiint.c:1439 msgid "Kick player" msgstr "Izbaci igraÄa" -#: src/multiint.c:1560 +#: src/multiint.c:1450 msgid "Player number" msgstr "Broj igraÄa" -#: src/multiint.c:1922 +#: src/multiint.c:1812 msgid "Team" msgstr "Savez" -#: src/multiint.c:1955 +#: src/multiint.c:1845 msgid "Waiting for other players" msgstr "ÄŒekanje na ostale igraÄe" -#: src/multiint.c:1961 +#: src/multiint.c:1851 msgid "Click when ready" msgstr "OznaÄi kada si spreman" -#: src/multiint.c:1965 +#: src/multiint.c:1855 msgid "READY?" msgstr "SPREMAN?" -#: src/multiint.c:2002 +#: src/multiint.c:1892 msgid "PLAYERS" msgstr "IgraÄi" -#: src/multiint.c:2206 +#: src/multiint.c:2096 msgid "CHAT" msgstr "ÄŒavrljanje" -#: src/multiint.c:2240 +#: src/multiint.c:2130 msgid "All players need to have the same mods to join your game." msgstr "Svi igraÄi moraju imati iste modove." -#: src/multiint.c:2400 +#: src/multiint.c:2290 msgid "*** password is now required! ***" msgstr "Lozinka je potrebna." -#: src/multiint.c:2407 +#: src/multiint.c:2297 msgid "*** password is NOT required! ***" msgstr "Lozinka nije potrebna." -#: src/multiint.c:2650 +#: src/multiint.c:2540 msgid "Sorry! Failed to host the game." msgstr "Ne možeÅ¡ hostati igru." -#: src/multiint.c:2735 +#: src/multiint.c:2625 msgid "'Locked Teams' mode enabled" msgstr "Model saveza: Timovi" -#: src/multiint.c:2774 -#: src/multiint.c:2824 +#: src/multiint.c:2664 +#: src/multiint.c:2714 #, c-format msgid "The host has kicked %s from the game!" msgstr "Host je izbacio %s iz igre." -#: src/multiint.c:2899 +#: src/multiint.c:2789 msgid "Host is Starting Game" msgstr "Host zapoÄinje igru" -#: src/multiint.c:3452 +#: src/multiint.c:3349 msgid "Players" msgstr "IgraÄi" -#: src/multiint.c:3569 +#: src/multiint.c:3466 #, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "Slanje karte: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3474 #, c-format msgid "Map: %d%% downloaded" msgstr "Karta: %d%% downloadana" -#: src/multiint.c:3603 +#: src/multiint.c:3500 msgid "HOST" msgstr "HOST" @@ -13525,27 +14511,27 @@ msgstr "HOST" msgid "Players Still Joining" msgstr "IgraÄi se joÅ¡ pridružuju" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s je izaÅ¡ao iz igre" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "Slanje podaaka je zaustavljeno za %d." -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "%s (%u) ima nedopuÅ¡ten mod i izbaÄen je." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s se pridužio igri." -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Poruka servera:" @@ -13555,7 +14541,7 @@ msgstr "Postavi zadane postavke" #: src/multilimit.c:316 msgid "Limits reset to default values" -msgstr "" +msgstr "Limiti resetirani na zadane postavke" #: src/multimenu.c:609 msgid "Technology level 1" @@ -13631,47 +14617,47 @@ msgstr "PoÅ¡alji resurse igraÄu" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Izbacivanje igraÄa %s jer se podaci ne podudaraju" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "(saveznika" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(samo za" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[nedostupno]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Zeleni" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "NaranÄasti" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Sivi" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Crni" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Crveni" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Plavi" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "LjubiÄasta" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cijan" @@ -13814,12 +14800,12 @@ msgstr "POBJEDIO SI!!!" msgid "YOU WERE DEFEATED!" msgstr "IZGUBIO SI!!!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "%s je postavio zastavicu." -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Zastavica %d" @@ -13848,63 +14834,63 @@ msgstr "NemaÅ¡ ni jedan mobilni radar." msgid "Unable to locate any Commanders!" msgstr "NemaÅ¡ ni jednog kapetana." -#: src/structure.c:2838 +#: src/structure.c:2823 #, fuzzy msgid "Command Control Limit Reached - Production Halted" msgstr "Limit prijeÄ‘en - Proizvodnja prekinuta" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, fuzzy, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u jedinica dodjeljena" msgstr[1] "%s - %u jedinica dodjeljena" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - OÅ¡teÄen %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Povezan s %u od %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Hakirano" -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "Nagrada hakirane graÄ‘evine - Vizualno izvjeÅ¡Äe" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "Nagrada hakirane Tvornice - Vozni sustav" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" msgstr "Nagrada hakirane Tvornice - Trup" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "Nagrada hakirane Tvornice - Oružje" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" msgstr "Nagrada hakirane Tvornice - NiÅ¡ta" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "Nagrada hakiranog Servisa - Poravak" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" msgstr "Nagrada hakiranog Servisa - NiÅ¡ta" @@ -13913,7 +14899,7 @@ msgstr "Nagrada hakiranog Servisa - NiÅ¡ta" msgid "Launch Transport" msgstr "PoÅ¡alji transport" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "PojaÄanja dolaze" @@ -13947,3 +14933,10 @@ msgstr "Verzija %s%s%s%s" #~ msgid "You found %u power in an oil drum" #~ msgstr "NaÅ¡ao si %u resursa u baÄvi." + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "mod" + +#~ msgid "Active mods: " +#~ msgstr "Aktivni modovi:" diff --git a/po/it.po b/po/it.po index 6ff7c7cdb..4aee98a80 100644 --- a/po/it.po +++ b/po/it.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2010-03-13 20:32+0100\n" +"POT-Creation-Date: 2010-05-06 04:45+0200\n" +"PO-Revision-Date: 2010-05-05 12:19+0100\n" "Last-Translator: Cristian Odorico \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" @@ -1028,7 +1028,7 @@ msgstr "Aumenta la precisione del Mortaio" #: data/mp/messages/resmessages3.rmsg:1190 #: data/mp/messages/strings/resstrings.txt:951 msgid "All mortars upgraded automatically" -msgstr "Tutti i morati saranno aggiornati automaticamente" +msgstr "Tutti i mortai saranno aggiornati automaticamente" #: data/base/messages/resmessages12.rmsg:174 #: data/mp/messages/resmessages12.rmsg:174 @@ -1586,7 +1586,7 @@ msgstr "Produzione dei cyborg migliorata" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Produzione di cyborg automatizzata" @@ -1618,8 +1618,8 @@ msgstr "Tutte le fabbriche di cyborg saranno aggiornate automaticamente" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Fabbrica di Cyborg" @@ -1780,7 +1780,7 @@ msgstr "Aumenta al resistenza ai danni" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Materiali da costruzione rinforzati" @@ -1898,7 +1898,7 @@ msgstr "Costo e tempi di produzione simili al Cobra" #: data/base/messages/resmessages1.rmsg:433 #: data/mp/messages/resmessages1.rmsg:434 msgid "Project Heavy Body" -msgstr "Corpo Pesante del Progetto" +msgstr "Corpo Pesante del Project" #: data/base/messages/resmessages1.rmsg:434 #: data/mp/messages/resmessages1.rmsg:435 @@ -1953,7 +1953,7 @@ msgstr "Miglioramento dei motori dei veicoli" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Motore a Iniezione" @@ -2110,7 +2110,7 @@ msgstr "Velocità: bassa" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Propulsione su ruote" @@ -2970,7 +2970,7 @@ msgstr "Nuove tecniche robotizzate di riparazione" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Produzione di Cyborg robotizzata" @@ -2992,7 +2992,7 @@ msgstr "Aumenta la velocità di produzione della fabbrica" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Analisi dedicata a collegamento sinaptico" @@ -3001,7 +3001,7 @@ msgstr "Analisi dedicata a collegamento sinaptico" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Materiali da costruzione blindati" @@ -3010,7 +3010,7 @@ msgstr "Materiali da costruzione blindati" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Produzione di VTOL robotizzata" @@ -3046,7 +3046,7 @@ msgstr "Tempi di riarmo dei VTOL ridotto" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Riarmo VTOL automatico" @@ -3177,7 +3177,7 @@ msgstr "Alti costi energetici e più lento del Cobra da produrre" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Motore Turbo" @@ -3855,14 +3855,14 @@ msgstr "La turbina a vapore aumenta la produzione di energia" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Cervello di ricerca a sinapsi neurale" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Materiali da costruzione avanzati" @@ -3874,14 +3874,14 @@ msgstr "Materiali da costruzione ad alta densità" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Produzione di VTOL avanzata" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Riarmo VTOL robotizzato" @@ -4019,7 +4019,7 @@ msgstr "Molto costoso da produrre" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Motore a turbina a gas" @@ -4367,7 +4367,7 @@ msgstr "Il computer prevede e compensa i movimenti del bersaglio" #: data/base/messages/resmessages3.rmsg:1241 msgid "Increases Rail Gun accuracy" -msgstr "Aumenta la precisione della Rail Gun" +msgstr "Aumenta la precisione del Cannone a Massa" #: data/base/messages/resmessages3.rmsg:1242 #: data/base/messages/resmessages3.rmsg:1255 @@ -4376,7 +4376,7 @@ msgstr "Aumenta la precisione della Rail Gun" #: data/mp/messages/resmessages3.rmsg:1255 #: data/mp/messages/resmessages3.rmsg:1268 msgid "All rail guns upgraded automatically" -msgstr "Tutte le Rail Gun sono aggiornate automaticamente" +msgstr "Tutti i Cannoni a Massa sono aggiornati automaticamenti" #: data/base/messages/resmessages3.rmsg:1253 #: data/mp/messages/resmessages3.rmsg:1253 @@ -4385,16 +4385,16 @@ msgstr "Dardi perforanti migliorati" #: data/base/messages/resmessages3.rmsg:1254 msgid "Increases Rail Gun damage" -msgstr "Aumenta il danno causato dalla Rail Gun" +msgstr "Aumenta il danno causato dal Cannone a Massa" #: data/base/messages/resmessages3.rmsg:1266 #: data/mp/messages/resmessages3.rmsg:1266 msgid "Increased gauss output speeds up reload time" -msgstr "Aumenta la potenza d'uscita del cannone gauss e velocizza il tempo di ricarica" +msgstr "L'incremento della potenza di Gauss velocizza la ricarica." #: data/base/messages/resmessages3.rmsg:1267 msgid "Increases Rail Gun ROF" -msgstr "Aumenta il Rateo di Fuoco della Rail Gun" +msgstr "Aumenta il Rateo di Fuoco del Cannone a Massa" #: data/base/messages/resmessagesall.rmsg:4 #: data/mp/messages/resmessagesall.rmsg:4 @@ -4571,16 +4571,19 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Il designatore laser punta e guida i colpi sul bersaglio" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "OBIETTIVO: Localizza e recupera la tecnologia della sinapsi neurale" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Stabilisci una base, poi cerca una struttura precedente al Collasso." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." -msgstr "Questa struttura contiene una tecnologia vitale per il successo del Progetto." +msgstr "Questa struttura contiene una tecnologia vitale per il successo del Project." #: data/base/messages/strings/cam1strings.txt:7 msgid "ALPHA BASE MISSION: Scavenger Raiders" @@ -4768,7 +4771,7 @@ msgstr "Le prime due zone sono ora sicure." #: data/base/messages/strings/cam1strings.txt:75 msgid "PROJECT TEAM UPDATES" -msgstr "AGGIORNAMENTI DELLE SQUADRE DEL PROGETTO" +msgstr "AGGIORNAMENTI DELLE SQUADRE DEL PROJECT" #: data/base/messages/strings/cam1strings.txt:78 msgid "TEAM BETA UPDATE" @@ -4880,7 +4883,7 @@ msgstr "La tecnologia del collegmaento sinaptico è stata recuperata!" #: data/base/messages/strings/cam1strings.txt:129 msgid "Initial research confirms it will be of great benefit to the Project." -msgstr "Ricerce iniziali confermano che sarà un gran beneficio per il Progetto." +msgstr "Ricerce iniziali confermano che sarà un gran beneficio per il Project." #: data/base/messages/strings/cam1strings.txt:132 msgid "Base Beta is under heavy attack, they may need assistance." @@ -4935,14 +4938,18 @@ msgid "We'll keep you informed of further developments" msgstr "Vi terremo informati su ulteriori sviluppi" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Comandante, dovete assistere la Squadra Beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "MISSIONE BASE BETA: Settore Orientale" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Al vostro arrivo dovrete assumere il controllo della base." @@ -4951,16 +4958,19 @@ msgid "You must defend it and hold it." msgstr "Dovrete difenderla e tenerla." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "MISSIONE BASE BETA: Difendi e Fortifica" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Sia certo di fortificare il perimetro e di stabilire difese anti-aeree." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Sono disponibili nuove tecnologie." @@ -5257,6 +5267,8 @@ msgid "Good luck, Commander." msgstr "Buona fortuna, Comandante." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "MISSIONE CON TRASPORTO: Settore Settentrionale" @@ -5265,18 +5277,21 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Congratulazioni per la sua riuscita evacuazione della Base Beta." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." -msgstr "NEXUS ha ottenuto l'accesso ad armi nucleari e è determinato a distruggere il Progetto." +msgstr "NEXUS ha ottenuto l'accesso ad armi nucleari e è determinato a distruggere il Project." #: data/base/messages/strings/cam3strings.txt:9 msgid "Take your forces to the Northern Sector" msgstr "Porta le tue forze nel settore settentrionale" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Una volta alle montagne rendi sicura una Zona di Atterraggio. Poi stabilisci una base in posizione avanzata." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "La squadra Gamma ti contatterà lì." @@ -5285,8 +5300,9 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "MISSIONE CON TRASPORTO: Stabilisci una Base Avanzata" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." -msgstr "Comandante, il successo del Progetto dipende da voi." +msgstr "Comandante, il successo del Project dipende da voi." #: data/base/messages/strings/cam3strings.txt:16 msgid "Secure an LZ, then establish a forward base." @@ -5311,6 +5327,7 @@ msgstr "Stiamo trasmettendo le coordinate di una Zona di Atterraggio vicino alle #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Download delle Coordinate Completato." @@ -5578,7 +5595,7 @@ msgstr "Forze NEXUS localizzate in queste posizioni." #: data/base/messages/strings/cam3strings.txt:157 msgid "NEXUS has been eradicated from all Project systems." -msgstr "Nexus è stato sradicato da tutti i sistemi del Progetto." +msgstr "Nexus è stato sradicato da tutti i sistemi del Project." #: data/base/messages/strings/cam3strings.txt:158 msgid "We are attempting to access the missile control codes." @@ -5594,7 +5611,7 @@ msgstr "Proteggi le basi missilistiche dagli attacchi di NEXUS." #: data/base/messages/strings/cam3strings.txt:166 msgid "PROJECT UPDATE: 1st Level Missile Code Cracked." -msgstr "AGGIORNAMENTO DEL PROGETTO: Codice dei Missili di Primo Livello Crackato." +msgstr "AGGIORNAMENTO DEL PROJECT: Codice dei Missili di Primo Livello Crackato." #: data/base/messages/strings/cam3strings.txt:167 msgid "Missile arming in progress." @@ -5606,7 +5623,7 @@ msgstr "Sono necessarie più ricerche per procedere ulteriormente." #: data/base/messages/strings/cam3strings.txt:171 msgid "PROJECT UPDATE: 2nd Level Missile Code Cracked." -msgstr "AGGIORNAMENTO DEL PROGETTO: Codice dei Missili di Secondo Livello Crackato." +msgstr "AGGIORNAMENTO DEL PROJECT: Codice dei Missili di Secondo Livello Crackato." #: data/base/messages/strings/cam3strings.txt:172 msgid "Missile target programming in progress." @@ -5618,7 +5635,7 @@ msgstr "Una volta che i codici di livello tre saranno crackati inizieremo le pro #: data/base/messages/strings/cam3strings.txt:176 msgid "PROJECT UPDATE: 3rd Level Missile Code Cracked." -msgstr "AGGIORNAMENTO DEL PROGETTO: Codice dei Missili di Terzo Livelli Crackato." +msgstr "AGGIORNAMENTO DEL PROJECT: Codice dei Missili di Terzo Livelli Crackato." #: data/base/messages/strings/cam3strings.txt:177 msgid "Missile launch sequence initiated." @@ -5750,7 +5767,7 @@ msgstr "Trasporto" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Camion" @@ -5759,7 +5776,7 @@ msgstr "Camion" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Mitragliatrice Viper Ruote" @@ -5786,7 +5803,7 @@ msgstr "Cannone Leggero Viper Cingoli" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Mitragliatrice Pesante Cobra Semicingoli" @@ -5817,7 +5834,7 @@ msgstr "Torretta Riparatrice Viper Semicingoli" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Doppia Mitragliatrice Viper Ruote" @@ -5834,7 +5851,7 @@ msgstr "Mitragliatrice Pesante Viper Semicingoli" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Mitragliatrice Pesante Viper Cingoli" @@ -5858,7 +5875,7 @@ msgstr "Bunker Buster Viper Ruote" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Cannone Medio Cobra Cingoli" @@ -5870,7 +5887,7 @@ msgstr "Cannone Pesante Cobra Cingoli" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Camion Cobra" @@ -5880,7 +5897,7 @@ msgstr "Sensore Cobra Semi-Cingoli" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Inceneritore Cobra Cingoli" @@ -5897,7 +5914,7 @@ msgstr "Torretta di Comando Cobra Semicingoli" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Lancer Cobra Semi-Cingoli" @@ -5911,26 +5928,26 @@ msgid "Light Cannon Python Tracks" msgstr "Cannone Leggero Python Cingoli" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Cannone Medio Python Cingoli" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Cannone Pesante Python Cingoli" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Torretta di comando Python Cingoli" @@ -5994,7 +6011,7 @@ msgstr "Civile" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Mitragliere" @@ -6003,9 +6020,9 @@ msgstr "Mitragliere" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Inceneritore" @@ -6015,8 +6032,8 @@ msgstr "Inceneritore" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lancer" @@ -6025,7 +6042,7 @@ msgstr "Lancer" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Cannoniere pesante" @@ -6119,8 +6136,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Torretta di Comando" @@ -6224,14 +6241,14 @@ msgstr "Semicingoli III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Propulsione Cyborg II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Propulsione Cyborg III" @@ -6253,7 +6270,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Propulsione Cyborg" @@ -6281,8 +6298,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Torre Sensoria" @@ -6290,15 +6307,15 @@ msgstr "Torre Sensoria" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Torre Sensoria Rinforzata" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Torretta Sensoria" @@ -6322,7 +6339,7 @@ msgstr "Torretta Radar CB" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "Torretta d'Attacco VTOL" @@ -6358,7 +6375,7 @@ msgstr "Fabbrica" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Modulo Fabbrica" @@ -6370,7 +6387,7 @@ msgstr "Generatore di Potenza" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Modulo di potenza" @@ -6382,7 +6399,7 @@ msgstr "Centro di Ricerca" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Modulo di Ricerca" @@ -6394,7 +6411,7 @@ msgstr "Demolisci Struttura" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Centro di Riparazione" @@ -6415,8 +6432,8 @@ msgstr "Muro di Cementitan" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Fabbrica di VTOL" @@ -6427,30 +6444,30 @@ msgstr "Postazione con Inferno" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Postazione corazzata con Inferno" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Postazione con Pepperpot" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Postazione con Hellstorm" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Sito contraereo Tornado" @@ -6461,27 +6478,27 @@ msgstr "Sito contraereo Cyclone" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Sito contraereo Hurricane" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Sito contraereo Whirlwind" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Batteria di Razzi Ripple" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Torretta di Guardia con Cannone d'Assalto" @@ -6492,29 +6509,29 @@ msgstr "Torretta di Guardia con Mitragliatrice d'assalto" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Postazione corazzata con Mitragliatrice d'assalto" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Postazione corazzata con Cannone d'assalto" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "Torre CB" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Torre VTOL CB" @@ -6524,168 +6541,168 @@ msgstr "Torretta Radar VTOL" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Postazione corazzata con Mitragliatrice Pesante" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Postazione corazzata con Cannone Leggero" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Postazione corazzata con Cannone Medio" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Postazione corazzata con Cannone Pesante" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Postazione corazzata con Inceneritore" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Postazione corazzata con Lancer" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Torre di Guardia con Mitragliatrice" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Torre di Guardia con Doppia mitragliatrice" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Torre con Mitragliatrice Pesante" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Torre di Guardia con Inceneritore" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Torre con Lancer" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Torre con Minirazzi" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Bunker con Mitragliatrice" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Bunker con Doppia Mitragliatrice" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Bunker con Mitragliatrice pesante" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Bunker con Cannone Leggero" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Bunker con Incenertiore" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Bunker con Lancer" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Trappole per carri" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Denti di drago" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Piattaforma di riarmo VTOL" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Postazione con Obice" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Postazione Flashlight" @@ -6696,139 +6713,139 @@ msgstr "Postazione corazzata con Flashlight" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Postazione con Cannone a Massa" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Torre con Missile Scourge" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Torre con Cannone ad ago" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Postazione con Cannone Gauss" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Cannone Leggero" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Cannone Medio" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Cannone Pesante" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Cannone ad Iper Velocità" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Cannone d'Assalto" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Obice" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Ground Shaker" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Postazione con Ground Shaker" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Hellstorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Laser a Impulso" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Mitragliatrice" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Doppia Mitragliatrice" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Mitragliatrice Pesante" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Mitragliatrice d'Assalto" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Scourge" @@ -6839,80 +6856,80 @@ msgstr "Missile Angel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "SAM Vindicator" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Missile Archangel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "SAM Avenger" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "Missile Scourge VTOL" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mortaio" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Postazione con Mortaio" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombarda" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Mortaio Interrato" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Pepperpot" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Postazione con Pepperpot" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Cannone ad ago" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" -msgstr "Cannone a massa" +msgstr "Cannone a Massa" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Cannone Gauss" @@ -6922,74 +6939,74 @@ msgid "Mini-Rocket Artillery" msgstr "Artiglieria a Minirazzi" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Bunker Buster" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Minirazzi" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Razzi Ripple" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Tank Killer" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "Bunker Buster VTOL" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "Minirazzi VTOL" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "Lancer VTOL" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "Tank Killer VTOL" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Torretta contraerea Tornado" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Torretta contraerea Cyclone" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Torretta contraerea Whirlwind" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Torretta contraerea Hurricane" @@ -6998,62 +7015,62 @@ msgid "LasSat" msgstr "Laser Satellitare" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "Cannone VTOL" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "Cannone ad Ipervelocità VTOL" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "Cannone d'Assalto VTOL" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "Laser a Impulsi VTOL" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "Mitragliatrice VTOL" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "Doppia mitragliatrice VTOL" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Mitragliatrice Pesante VTOL" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "Mitragliatrice d'assalto VTOL" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "Cannone ad Ago VTOL" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "Cannone a Massa VTOL" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Torretta Bomba di Prossimità" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Torretta Superbomba di Prossimità" @@ -7062,22 +7079,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "Bombe a Grappolo" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "Bombe HEAP" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "Bombe al Fosforo" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "Bombe alla Termite" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Muro del Collective" @@ -7094,307 +7111,307 @@ msgid "NEXUS CWall" msgstr "Angolo di Muro di NEXUS" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 RESEARCH" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "ADVANCED RESEARCH" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 VEHICLES" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 WEAPONS" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SYSTEMS" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DEFENSES" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 STRUCTURES" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 RESEARCH" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 VEHICLES" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 WEAPONS" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SYSTEMS" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 DEFENSES" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 STRUCTURES" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 RESEARCH" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Collegamento Sinaptico" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Codici di lancio dei missili" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "2° livello dei codici di lancio dei missili" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "3° livello dei codici di lancio dei missili" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Armatura termica Cyborg" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Armatura termica Cyborg Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Armatura termica Cyborg Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Armatura termica ad alta intensità Cyborg" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Armatura termica ad alta intensità Cyborg Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Armatura termica ad alta intensità Cyborg Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Leghe composite Cyborg" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Leghe composite Cyborg Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Leghe composite Cyborg Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Leghe composite dense Cyborg" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Leghe composite dense Cyborg Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Leghe composite dense Cyborg Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Leghe composite superdense Cyborg " #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Leghe composite superdense Cyborg Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Leghe composite superdense Cyborg Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Cyborg con Bunker Blaster" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Cannoniere pesante" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Cyborg con Inceneritore" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Mitragliere" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Cyborg con Lancer" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Mitragliere D'Assalto" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Cyborg con Cannone ad Ago" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Cyborg con Scourge" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Cyborg con Flashlight" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Bunker Blaster con JetPack" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Cannoniere Pesante con JetPack" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "JetPack Lancer" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Mitragliere d'assalto con JetPack" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "JetPack con Cannone ad Ago" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "JetPack Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "JetPack Flashlight" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Jet Pack per Cyborg" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Cementitan" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Cementitan" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Cementitan Migliorato" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Cementitan Migliorato Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Cementitan Migliorato Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Supertitan" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Supertitan Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Supertitan Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plastitan" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plastitan Mk2" @@ -7409,15 +7426,15 @@ msgstr "Postazione con cannone ad ipervelocità" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Postazione con Tank Killer" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Mortaio Interrato" @@ -7426,55 +7443,55 @@ msgid "Angel Missile Battery" msgstr "Batteria di Missili Angel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Batteria di Missili Archangel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Postazione con Mortaio" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Batteria di Minirazzi" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Postazione con Laser a Impulsi" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Postazione con Cannone a Massa" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Postazione con Cannone d'assalto" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Postazione con Mitragliatrice d'assalto" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Sito SAM Avenger" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Sito SAM Vindicator" @@ -7492,15 +7509,15 @@ msgstr "Torre di Guardia con Minirazzi" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Postazione corazzata con Missile Scoruge" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Postazione corazzata con Tank Killer" @@ -7511,49 +7528,49 @@ msgstr "Postazione corazzata con Cannone ad Ipervelocità" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Postazione corazzata con Cannone Gauss" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Ripetitore di comandi" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Produzione di cyborg automatizzata Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Produzione di cyborg automatizzata Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Produzione di Cyborg robotizzata Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Produzione di Cyborg robotizzata Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Produzione di Cyborg avanzata" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Produzione di Cyborg avanzata Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Produzione di Cyborg avanzata Mk3" @@ -7591,54 +7608,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Produzione della fabbrica avanzata Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Materiali da costruzione rinforzati Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Materiali da costruzione rinforzati Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Materiali da costruzione blindati Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Materiali da costruzione blindati Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Materiali da costruzione avanzati Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Materiali da costruzione avanzati Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Generatore a turbina a gas" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Generatore a turbina a vapore" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Centro di riparazione" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Centro di riparazione automatizzato" @@ -7675,172 +7692,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Centro di riparazione avanzato Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Analisi a collegamento sinaptico" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Analisi a collegamento sinaptico Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Analisi a collegamento sinaptico Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Analisi dedicata a collegamento sinaptico Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Analisi dedicata a collegamento sinaptico Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Cervello di ricerca a sinapsi neurale Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Cervello di ricerca a sinapsi neurale Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Riarmo VTOL automatico Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Riarmo VTOL automatico Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Riarmo VTOL robotizzato Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Riarmo VTOL robotizzato Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Riarmo VTOL robotizzato Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Produzione di VTOL robotizzata Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Produzione di VTOL robotizzata Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Produzione di VTOL avanzata Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Produzione di VTOL avanzata Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "I cyborg si autoriparano" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Riparazione Cyborg automatizzata Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Riparazione Cyborg automatizzata Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Le difese si autoriparano" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Riparazione Difese automatizzata Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Riparazione Difese automatizzata Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Le strutture si autoriparano" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Riparazione Strutture automatizzata Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Riparazione Strutture automatizzata Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "I veicoli si autoriparano" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Riparazione Veicoli automatizzata Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Riparazione Veicoli automatizzata Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Miglioramento dei sensori" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Unità da costruzione" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Ingegneria" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Ingegneria migliorata" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Ingegneria avanzata" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Torretta Riparatrice Mobile" @@ -7850,84 +7867,84 @@ msgstr "Torretta pesante da riparazione mobile" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Miglioramento della riparazione mobile" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Miglioramento della riparazione mobile Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "Torretta CB" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "Miglioramento dei sensori CB" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "Miglioramento dei sensori CB 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "Miglioramento dei sensori CB 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "Torretta CB VTOL" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "Miglioramento dei sensori VTOL CB" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "Miglioramento dei sensori VTOL CB 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "Miglioramento dei sensori VTOL CB 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "Miglioramento dei sensori d'attacco VTOL" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "Miglioramento dei sensori d'attacco VTOL Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "Miglioramento dei sensori d'attacco VTOL Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Torre d'attacco VTOL" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Disturbatore migliorato" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Torretta di Disturbo Mk2" @@ -7948,292 +7965,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Circuiti resistenti a NEXUS Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Sensore agganciato" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Armatura Termica" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Armatura Termica Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Armatura Termica Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Armatura termica ad alta intensità" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Armatura termica ad alta intensità Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Armatura termica ad alta intensità Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Corpo Leggero - Viper" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Corpo Leggero - Leopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Corpo Leggero - Retaliation" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Corpo Leggero - Bug" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Corpo Medio - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Corpo Medio - Panther" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Corpo Medio - Retribution" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Corpo Medio - Scorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Corpo Pesante - Tiger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Corpo Pesante - Vengeance" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Corpo Pesante - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Corpo Pesante - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Motore a Iniezione Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Motore a Iniezione Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Motore Turbo Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Motore Turbo Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Motore a turbina a gas Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Motore a turbina a gas Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Leghe Composite" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Leghe Composite Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Leghe Composite Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Leghe composite dense" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Leghe composite dense Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Leghe composite dense Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Leghe composite superdense" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Leghe composite superdense Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Leghe composite superdense Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Propulsione su Hovercraft" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Propulsione su Hovercraft II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Propulsione su semi-cingoli" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Propulsione su semi-cingoli II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Propulsione su cingoli" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Propulsione su cingoli II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "Propulsione VTOL" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "Propulsione VTOL II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Propulsione su ruote II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Sensore termico AA" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "Colpi AA ad acquisizione di bersagli" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Computer AA di previsione dei bersagli" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Colpi antiaerei ad alto esplosivo" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "Colpi antiaerei ad alto esplosivo Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "Colpi antiaerei ad alto esplosivo Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Colpi antiaerei perforanti ad alto esplosivo" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "Colpi antiaerei perforanti ad alto esplosivo Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "Colpi antiaerei perforanti ad alto esplosivo Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Tramoggia delle munizioni AA" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "Tramoggia delle munizioni AA Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "Tramoggia delle munizioni AA Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Caricatore a catena AA" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "Caricatore a catena AA Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "Caricatore a catena AA Mk3" @@ -8242,17 +8259,17 @@ msgid "Cluster Bombs Bay" msgstr "Bombe a Grappolo" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Bombe HEAP" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Bombe al Fosforo" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Bombe alla Termite" @@ -8269,252 +8286,252 @@ msgid "Target Acquisition Bombsight" msgstr "Bombe ad acquisizione di bersagli" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Distanziometro laser" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Designatore laser" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Colpi di cannone HEAT" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Colpi di cannone HEAT Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Colpi di cannone HEAT Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Colpi di cannone APFSDS" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Colpi di cannone APFSDS Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Colpi di cannone APFSDS Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Colpi di cannone HVAPFSDS" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Colpi di cannone HVAPFSDS Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Colpi di cannone HVAPFSDS Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Autocaricatore per cannone" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Autocaricatore per cannone Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Autocaricatore per cannone Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Caricatore rapido per cannone" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Caricatore rapido per cannone Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Caricatore rapido per cannone Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Focalizzatore Laser migliorato" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Focalizzatore Laser migliorato Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Focalizzatore Laser migliorato Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Emettitore laser ad alta energia" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Emettitore laser ad alta energia Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Emettitore laser ad alta energia Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Pompa di fotoni" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Pompa di fotoni Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Pompa di fotoni Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Gel dell'inceneritore ad alta temperatura" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Gel dell'inceneritore ad alta temperatura Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Gel dell'inceneritore ad alta temperatura Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Gel superinfiammabile" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Gel superinfiammabile Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Gel superinfiammabile Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Autocaricatore per inceneritore" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Autocaricatore per inceneritore Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Autocaricatore per inceneritore Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Inceneritore Pesante - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Obice Pesante - Ground Shaker" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Obice Rotante - Hellstorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Proiettili d'artiglieria ad acquisizione di bersagli" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Proiettili d'artiglieria ad acquisizione di bersagli Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Colpi d'artiglieria a predizione del bersaglio" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Colpi dell'obice HE" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Colpi dell'obice HE Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Colpi dell'obice HE Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Colpi dell'obice HEAP" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Colpi dell'obice HEAP Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Colpi dell'obice HEAP Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Autoricaricatore per Obice" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Autoricaricatore per Obice Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Autoricaricatore per Obice Mk3" @@ -8523,57 +8540,57 @@ msgid "Fast Loader" msgstr "Caricatore Rapido" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - Flashlight" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Proiettili Blindati" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Colpi APDSB" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Colpi APDSB Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Colpi APDSB Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Proiettili con punta in tungsteno" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Proiettili con punta in tungsteno Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Proiettili con punta in tungsteno Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Colpi di mitragliatrice ad uranio impoverito" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Colpi di mitragliatrice ad uranio impoverito Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Miglioramento Mitragliatrice" @@ -8582,142 +8599,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Miglioramento Mitragliatrice a Fuoco Rapido" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Miglioramento Mitragliatrice a Fuoco Iper Rapido" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Missili a predizione del bersaglio" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Missili a ricerca" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Testata Missili avanzata" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Testata Missili avanzata Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Testata Missili avanzata Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Sistema Avanzato di Allocazione dei missili" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Sistema Avanzato di Allocazione dei missili Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Sistema Avanzato di Allocazione dei missili Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Testata missili HEAP" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Testata missili HEAP Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Testata missili HEAP Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Sistema di caricamento missili migliorato" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Computer di puntamento del mortaio" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Colpi di mortaio a puntamento termico" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Colpi di mortaio ad acquisizione di bersagli" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Colpi mortaio HE" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Colpi mortaio HE Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Colpi mortaio HE Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Colpi mortaio HEAP" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Colpi mortaio HEAP Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Colpi mortaio HEAP Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Autocaricatore per mortaio" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Autocaricatore per mortaio Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Autocaricatore per mortaio Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Caricatore rapido per mortaio" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Mortaio Pesante-Bombarda" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Mortaio Rotante-Pepperpot" @@ -8726,367 +8743,367 @@ msgid "Target Prediction Computer" msgstr "Computer di previsione dei bersagli" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Dardi Blindati" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Dardi Blindati Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Dardi Blindati Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Rateo di fuoco del Cannone a Massa" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Rateo di fuoco del Cannone a Massa Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Rateo di fuoco del Cannone a Massa Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Minirazzi stabilizzati" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Minirazzi stabilizzati Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Minirazzi HE" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Minirazzi HE Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Minirazzi HE Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Minirazzi HEAP" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Minirazzi HEAP Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Minirazzi HEAP Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Minirazzi a fuoco veloce" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Minirazzi a fuoco veloce Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Minirazzi a fuoco veloce Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Minirazzi a fuoco rapido" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Minirazzi a fuoco rapido Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Minirazzi a fuoco rapido Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Filoguida per razzi migliorata" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Designatore laser per razzi" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Razzi a Visione termica" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "Razzi HEAT" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "Razzi HEAT Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "Razzi HEAT Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "Razzi HESH" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "Razzi HESH Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "Razzi HESH Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Autocaricatore per razzi" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Autocaricatore per razzi Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Autocaricatore per razzi Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Razzo Lancer AT" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Razzo Bunker Buster" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Razzo Tank Killer" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Manufatto della Mitragliatrice" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Centro di comando del New Paradigm" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Centro di comando del Collective" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Fabbrica degli sciacalli" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Torre con mitragliatrice degli sciacalli" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Muro degli sciacalli" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Generatore degli sciacalli" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Lanciarazzi degli sciacalli" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Lanciarazzi anticarro degli sciacalli" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Bunker degli sciacalli" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Angolo di muro degli sciacalli" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Torre con inceneritore degli sciacalli" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Fine della Torre con Inceneritore degli sciacalli" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Torre di vedetta" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Torre con cannone" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Manufatto" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Risorsa di petrolio" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Ponte" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Fabbrica in rovina" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Magazzino" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Capanna" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Barile di petrolio" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Rottame" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Carro distrutto" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Ponte distrutto" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Furgone distrutto" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Veicolo distrutto" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Cisterna di carburante distrutta" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratorio cyborg" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratorio per guerra avanzata" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Laboratorio di ingegneria" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratorio di robotica" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratorio di ottica laser" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratorio di elettronica" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Laboratorio chimico" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Guerra Avanzata" @@ -9107,7 +9124,7 @@ msgid "MRL Emplacement" msgstr "Postazione con Artiglieria a Minirazzi" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Postazione con Cannone a Massa" @@ -9116,49 +9133,49 @@ msgid "Angel Missile Emplacement" msgstr "Postazione per Missili Angel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Postazione per Missili Archangel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Torretta Riparatrice Cobra Tracks" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Bunker Blaster" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Cyborg con Flashlight" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Cyborg con Cannone ad Ago" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Trasporto abbattuto" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Tank Killer Python Cingoli" @@ -9167,37 +9184,37 @@ msgid "HPV Cannon Python Tracks" msgstr "Cannone ad ipervelocità Python Cingoli" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Torretta Contraerea Cyclone Python Semi-Cingoli" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Mitragliatrice d'assalto Python Cingoli" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Flashlight" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "Flashlight VTOL" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Bunker con Mitragliatrice d'assalto" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Silo Missilistico" @@ -9479,336 +9496,1173 @@ msgstr "Per favore attendi mentre la fabbrica produce la nuova unità" msgid "Congratulations commander - you are ready for your first mission" msgstr "Congratulazioni comandante - è ora pronto per la sua prima missione" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "Trasmissione in Arrivo" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "Trasmissione in arrivo dalla Base Beta." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "Mayday! Mayday!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "Richiediamo assistenza!..." + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "PRIMA CAMPAGNA" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "SETTORE OCCIDENTALE" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Alba, 4 Luglio, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "Quartier Generale del Project" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Una Nuova Era" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Mattina, 4 Luglio, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "In volo verso il Settore Occidentale" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "Team Alpha in avvicinamento alla propria destinazione" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Le destinazioni dei trasporti seguono:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alpha - Settore Occidentale" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alpha avete il permesso per decollare." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Buona fortuna e buona caccia." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "In avvicinamento alla Zona di Atterraggio. Inizia il briefing del Team Alpha." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Comandante, lei guida il Team Alpha, uno dei tre team di spedizione mandati dal Progetto " + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "La vostra destinazione risiede nella zona occidentale." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Comandante, abbiamo recuperato una torretta di comando dal New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "Questa torretta permette ai comandanti di coordinare gli attacchi delle unità assegnate e di agire come punto di ritrovo per le fabbriche. Ricercare e usare questa tecnologia ha la più alta priorità." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Comandante, stiamo ricevendo questa trasmissione." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "I vostri attacchi contro di noi non rimarrano impuniti." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "Siete in contravvenzione del New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "Tutti i gruppi di attacco incomincino gli attacchi al nemico." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "Sono in contravvenzione del New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "Devono essere distrutti." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Rendi sicura una Zona di Atterraggio, poi stabilisci un avamposto." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "Poi distruggi la base del New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Aprite i vostri sistemi a me." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Permettetemi di fondermi con le vostre macchine e cyborg." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "Noi creeremo la perfetta connessione di macchine e uomini." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "Insieme possiamo creare un nuovo mondo." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "Posso darvi potenza oltre i vostri sogni più selvaggi." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "Aprite i vostri sistemi a me e sarete forti." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "Posso elevarvi a dei sulla terra distrutta." + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Quando abbiamo fallito a rispondere, era diventato impegnativo." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "La vostra interferenza nei miei piani per il New Paradigm non rimarrà impunita." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "Siete deboli oggetti di pelle. Sono forte e ho molte parti." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Potrete avermi sconfitto qui, ma io risorgerò." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "Come purificai una volta il mondo con il fuoco, distruggerò voi e il vostro patetico Project!!" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "Nexus allora si è rimosso da solo dal sistema, distruggendo i suoi banchi di memoria, e rimuovendo tutte le tracce delle sue connessioni esterne." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "Non siamo sicuri di cosa Nexus sia o chi lo stia dirigendo. Ricerche iniziali collegano il Programma Intruso Nexus con la Corporazione Reed, lo sviluppatore del Collegamento Sinaptico." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "Abbiamo accertato che Nexus ha rifornito il New Paradigm con la maggior parte delle sue tecnologie. Qualunque cosa Nexus sia, è più di un parassita di computer." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Egli possiede tecnologie ed armamenti. E' a conoscenza di noi, e non è amichevole." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "Il Collegamento Sinaptico fu sviluppato dalla corporazione Reed insieme ai militari statunitensi." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "Il Collegamento Sinaptico permette un trasferimento quasi istantaneo del pensiero dagli operatori umani ai controlli del veicolo e ai sistemi di guida. Il Collegamento Sinaptico è installato alla base del cranio circondando la colonna spinale." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "Il collegamento ha una porta per trasferimento dati ad alta velocità che può collegarsi in qualsiasi sistema computerizzato." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "Ma più importante, lo sviluppo del collegamento sinaptico permise la creazione dei cyborg. I primi tentativi di una corazza potenziata per soldati fallirono in quanto si dimostrarono lenti e poco reattivi." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "Il collegamento sinpatico permise ai soldati di essere messi in corazze potenziate che potevano controllare facilmente come i loro corpi. Le corazze potenziate permisero alla fanteria di funzionare con efficacia nei campi di battaglia del 21° secolo." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "Sfortunatamente, questa tecnologia è caduta in mano al New Paradigm. E' imperativo che voi ricerchiate e sviluppiate tecnologie a collegamento sinaptico." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Attenzione!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "State entrando in una zona riservata." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Ritornate alla vostra zona designata o sarete distrutti." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Ripeto. Tornate alla vostra zona designata o sarete distrutti." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Fine Messaggio." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Sarete distrutti." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "NEXUS, la tecnologia del collegmaento sinaptico che avete richiesto è stata recuperata e inviata per la collezione." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Avete fatto un ottimo lavoro." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "Una volta che avremo analizzato e autenticato la tecnologia, la vostra ricompensa arriverà." + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "Informazione scoperte dalla precedente base nemica indicano che il New Paradigm ha recuperato due manufatti del collegamento sinaptico." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "Questo Programma Intruso Nexus è un parassita dei computer automutante. Questo rende difficile da eliminarlo dai sistemi una volta che è stato identificato." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "Non siamo stati in grado di accertare il suo ultimo scopo o funzione. Nella sua forma iniziale cerca e isola sezioni della memoria dal resto del sistema invaso. Dopo inizia a mutare se stesso e i dati, riprogrammando effettivamente il sistema dall'interno." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "Ulteriori analisi sono state impossibili a causa dello spegnimento manuale del sistema da parte dei nostri tecnici per prevenire ulteriori contaminazioni dal Programma Intruso Nexus." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "Comunque, la dispersione del Programma Intruso Nexus non è stata verificata dal New Paradigm. Dobbiamo catturare i sistemi centrali del New Paradigm per compiere ulteriori investigazioni su Nexus e determinare le sue origini." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "Comandante, dovete ostacolare le attività del New Paradigm in questo settore e localizzare la loro base principale." + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "SECONDA CAMPAGNA" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "SETTORE ORIENTALE" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Mattina, 1° Settembre, 2100" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "In volo verso il Settore Orientale" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "Team Alpha in avvicinamento alla Base Beta" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Dovrete difenderla e tenerla ad ogni costo." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "IL COLLECTIVE" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Comandante, abbiamo rilevato un nuovo lancio." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "E' probabilmente puntato alla vostra posizione." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Dovete iniziare l'evacuazione immediata della Base Beta al rifugio." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "La NASDA è l'Agenzia Difensiva Strategica Nord Americana." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "La NASDA fu create nel 2076 per difendere il Nord America da attacchi convenzionali e nucleari. La costruzione di un sistema difensivo satellitare iniziarono nel 2081 e fu completata nel 2082." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "Nel 2085 i satelliti NASDA spararono i loro missili contro la Terra." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "C'erano anche siti basati a terra. Molti di questi furono distrutti nei contrattacchi nucleari, ma ce ne devono essere ancora là fuori." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "I satelliti NASDA erano inoltre armati con laser a impulsi progettati per abbattere missili in avvicinamento al Nord America." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "Durante i contrattacchi, questi Laser Satellitari non spararono. Se portati in funzione, questi LasSat potrebbero infliggere gravi danni ai bersagli terrestri." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "Tutti gli ordigni puntati al Nord America colpirono i loro bersagli." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "Sappiam oche Nexus sta cercando la Centrale NASDA nel Settore Orientale. Questa era una delle basi di controllo a terra per i satelliti." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "Se il centro rimane intatto, NEXUS potrebbe prendere controllo dei satelliti." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "Nexus ha affermato che egli ha già distrutto il mondo." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "Guerrieri del Collective, sto cercando la località della Centrale NASDA." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "Si trova da qualche parte nel vostro territorio." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "Trovatela per me e vi darò altre armi per aiutarvi nella vostra guerra contro il Project." + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "Briefing NASDA segue..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "Dobbiamo fare in modo che non lo possa fare nuovamente." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "Le analisi indicano che questi sistemi erano parte del sistema di controllo per i satelliti NASDA." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "E' ora certo che Nexus fu responsabile del Collasso." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "Nelle prime fasi del Collasso, i tecnici NASDA hanno spento i sistemi infetti per isolare la contaminazione di Nexus. Sembra che ciò abbia impedito ai Laser Satellitari di sparare durante i contrattacchi." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "Gli impulsi nucleari-magnetici che seguirono distrussero gran parte dei banchi memoria NASDA, spaccarono il suo processore centrale, e mandarono onde d'urto attarverso Nexus." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "Nexus fu fritto in quanto grandi sezione della sua coscienza furono cancellate nei contrattacchi." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Comandante stiamo rilevando trasmissioni da questa località che stanno raggiungendo l'orbita alta." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS si è riconnesso con i satelliti NASDA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "Questo pone una grave minaccia al Project e alla nostra sopravvivenza." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "Analisi della Centrale NASDA mostrano senza dubbio che il Collective ha introdotto il Virus Intruso Nexus in essa." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "Il reattore nucleare sarebbe stato usato per dare energia ad una vasta rete di sistemi di computer precedenti al Collasso." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Comandante, abbiamo appena rilevato un lancio missilistico a queste coordinate." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "Il Team Gamma sta mandando una squadra a investigare sul sito di lancio e prevenire altri lanci." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "Possiamo solo assumere che Nexus abbia preso controllo di questo sito. Non possiamo determinare se il missile è nucleare o contro cosa sia puntato. E' consigliabile iniziare le preparazione per l'evacuazione della vostra base." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "Guerrieri del Collective, altri intrusi stanno entrando nel nostro territorio." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "Non sono parte della macchina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Guerrieri del Collective,attaccate e distruggete uccidete chiunque si opponga alla Macchina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "Attaccate! Cancellate la loro presenza da quest'area!" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "Guerrieri del Collective, siamo pronti a distruggere gli intrusi che avvelenano le nostre terre." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "Quelli del Project non sono parte della macchina. Essi hanno rifiutato la sua benedizione. Noi che abbiamo abbracciato il potere della macchina siamo destinati a spazzare via queste deboli creature." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "Essi cadranno di fronte alla potenza del Collective." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "Distruggete e uccidete chiunque si opponga alla Macchina." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Attaccate!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "Guerrieri del Collective, Nexus ci ha dato la potenza della macchina in modo che noi possiamo distruggere tutto ciò che si oppone a noi." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "Nexus ora ci chiede di distruggere il Project." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "Purificate e distruggete!!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "Guerrieri del Collective. Avete agito bene." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "La vostra ricompensa è in arrivo." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "Il Project stà abbandonando la sua base e rubando le vostre tecnologie." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "Dovete fermarli!" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "Decodifica della Trasmissione in corso..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "TERZA CAMPAGNA" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "SETTORE SETTENTRIONALE" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Congratulazioni per la riuscita evacuazione della Base Beta." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "Crepuscolo, 3 Dicembre, 2100" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "In volo verso il Settore Settentrionale" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "L'Incontro Finale" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "Inizio Ordini" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "Il personale della Base Gamma hanno confermato che i missili nucleari puntati alle basi Alpha e Beta sono stati lanciati da un silo nel loro settore." + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "Il Team Gamma sta eseguendo ricognizioni della posizione del silo e stanno monitorando l'attività di NEXUS." + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "Tempo scaduto comandante!!" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Comandante, stiamo localizzando forze NEXUS da queste coordinate..." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "Ben fatto Comandante, avete impedito il lancio del mio ultimo missile." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "Che peccato. Il Quartier Generale del Project sarebbe stato un bellissimo bersaglio." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "Ma è gentile da parte vostra unirvi a me qua." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "Sotto questo silo c'è una testa nucleare tattica innescata che esploderà fra poco." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "Siccome non la posso lanciare, dovrà esplodere dove si trova." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "Notate che tutte le entrate al complesso sotterraneo sono state chiuse. Addio, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Siamo felici che ce l'abbiate fatta, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "I VTOL d'attacco nemici ci hanno bloccato. Siamo riusciti a tenere a bada i cyborg e i carri, ma non siamo riusciti a fare alcun progresso nella valle." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "Potete cercare di raggiungerci con unità antiaeree?" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "Qui è il Team Alpha. Ripeto qui è il Team Alpha. Richiediamo assistenza immediata." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "Siamo sotto pesante attacco da cyborg, carri laser, e VTOL d'attacco." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "Stavamo cercando di raggiungere le vostre posizioni, ma siamo stati vittima di un imboscata." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "Siamo chiusi in una valle a queste coordinate." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "Richiediamo assistenza." + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "Comandante, forze del Team Alpha sono sopravvissute all'attacco nucleare alla Base Alpha." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "Stiamo subendo alcune interferenze da NEXUS." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "Dovete distruggere il suo centro di comando prima che possa prendere il controllo dei nostri sistemi chiave." + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Comandante, benvenuto a NEXUS!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "La Corporazione Reed fu fondata dal Dr Allan Reed. Nel 2080, il Dr Reed stipulò un contratto con i militari statunitensi per sviluppare la tecnologia del collegamento sinaptico." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "Dopo aver brevettato il collegamento sinaptico cinque anni dopo, il Dr Reed continuò le sue ricerche nella cibernetica." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "Questa volta il suo obbiettivo era di poter trasferire la coscienza umana in flussi di dati che potevano fondersi con le tecnologie computerizzate. Mentre erano nel cyberspazio i corpi degli operatori venivano mantenuti in vasche di immersione." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "Supportato nuovamente dai militari, il Dr Reed iniziò a lavorare sul Programma Intruso NEXUS. Dopo 3 anni con pochi progressi, i militari abbandonarono il Progetto Nexus e tagliarono i fondi al Dr Reed." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "Rapporti del tempo dicono che il Dr Reed era furioso e che giurò vendetta a chiunque si fosse messo sulla sua strada." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "Sembra che il Dr Reed ebbe successo nei suoi scopi e completò il Programma Intruso Nexus." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "La similitudine tra NEXUS e il Dr Reed è perfetta." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "Che interessante lezione di storia. Ora permettetemi di aggiornarvi." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "Il Programma Intruso NEXUS fu creato per controllare gli stupidi come voi." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "E' molto semplice per me infiltrarmi nei vostri sistemi e prendere il controllo. E' così semplice, infatti, che non sapreste nemmeno che sono qua. Ciò almeno fino a quando non attivo mie parti inserite nei vostri sistemi centrali." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "Iniziamo attivando NEXUS nei vostri sistemi centrali e vediamo cosa succede!" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Comandante, stiamo subendo interferenza con il nostro equipaggiamento." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "I normali servizi saranno ripristinati appena possibile." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "Manca poco, Comandante. Non c'è nessun altro luogo dove potete scappare." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "Comunque, se lascierete questa installazione, vi lascierò andare, in quanto non sarete più una minaccia." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "Avete 5 minuti per riuscire o sarete fritti!" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "Comandante, siamo sotto attacco dai carri e dai cyborg di NEXUS. Richiediamo assistenza in quanto noi..." + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "...non possiamo resistere ancora a lungo. Ripeto, richiediamo assistenza, non possiamo resistere ancora a lungo..." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "Ah, Comandante, gentile da parte sua unirsi a noi qua alla base Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "E' stato molto utile avere il Team Gamma posizionato quassù sulle montagne." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "Assorbirli è stato un piacere." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "Grazie per tutte le utili tecnologie che avete recuperato." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "Voi e non quei stupidi del New Paradigm e del Collective." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "Ora sto attivando tutti i vostri collegamenti sinaptici in modo che le vostre forze possano unirsi a Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "Le vostre forze ora sono mie! Benvenuti a Nexus." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "Comandante, vi state dimostrando più resilienti di quanto pensassi." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "Un vero peccato che abbiate rifiutato di unirvi a me prima." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "Ma non è un problema, in quanto non sarete qua ancora a lungo." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "Dopo molta ricerca e riprogrammazione, ho finalmente riattivato tutti i miei sistemi." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "Una volta distrussi il mondo con il fuoco nucleare per liberare la strada al mio futuro cibernetico." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "Ora intendo continuare a plasmare il mondo a mia immagine, rimuovendo chirurgicamente escrescenze indesiderate come voi." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "I miei Satelliti Laser si stanno caricando. Intendo testarli su di voi prima, Comandante!" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Crepuscolo, 3 Novembre, 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Terra, Orbita Alta" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "Il Collasso" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "Gennaio 19, 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Nord America" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Inverno Nucleare" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Mezzanotte, 10 Aprile, 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Montagne Rocciose" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "Salvezza" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Alba, 4 Aprile, 2100" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Un Nuovo Inizio" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "Il sistema NASDA fu sviluppato per proteggerci. Era il deterrente nucleare definitivo. Ma fu il nostro boia." + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "I rapporti dissero che la NASDA incontro un guasto durante un controllo di routine. Non credeteci. Qualcuno voleva eliminarci." + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "Questi ordigni erano puntati su ogni grande città del mondo. La NASDA era stata programmata per iniziare il Collasso. Quando i contrattacchi furono lanciati, le sue difese laser e i siti terrestri antimissile fallirono." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "Il mondo come lo conoscevamo finì..." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "L'Inverno Nucleare colpì duro. Malattie e carestie uccisero molti di quelli che erano sopravvissuti agli attacchi nucleari. Guerre per scatole di cibo per cani ne portarono altri." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "Lasciammo Seattle agli inizi dell'86. Avevamo sentito che le Montagne Rocciose erano relativamente incontaminate." + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "Dopo aver combattuto bande di sciacalli trovammo la base. Il suo personale era morto. Ucciso da una delle numerose malattie virali." + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "Sfondammo le porte, e rimovemmo i corpi all'interno." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "Sapevamo che le cose non sarebbero mai più state le stesse, ma eravamo determinati a costruire un nuovo mondo sulle rovine. Ricostruimmo le Zone di Atterraggio e riattivammo i vecchi sistemi." + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Eravamo finalmente pronti a iniziare il Project." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Dopo molti mesi di lotte, abbiamo sconfitto NEXUS." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "La guerra iniziata dal Dottor Reed era finita." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Abbiamo recuperato molte delle tecnologie che cercavamo." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "E' ora di usarle per ricostruire il mondo" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Lentamente, risorgeremo dalle ceneri..." + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Cobra Hover Torretta Riparatrice Pesante" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Viper Mitragliatrice Pesante Ruote" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Mantis Hover Scourge" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Mantis Hover Tank Killer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Cobra Cingoli Mitragliatrice Pesante" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Cobra Hover Cannone Pesante" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Scoprion Lancer Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Scoprion Cannone Pesante Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Scorpion Lancer VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Scoprion BB Vtol" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Viper Torretta di Comando Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Cobra Torretta di Comando Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Scorpion Torretta di Comando Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Mantis Torretta di Comando Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Cobra Lancer Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Mantis Cannone Pesante Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Mantis Tank Killer Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Mantis Scourge Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Scorpion Mitragliatrice Pesante Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Scoprion Torretta Riparatrice Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Scorpion Torretta Riparatrice Pesante Hover" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Cobra Hover Camion" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Scorpion Hover Camion" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Mantis Hover Camion" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Cobra Bunker Buster Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Scorpion Bunker Buster Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Mantis Bunker Buster Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Viper Cingoli Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Minirazzi Cobra Semi-Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Minirazzi Cobra Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Cobra Cingoli Artiglieria a Minirazzi" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Cobra Inferno Semicingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Cannone ad ipervelocità Python Hovercraft" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Python Scourge Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Phyton Cannone Gauss Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Python Laser a Impulso Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tiger Laser a Impulso Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tiger Laser Pesante Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Wyvern Cannone Gauss Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Wyvern Cannone a Impulso Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Wyvern Laser Pesante Cingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Mitragliatrice Viper Semicingoli" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Inceneritore Viper Semicingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Torretta Riparatrice Pesante Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Mitragliatrice Pesante Viper Ruote" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Tank Killer Mantis Hover " #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Mitragliatrice Pesante Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Cannone Pesante Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Mitragliatrice Pesante Viper Ruote" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Mitragliatrice Pesante Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Mitragliatrice Viper Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Doppia Mitragliatrice Viper Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Cannone Medio Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Cannone Medio Scorpion Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Cannone Medio Scorpion Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Cannone Medio Python Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Cannone Pesante Python Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" -msgstr "Cannone a massa Mantis Cingoli" +msgstr "Cannone a Massa Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Laser a Impulso Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Lancer Python Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Lancer Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Tank Killer Vengeance Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Cannone Pesante Tiger Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Cannone ad Ago Tiger Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Cannone ad ago Retribution Cingoli " #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Cannone ad Ago Vengeance Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" -msgstr "Vengeance Cingoli Cannone a massa" +msgstr "Vengeance Cingoli Cannone a Massa" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "Vengeance Cingoli Cannone Gauss" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "Vengeance Cingoli Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "Bombe a grappolo Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "Bunker Buster Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "Bombe a Grappolo Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Bunker Buster Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "Lancer Bug VTOL" @@ -9817,7 +10671,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "Cannone HPV Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "Lancer Scorpion VTOL" @@ -9826,7 +10680,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "Cannone ad Iper Velocità Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "Lancer Mantis VTOL" @@ -9835,127 +10689,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "VTOL Cannone HPV Mantis VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Torretta riparatrice Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Lancer Scorpion Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Cannone Pesante Scorpion Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "Lancer Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "Bunker Buster Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Torretta di Comando Viper Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Torretta di Comando Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Torretta di Comando Scorpion Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Torretta di Comando Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Lancer Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Mitragliatrice Pesante Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Tank Killer Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "Scourge Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Mitragliatrice Pesante Scorpion Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Torretta Riparatrice Cobra Tracks" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Torretta Riparatrice Pesante Scorpion Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Camion Cobra Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Camion Scorpion Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Camion Mantis Hover" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Bunker Buster Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Bunker Buster Scorpion Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Bunker Buster Mantis Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Lancer Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Minirazzi Cobra Semi-cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Minirazzi Cobra Cingoli" @@ -9964,7 +10818,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Artiglieria di Minirazzi Cobra Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Inferno Cobra Semi-Cingoli" @@ -9973,55 +10827,155 @@ msgid "HPV Cannon Python Hover" msgstr "Cannone ad ipervelocità Python Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Scourge Python Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Cannone Gauss Python Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Laser a Impulso Tiger Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Tiger Laser a Impulso Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Tiger Laser Pesante Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Cannone Gauss Wyvern Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Laser a Impulso Wyvern Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Laser Pesante Wyvern Cingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Mitragliatrice Viper Semicingoli" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Inceneritore Viper Semicingoli" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Inferno Cobra Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Cannone Medio Cobra Semi-cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Inferno Python Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Mitragliatrice d'assalto Python Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Mitragliatrice d'assalto Python Semi-cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Mitragliatrice Pesante Scorpion Semi-cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Cannone d'Assalto Mantis Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Laser a Impulso Leopard Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Laser a Impulso Panther Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Cannone a Massa Tiger Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Laser a Impulso Tiger Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Cannone al Plasma Wyvern Cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Missile Scourge Wyvern Cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Flashlight Retribution Hover" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Minirazzi Viper Semi-cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Batteria di Minirazzi Viper Semi-cingoli" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Bombe al Fosforo Mantis VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Bombe HEAP Mantis VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Bombe HEAP Retribution VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "Scourge Retaliation VTOL" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "Velocità di Costruzione +10%" @@ -10508,7 +11462,7 @@ msgstr "Armato con Laser a Impulso per Cyborg" #: data/mp/messages/resmessagesall.rmsg:616 msgid "Armed with Cyborg Rail Gun" -msgstr "Armato con Rail Gun per Cyborg" +msgstr "Armato con Cannone a Massa Cyborg" #: data/mp/messages/resmessagesall.rmsg:629 msgid "Armed with Cyborg Scourge Missile Launcher" @@ -10635,7 +11589,7 @@ msgid "Upgraded battlefield computer system" msgstr "Aggiornato il sistema di computer del campo di battaglia" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Trasporto Cyborg" @@ -10664,7 +11618,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Artiglieria di Minirazzi Cobra Semicingoli" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Rilevatore Radar" @@ -10677,630 +11631,643 @@ msgid "Nexus Link" msgstr "Collegamento NEXUS" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Torretta di collegamento NEXUS" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "Cancello di Cementitan" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Bunker con Inferno" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Sito antiaereo Tornado" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Sito antiaereo Cyclone" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Postazione corazzata con Laser a Impulso" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Torre con Laser a Impulso" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Batteria di Missili Seraph" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "Batteria di Artiglieria a minirazzi" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Centro di Comando per il Laser Satellitare" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "Bombe a grappolo" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Angolo di muro del collective" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Muro di NEXUS" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Angolo di muro di NEXUS" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Plascrete Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Plasteel" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Plasteel Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Plasteel Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "Cancello" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "Postazione con Cannone ad Iper Velocità" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Batteria di Missili Seraph" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Torre di Guardia con Inceneritore" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Postazione con Cannone ad Iper Velocità" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Produzione automatizzata" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Produzione automatizzata Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Produzione automatizzata Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Produzione robotizzata" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Produzione Robotizzata Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Produzione Robotizzata Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Produzione Avanzata" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Produzione Avanzata Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Produzione Auto-Replicante" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Produzione Avanzata Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Centro di riparazione automatizzato Mk2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Centro di riparazione automatizzato Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Centro di riparazione robotizzato" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Centro di riparazione robotizzato Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Centro di riparazione avanzato" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Centro di riparazione robotizzato Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Centro di riparazione avanzato Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Centro di riparazione avanzato Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Autoriparazione" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Torretta Riparatrice Pesante" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Programma intruso NEXUS" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Circuiti Resistenti a NEXUS" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Circuiti resistenti a NEXUS Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Circuiti resistenti a NEXUS Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Bombe a grappolo" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Bombe HE" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Testata Bomba migliorata" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Testata Bomba avanzata" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Caricatore rapido per mortaio" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Mitragliatrice a Fuoco Rapido" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Computer di previsione dei bersagli" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "Minirazzi HESH" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "Minirazzi HESH Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "Minirazzi HESH Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Torre con mitragliatrice d'assalto" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Ripara Cobra Tracks" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "Cannone ad Iper Velocità Python Cingoli" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Bunker Buster Cobra Hover" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Miglioramento dei sensori Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Miglioramento dei sensori Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Generatore a turbina a vapore Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Generatore a turbina a gas Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Generatore a turbina a gas Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Generatore a turbina a vapore Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Cyborg con Inceneritore alla Termite" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Inceneritore alla termite" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Granatiere" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Granatiere" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Ingegnere da Combattimento" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Meccanico Cyborg" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Obice Incendiario" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Postazione con obice incendiario" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Inceneritore a plasmite" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Bunker con Inceneritore a plasmite" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Mortaio Incendiario" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Postazione per Mortaio Incendiario" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Armatura termica superdensa Cyborg" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Armatura termica superdensa Cyborg Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Armatura termica superdensa Cyborg Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Armatura termica superdensa per veicoli" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Armatura termica superdensa per veicoli Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Armatura termica superdensa per veicoli Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super Cyborg con Cannone" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Cyborg con Cannone Automatico" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super Cyborg con Cannone a Ipervelocità" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Cyborg con Tank Killer" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Laser Pesante" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "Laser Pesante VTOL" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Postazione con laser pesante" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Doppio Cannone D'Assalto" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Bunker Con Doppio Cannone D'Assalto" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Centro di collegamento satellitare" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Sensore ad Ampio Spettro" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Torre Sensoria ad Ampio Spettro" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Cannone al Plasma" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Postazione con Cannone al Plasma" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Cyborg con Laser a Impulso" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Cyborg con Cannone a massa" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super Cyborg con Scourge" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Torre di collegamento NEXUS" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "Cannone EMP" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Torretta con Cannone EMP" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Fortezza con Mass Driver" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Fortezza con Mass Driver" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Fortezza con Cannone" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Bastione con Lanciarazzi Pesanti" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Fortezza con Lanciamissili" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "Corpo Pesante - Wyvern" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Wyvern" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "Corpo Multi Torretta - Dragon" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragon" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Gel a plasmite superinfiammabile" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Gel a plasmite superinfiammabile Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Gel a plasmite superinfiammabile Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "Mortaio EMP" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Postazione con Mortaio EMP" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Laser AA Stormbringer" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Postazione Stormbringer" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Postazione corazzata con SAM Vindicator" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Postazione corazzata con AA Whirlwind" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Postazione corazzata con AA Cyclone" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Postazione corazzata con SAM Avenger" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Doppia mitragliatrice d'assalto" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Postazione corazzata con Mitragliatrice d'assalto doppia" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "Bombe alla Plasmite" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Bomba alla Plasmite" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "Lanciamissili EMP VTOL" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Lanciamissili EMP" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Torretta di Comando MkII" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Torretta di Comando MkIII" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Torretta di Comando MkIV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "Cannone ad ipervelocità Bug VTOL" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "Cannone ad Iper Velocità Scorpion VTOL" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "Cannone ad ipervelocità Mantis VTOL" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "Batteria di minirazzi Cobra Cingoli" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "Cannone ad ipervelocità Python Hover" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Bombe HEAP Retribution VTOL" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11430,31 +12397,27 @@ msgstr "Cinese Tradizionale" msgid "Latin" msgstr "Latino" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Inserisci qua la password" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Non posso decidere il nome del server master (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Non posso comunicare con il server della Lobby! La porta TCP %u è aperta?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", mods:" - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11604,15 +12567,15 @@ msgstr "Ospita" msgid "go directly to host screen" msgstr "Vai direttamente alla schermata host" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Giocatore" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nuovo veicolo" @@ -11651,18 +12614,18 @@ msgstr "Potenza del Motore" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Peso" @@ -11676,656 +12639,652 @@ msgstr "Energia totale necessaria" msgid "Total Body Points" msgstr "Punti Vita totali" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Utilizzo d'Energia" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Trasportatore" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hydra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Raggio dei Sensori" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Potenza dei Sensori" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "Potenza dell'ECM" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Punti di Costruzione" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Raggio" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Danno" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Rateo di Fuoco" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Velocità in Aria" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Velocità sulla Strada" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Velocità Fuoristrada" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Velocità sull'Acqua" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Armi" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Sistemi" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Un giocatore ha lasciato la partita" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Giocatore" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." msgstr "Impossibile costruire. Risorsa d'olio in fiamme." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Danno %d%% - Esperienza %d, %s" -#: src/display.c:1857 +#: src/display.c:1875 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Alleato - Danno %d%% - Esperienza %d, %s" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" msgstr "Camion incaricato di costruire un Traliccio Petrolifero" -#: src/display.c:2048 -#, fuzzy +#: src/display.c:2078 msgid "2 trucks ordered to build Oil Derrick" -msgstr "Camion incaricato di costruire un Traliccio Petrolifero" +msgstr "2 camion incaricati di costruire un Traliccio Petrolifero" -#: src/display.c:2049 -#, fuzzy, c-format +#: src/display.c:2079 +#, c-format msgid "%d trucks ordered to build Oil Derrick" -msgstr "Camion incaricato di costruire un Traliccio Petrolifero" +msgstr "%d camion incaricati di costruire un Traliccio Petrolifero" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Unità Persa!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Struttura Riparata" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Gruppo %u selezionato - %u Unità" msgstr[1] "Gruppo %u selezionato - %u Unità" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u unità assegnata al Gruppo %u" msgstr[1] "%u unità assegnata al Gruppo %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Visuale Centrata sul Gruppo %u - %u Unit" msgstr[1] "Visuale Centrata sul gruppo %u - %u Unità" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Visuale affiancata al Gruppo %u - %u Unità" msgstr[1] "Visuale affiancata al Gruppo %u - %u Unità" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Coscritta" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Inesperta" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Addestrata" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Normale" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professionale" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veterana" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Speciale" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Eroe" -#: src/frontend.c:252 +#: src/frontend.c:253 msgid "Single Player" msgstr "Giocatore singolo" -#: src/frontend.c:253 +#: src/frontend.c:254 msgid "Multi Player" msgstr "Multi Player" -#: src/frontend.c:254 -#: src/frontend.c:312 +#: src/frontend.c:255 +#: src/frontend.c:313 msgid "Tutorial" msgstr "Tutorial" -#: src/frontend.c:255 +#: src/frontend.c:256 msgid "Options" msgstr "Opzioni" -#: src/frontend.c:256 +#: src/frontend.c:257 msgid "View Intro" msgstr "Guarda l'introduzione" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" msgstr "Esci dal Gioco" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "MENU PRINCIPALE" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "Partita Veloce" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "TUTORIAL" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Indietro" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "Nuova Campagna" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Inizia schermaglia" -#: src/frontend.c:372 +#: src/frontend.c:373 msgid "Challenges" msgstr "Sfide" -#: src/frontend.c:373 +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "Carica Partita" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "GIOCATORE SINGOLO" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 #: src/mission.c:2526 #: src/mission.c:2631 msgid "Load Saved Game" msgstr "Carica Partita" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "MULTIGIOCATORE" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Ospita una partita" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "Unisciti a una partita" -#: src/frontend.c:584 +#: src/frontend.c:585 #: src/multiint.c:1254 msgid "OPTIONS" msgstr "OPZIONI" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "Opzioni di Gioco" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "Opzioni Grafiche" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "Opzioni video." -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "Opzioni Audio" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "Opzioni del mouse" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" msgstr "Assegnazione dei Tasti" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "Riproduzione dei Video" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "1X" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "A schermo pieno" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "Scuoti lo Schermo" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "On" -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "Off" -#: src/frontend.c:686 +#: src/frontend.c:687 #: src/multiint.c:1323 msgid "Fog" msgstr "Nebbia" -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "Nebbia" -#: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:694 +#: src/frontend.c:761 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Nebbia di Guerra" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Sottotitoli" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Ombre" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" msgstr "OPZIONI GRAFICHE" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Volume Voce" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Volume effetti" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Volume musica" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" msgstr "OPZIONI AUDIO" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "Modalità Grafica*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "A finestra" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Risoluzione*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Dimensione della Texture" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" msgstr "Sincronia verticale" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" msgstr "* Ha effetto al riavvio del gioco" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" msgstr "OPZIONI VIDEO" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" msgstr "Inverti la rotazione" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "Blocca il Cursore" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" msgstr "Cursori colorati*" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" msgstr "Inverti i tasti del mouse" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" msgstr "* Può avere effetti negativi sulla performance" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" msgstr "OPZIONI DEL MOUSE" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "Difficoltà" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "Facile" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "Normale" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "Difficile" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "Velocità di Scorrimento" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "Lingua" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" msgstr "Colore delle Unità" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "OPZIONI DI GIOCO" -#: src/frontend.c:1693 +#: src/frontend.c:1706 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Mod attivi:" +msgid "Mod: " +msgstr "Mod:" -#: src/hci.c:1363 +#: src/hci.c:1360 msgid "MAP SAVED!" msgstr "MAPPA SALVATA!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 -#, fuzzy msgid "GAME SAVED: " -msgstr "PARTITA SALVATA!" +msgstr "PARTITA SALVATA:" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" msgstr "Costruzione fallita" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." msgstr "Il giocatore %u sta ottenendo una nuova struttura per mezzo di trucchi (debug menu) : %s." -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." msgstr "Il giocatore %u sta ottenendo una nuova caratteristica per mezzo di trucchi (debug menu) : %s." -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Il giocatore %u sta ottenendo una nuova unità per mezzo di trucchi (debug menu) : %s." -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" msgstr "Comandanti (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" msgstr "Intelligence (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" msgstr "Produzione (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" msgstr "Progettazione (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" msgstr "Ricerca (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" msgstr "Costruzione (F3)" -#: src/hci.c:3891 +#: src/hci.c:3876 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energia" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" msgstr "Texture" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" msgstr "Piazza texture sulla mappa" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" msgstr "Unità" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" msgstr "Piazza un' Unità sulla mappa" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" msgstr "Struttura" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" msgstr "Piazza Strutture sulla mappa" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" msgstr "Caratteristica" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" msgstr "Piazza Oggetti sulla mappa" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" msgstr "Metti in pausa o riprendi la partita" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" msgstr "Allinea le altezze di tutti gli oggetti della mappa" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Abbandona" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" msgstr "Esci dal Gioco" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Barra del Progresso" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" msgstr "Punto di Raduno della Fabbrica" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" msgstr "Produzione Ciclica" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "Scorri tabella a Sinistra" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "Scorri tabella a Destra" @@ -12342,12 +13301,12 @@ msgstr "ATTENZIONE: Sei l'host. Se tu abbandoni, la partita termina per tutti!" #: src/ingameop.c:195 #: src/ingameop.c:548 msgid "Tactical UI (Target Origin Icon): Show" -msgstr "" +msgstr "UI Tattica (Icona dell'Origine del bersaglio): Visualizza" #: src/ingameop.c:200 #: src/ingameop.c:552 msgid "Tactical UI (Target Origin Icon): Hide" -msgstr "" +msgstr "UI Tattica (Icona dell'Origine del bersaglio): Nascondi" #: src/ingameop.c:295 #: src/ingameop.c:523 @@ -12368,22 +13327,31 @@ msgstr "Il gioco non può continuare senza l'host." msgid "--> QUIT <--" msgstr "--> ABBANDONA <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" +"Il mod richiesto non può essere caricato: %s\n" +"\n" +"Warzone proverà a caricare il gioco senza di esso." + #: src/intdisplay.c:197 -#, fuzzy msgid "Build Progress" -msgstr "Punti di Costruzione" +msgstr "Progresso della produzione" #: src/intdisplay.c:228 -#, fuzzy msgid "Construction Progress" -msgstr "Unità da costruzione" +msgstr "Progresso della costruzione" #: src/intdisplay.c:263 msgid "Power Accrued" msgstr "Energia Accumulata" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "IN PAUSA" @@ -12393,7 +13361,7 @@ msgstr "Aggiornamento della Ricerca" #: src/intelmap.c:417 msgid "Project Goals" -msgstr "Obiettivi del Progetto" +msgstr "Obiettivi del Project" #: src/intelmap.c:420 msgid "Current Objective" @@ -12510,287 +13478,287 @@ msgstr "Assegna produzione della fabbrica di VTOL" msgid "Circle" msgstr "Circola" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Spiacente, quel trucco è disabilitato nelle partite multigiocatore." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Attenzione! Questo trucco è buggato. Raccomandiamo di NON usarlo." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Lasciaci vedere cosa vedi!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "Va bene,il display delle armi e dei sensor è spento!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:358 +#, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Il giocatore %u sta ottenendo una nuova unità per mezzo di trucchi (debug menu) : %s." +msgstr "Il giocatore %u sta ottenendo per mezzo di trucchi un nuovo esercito di %s(s)" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Il giocatore %u) sta usando il trucco:%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Duro come chiodi!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Prendendo le cose con calma!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 belli grossi!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Energia schiacciante!" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Ritorno alla normalità!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Si sta facendo complicato!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Due volte più bello!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS display è attivato." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS display è disattivato." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; Limite-FPS: %d; PIEs %d; polys %d; Terr. polys %d: States %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Il player %u) usa un trucco:Unità %d Strut.re %d Caratt. %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Energia infinita disabilitata" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Energia infinita abilitata" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Tutti gli oggetti resi disponibili" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Nebbia attiva" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Nebbia disattiva" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Attenzione! Questo trucco può causare problemi più avanti! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "Concludo la missione." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "I TRUCCHI SONO ORA ABILITATI!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "I TRUCCHI SONO ORA DISABILITATI!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Modalità Dio ON" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Modalità Dio OFF" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Visuale allineata a Nord" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "Blocca il Cursore %s" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "Ricercato TUTTO per te!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Il giocatore %u) sta usando il trucco:%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" -msgstr "Ricercayo" +msgstr "Ricercato" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Visualizza le barre di energia solo quando selezionato." -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Visualizza sempre le barre d'energia per le unità" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Visualizza sempre le barre di energia per le unità e le strutture" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Modialità Demo disattiva - Ritorno alla modalità di gioco normale" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "Il menu Debug è aperto" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Impossibile localizzare alcun estrattore di risorse!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, il tempo fuori è pauroso... NEVE" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... PIOGGIA" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Previsioni del tempo: Cieli puliti in ogni area... TEMPO DISATTIVATO" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Attenzione!Questo può avere conseguenze drastiche se usato non correttamente nelle missioni." -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "Nemici distrutti con i trucchi!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "I droidi e le strutture selezione saranno distrutte." -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Visuale centrata sul Quartier Generale, direzione NORD" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Impossibile localizzare il Quartier Generale!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "Limitazione della velocità della formazione è stata rimossa dal gioco a causa dei bug." -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "Direzione di rotazione verticale: Normale" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "Direzione di rotazione verticale: Capovolta" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "Scuoti lo schermo quando gli oggetti esplodono: Off" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "Scuoti lo schermo quando gli oggetti esplodono: On" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Spiacente, ma la velocità del gioco non può essere cambiata in multiplayer." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Velocità di Gioco Reimpostata" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Velocità di Gioco Aumentata a %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Velocità di Gioco Ridotta a %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Il menu Costruzione si riaprirà" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Il menu Costruzione non si riaprirà" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Il radar mostra i colori Amici-Nemici" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Il radar mostra il colore dei giocatori" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Il radar mostra solo oggetti" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar visualizzante terreno e altitudine" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Il radar mostra il terreno" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "Il radar mostra il terreno scoperto" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Il radar mostra l'altitudine" @@ -13209,8 +14177,8 @@ msgstr "Continua la Partita" msgid "GAME SAVED :" msgstr "PARTITA SALVATA!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "Hai trovato %u di energia in un barile di petrolio" @@ -13512,21 +14480,21 @@ msgstr "L'host ha espulso %s dalla partita!" msgid "Host is Starting Game" msgstr "L'host sta avviando la partita" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Giocatori" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "Invio mappa: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "Mappa: %d%% scaricata" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "HOST" @@ -13535,27 +14503,27 @@ msgstr "HOST" msgid "Players Still Joining" msgstr "Alcuni giocatori si stanno ancora unendo alla partita" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s ha abbandonato la partita" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "Il trasferimento del file è stato annullato per %d" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "%s (%u) ha un mod incompatibile, ed è stato espulso." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s si sta unendo alla partita" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Messaggio di Sistema" @@ -13641,47 +14609,47 @@ msgstr "Invia Energia al Giocatore" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Il giocatore %s sarà kickato perchè hanno cercato di bypassare il controllo dell'integrità dei dati!" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "(alleati" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(privato a" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[invalido]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Verde" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Arancione" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Grigio" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Nero" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Rosso" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Blu" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Rosa" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Azzurro" @@ -13824,12 +14792,12 @@ msgstr "VITTORIA!" msgid "YOU WERE DEFEATED!" msgstr "SEI STATO SCONFITTO" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Segnale ricevuto da %s" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Segnale %d" @@ -13838,7 +14806,7 @@ msgstr "Segnale %d" #, c-format msgid "%u unit selected" msgid_plural "%u units selected" -msgstr[0] "%u unitù selezionata" +msgstr[0] "%u unità selezionata" msgstr[1] "%u unità selezionate" #: src/selection.c:433 @@ -13858,63 +14826,63 @@ msgstr "Impossibile localizzare alcuna Unità Sensoria!" msgid "Unable to locate any Commanders!" msgstr "Impossibile localizzare alcun Comandante!" -#: src/structure.c:2838 +#: src/structure.c:2823 #, fuzzy msgid "Command Control Limit Reached - Production Halted" -msgstr "Limite di Controllo Raggiunto - Produzione Bloccata" +msgstr "Limite di Controllo Raggiunto - Produzione Arrestata" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Unità Assegnata" msgstr[1] "%s - %u Unità Assegnate" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Danno %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Collegati %u di %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Danneggiato Elettronicamente" -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "Premio Elettronico - Rapporto di Visibilità" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "Premio della Fabbrica - Propulsione" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" msgstr "Premio della Fabbrica - Corpo" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "Premio della Fabbrica - Arma" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" msgstr "Premio della Fabbrica - Niente" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "Premio della Struttura di Riparazione - Ripara" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" msgstr "Premio della Struttura di Riparazione - Niente" @@ -13923,7 +14891,7 @@ msgstr "Premio della Struttura di Riparazione - Niente" msgid "Launch Transport" msgstr "Lancia il Trasporto" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "I rinforzi stanno atterrando" @@ -13958,9 +14926,18 @@ msgstr "Versione %s%s%s%s" #~ msgid ": Unknown cheat code." #~ msgstr ": Codice del trucco sconosciuto." +#~ msgid "(Player %u) has detected the borg 'legs' bug! Please enter legs in your console and upload the files to us!" +#~ msgstr "(Giocatore %u) ha rilevato il bug delle\"gambe\" dei cyborg! Per favore, inserisci legs nella tua console e spediscici i file!" + #~ msgid "You found %u power in an oil drum" #~ msgstr "Hai trovato %u di energia in un barile di petrolio" +#~ msgid ", mod: " +#~ msgstr ", mod:" + +#~ msgid "Active mods: " +#~ msgstr "Mod attivi:" + #, fuzzy #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Il giocatore %u ha la versione sbagliata.Auto-kicking." @@ -14010,9 +14987,6 @@ msgstr "Versione %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "Ferma l'Audio Multigiocatore" -#~ msgid "Game" -#~ msgstr "Partita" - #~ msgid "Mayhem" #~ msgstr "Mayhem" @@ -14022,9 +14996,6 @@ msgstr "Versione %s%s%s%s" #~ msgid "The game is full!" #~ msgstr "La partita è piena!" -#~ msgid "you are being a jerk." -#~ msgstr "Stai facendo l'idiota." - #~ msgid "English" #~ msgstr "Inglese" @@ -14270,33 +15241,15 @@ msgstr "Versione %s%s%s%s" #~ msgid "Commander" #~ msgstr "Comandante" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Congratulazioni per l'aver sconfitto il New Paradigm." - #~ msgid "This sector is now secure." #~ msgstr "Questo settore è ora sicuro." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Quando abbiamo fallito a rispondere, era diventato impegnativo." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Nexus è scomparso senza lasciare tracce" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "Il programma di intrusione Nexus ha dei collegamenti con la corporazione Reed." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Nexus possiede tecnologie ed armamenti, e non è amichevole." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Guerrieri del Collective..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Distruggete e uccidete chi si oppone alla Macchina." - -#~ msgid "Attack!" -#~ msgstr "Attaccate!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Analisi del sito del reattore indicano che il Collective" @@ -14381,9 +15334,6 @@ msgstr "Versione %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Attacco Aereo in Arrivo" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Squadra Alfa Sconfitta" - #~ msgid "Team Beta Eradicated" #~ msgstr "Squadra Beta Sconfitta" diff --git a/po/la.po b/po/la.po index 2f09d0d67..3904d97b4 100644 --- a/po/la.po +++ b/po/la.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-09 16:39+0000\n" "Last-Translator: Giel van Schijndel \n" "Language-Team: Latin\n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1775,7 +1775,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1948,7 +1948,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2105,7 +2105,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2965,7 +2965,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2987,7 +2987,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2996,7 +2996,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3005,7 +3005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3041,7 +3041,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3172,7 +3172,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3850,14 +3850,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3869,14 +3869,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4014,7 +4014,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4566,14 +4566,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4930,14 +4933,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4946,16 +4953,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5252,6 +5262,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5260,6 +5272,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5268,10 +5281,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5280,6 +5295,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5306,6 +5322,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5745,7 +5762,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5754,7 +5771,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5781,7 +5798,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5812,7 +5829,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5829,7 +5846,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5853,7 +5870,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5865,7 +5882,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5875,7 +5892,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5892,7 +5909,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5906,26 +5923,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5990,7 +6007,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -5999,9 +6016,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6011,8 +6028,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6021,7 +6038,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6116,8 +6133,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6222,14 +6239,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6251,7 +6268,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6279,8 +6296,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6288,15 +6305,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6320,7 +6337,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6356,7 +6373,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6368,7 +6385,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 #, fuzzy msgid "Power Module" msgstr "Vigor AdquirÄvi" @@ -6382,7 +6399,7 @@ msgstr "Invenio" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 #, fuzzy msgid "Research Module" msgstr "Invenio" @@ -6395,7 +6412,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6416,8 +6433,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6428,30 +6445,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6462,27 +6479,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6493,30 +6510,30 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 #, fuzzy msgid "CB Tower" msgstr "Vigor" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6526,81 +6543,81 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 #, fuzzy msgid "Lancer Tower" msgstr "Vigor" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 #, fuzzy msgid "Mini-Rocket Tower" msgstr "Vigor" @@ -6608,88 +6625,88 @@ msgstr "Vigor" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6700,140 +6717,140 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 #, fuzzy msgid "Howitzer" msgstr "Vigor" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6844,80 +6861,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6927,74 +6944,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -7003,62 +7020,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7067,22 +7084,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7099,307 +7116,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7414,15 +7431,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7431,55 +7448,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7497,15 +7514,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7516,49 +7533,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7596,54 +7613,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7680,172 +7697,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7855,84 +7872,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7953,292 +7970,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8247,17 +8264,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8274,252 +8291,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8528,57 +8545,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8587,142 +8604,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8731,367 +8748,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9112,7 +9129,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9121,49 +9138,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9172,37 +9189,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9484,336 +9501,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9822,7 +10675,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9831,7 +10684,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9840,127 +10693,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9970,7 +10823,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Vigor" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9979,55 +10832,160 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "Vigor" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "Vigor" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "Vigor" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Vigor" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Vigor" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10648,7 +11606,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10677,7 +11635,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10690,640 +11648,652 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 #, fuzzy msgid "Pulse Laser Tower" msgstr "Vigor" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Vigor" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 #, fuzzy msgid "Flamer Tower" msgstr "Vigor" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "Invenio" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "Invenio" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "Vigor" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "Vigor" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "Vigor" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 #, fuzzy msgid "Sensor Upgrade Mk2" msgstr "Vigor AdquirÄvi" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "Vigor AdquirÄvi" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11454,31 +12424,39 @@ msgstr "" msgid "Latin" msgstr "" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +msgid "Strategy Game" +msgstr "" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11628,15 +12606,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11675,18 +12653,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "" @@ -11700,189 +12678,189 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Armorum" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:1857 +#: src/display.c:1856 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "" -#: src/display.c:2048 +#: src/display.c:2047 msgid "2 trucks ordered to build Oil Derrick" msgstr "" -#: src/display.c:2049 +#: src/display.c:2048 #, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "" -#: src/droid.c:3251 +#: src/droid.c:3276 #, fuzzy msgid "Trained" msgstr "Exercitum" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "" -#: src/droid.c:3254 +#: src/droid.c:3279 #, fuzzy msgid "Veteran" msgstr "Veteranum" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "" -#: src/droid.c:3257 +#: src/droid.c:3282 #, fuzzy msgid "Hero" msgstr "Heros" @@ -11929,11 +12907,11 @@ msgstr "" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "" @@ -12013,19 +12991,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12034,43 +13012,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "" @@ -12080,147 +13057,146 @@ msgid "Fog" msgstr "" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 msgid "GRAPHICS OPTIONS" msgstr "" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "" -#: src/frontend.c:875 +#: src/frontend.c:867 msgid "AUDIO OPTIONS" msgstr "" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 msgid "VIDEO OPTIONS" msgstr "" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 msgid "MOUSE OPTIONS" msgstr "" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12252,109 +13228,109 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "" -#: src/hci.c:3795 +#: src/hci.c:3799 #, fuzzy msgid "Research (F2)" msgstr "Invenio" -#: src/hci.c:3811 +#: src/hci.c:3815 #, fuzzy msgid "Build (F3)" msgstr "Construo" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 #, fuzzy msgid "Power" msgstr "Vigor" -#: src/hci.c:4075 +#: src/hci.c:4077 #, fuzzy msgid "Tile" msgstr "Exercitum" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12397,6 +13373,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 msgid "Build Progress" msgstr "" @@ -12411,7 +13395,7 @@ msgid "Power Accrued" msgstr "Vigor AdquirÄvi" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "" @@ -12539,288 +13523,288 @@ msgstr "" msgid "Circle" msgstr "Exercitum" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Invenio" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13241,8 +14225,8 @@ msgstr "" msgid "GAME SAVED :" msgstr "" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13544,21 +14528,21 @@ msgstr "" msgid "Host is Starting Game" msgstr "" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13567,27 +14551,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "" @@ -13673,49 +14657,49 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 #, fuzzy msgid "Green" msgstr "Viridum" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Canum" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "NÄ­grum" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 #, fuzzy msgid "Red" msgstr "Rubrum" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "" @@ -13858,12 +14842,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13892,62 +14876,62 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -13956,7 +14940,7 @@ msgstr "" msgid "Launch Transport" msgstr "" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "" diff --git a/po/lt.po b/po/lt.po index 1a8289e4e..e97772fe5 100644 --- a/po/lt.po +++ b/po/lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-09 16:42+0000\n" "Last-Translator: Roman \n" "Language-Team: Lithuanian \n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1947,7 +1947,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2964,7 +2964,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2986,7 +2986,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2995,7 +2995,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3004,7 +3004,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3040,7 +3040,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3171,7 +3171,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3849,14 +3849,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3868,14 +3868,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4013,7 +4013,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5305,6 +5321,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5744,7 +5761,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5753,7 +5770,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5780,7 +5797,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5811,7 +5828,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5828,7 +5845,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5852,7 +5869,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5864,7 +5881,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5874,7 +5891,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5891,7 +5908,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5905,26 +5922,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5988,7 +6005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -5997,9 +6014,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6009,8 +6026,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6019,7 +6036,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6113,8 +6130,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6218,14 +6235,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6247,7 +6264,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6275,8 +6292,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6284,15 +6301,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6316,7 +6333,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6352,7 +6369,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6364,7 +6381,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6376,7 +6393,7 @@ msgstr "" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "" @@ -6388,7 +6405,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6409,8 +6426,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6421,30 +6438,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6455,27 +6472,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6486,29 +6503,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6518,168 +6535,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6690,139 +6707,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6833,80 +6850,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6916,74 +6933,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6992,62 +7009,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7056,22 +7073,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7088,307 +7105,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7403,15 +7420,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7420,55 +7437,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7486,15 +7503,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7505,49 +7522,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7585,54 +7602,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7669,172 +7686,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7844,84 +7861,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7942,292 +7959,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8236,17 +8253,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8263,252 +8280,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8517,57 +8534,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8576,142 +8593,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8720,367 +8737,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9101,7 +9118,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9110,49 +9127,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9161,37 +9178,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9473,336 +9490,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9811,7 +10664,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9820,7 +10673,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9829,127 +10682,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9958,7 +10811,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9967,55 +10820,155 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10631,7 +11584,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10660,7 +11613,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10673,632 +11626,644 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Kapitonas (F6)" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Kapitonas (F6)" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11434,31 +12399,40 @@ msgstr "" msgid "Latin" msgstr "Lotynų" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "IÅ¡saugoti žaidimÄ…" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11608,15 +12582,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "ŽaidÄ—jas" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11655,18 +12629,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "" @@ -11680,129 +12654,129 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "ŽaidÄ—jas" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "ŽaidÄ—jas" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Negalima statyti. Naftos telkinys dega." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Žala %d%% - Patirtis %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Žala %d%% - Patirtis %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Sunkvežimiui įsakyta sukonstruoti naftos platformÄ…" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Sunkvežimiui įsakyta sukonstruoti naftos platformÄ…" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Sunkvežimiui įsakyta sukonstruoti naftos platformÄ…" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Prarastas karinis vienetas!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Pastatas atkurtas" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" @@ -11810,7 +12784,7 @@ msgstr[0] "GrupÄ— %u priskirtas - %u Kovinis vienetas" msgstr[1] "GrupÄ— %u priskirti - %u Koviniai vienetai" msgstr[2] "GrupÄ— %u priskirti - %u Koviniai vienetai" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" @@ -11818,54 +12792,54 @@ msgstr[0] "%u kovinis vienetas priskirtas Grupei %u" msgstr[1] "%u Koviniai vienetai priskirti Grupei %u" msgstr[2] "%u Koviniai vienetai priskirti Grupei %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "" @@ -11913,11 +12887,11 @@ msgstr "" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "" @@ -11997,19 +12971,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12018,43 +12992,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "" @@ -12064,147 +13037,146 @@ msgid "Fog" msgstr "" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 msgid "GRAPHICS OPTIONS" msgstr "" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "" -#: src/frontend.c:875 +#: src/frontend.c:867 msgid "AUDIO OPTIONS" msgstr "" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 msgid "VIDEO OPTIONS" msgstr "" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 msgid "MOUSE OPTIONS" msgstr "" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12238,106 +13210,106 @@ msgstr "ŽaidÄ—jas %u sukÄiauja (debug meniu) jam/jai naujos galimybÄ—s: %s." msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "ŽaidÄ—jas %u sukÄiauja (debug meniu) jam/jai naujas droidas: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Kapitonas (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Valdymo skydas (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Pastatai (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "KÅ«rimas (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "IÅ¡radimas (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Pastatyti (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energija" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Karinis vienetas" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Statyti" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "NaujovÄ—" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "Hostas paliko žaidimÄ…" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "IÅ¡eiti" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "IÅ¡eiti iÅ¡ žaidimo" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Eigos juosta" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Gamyklinis iÅ¡eities taÅ¡kas" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Nesibaigianti gamyba" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Pasukti į kairÄ™" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Pasukti į deÅ¡inÄ™" @@ -12381,6 +13353,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12395,7 +13375,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "" @@ -12522,288 +13502,288 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "ŽaidÄ—jas %u sukÄiauja (debug meniu) jam/jai naujas droidas: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "IÅ¡radimas (F2)" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13225,8 +14205,8 @@ msgstr "TÄ™sti žaidimÄ…" msgid "GAME SAVED :" msgstr "Žaidimas iÅ¡saugotas" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13532,21 +14512,21 @@ msgstr "" msgid "Host is Starting Game" msgstr "" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13555,27 +14535,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "VietinÄ— sistema" @@ -13664,47 +14644,47 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Žalia" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "OranžinÄ—" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Pilka" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Juoda" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Raudona" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "MÄ—lyna" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "RožinÄ—" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Žydra" @@ -13847,12 +14827,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13881,62 +14861,62 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -13945,7 +14925,7 @@ msgstr "" msgid "Launch Transport" msgstr "IÅ¡leisti transportÄ…" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Pastiprinimas leidžiasi" diff --git a/po/nb.po b/po/nb.po index c328bedde..28dcc450a 100644 --- a/po/nb.po +++ b/po/nb.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-05-09 16:54+0000\n" "Last-Translator: Olav Andreas Lindekleiv \n" "Language-Team: none\n" @@ -1589,7 +1589,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1621,8 +1621,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1787,7 +1787,7 @@ msgstr "Mer spillhastighet" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1960,7 +1960,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2117,7 +2117,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2978,7 +2978,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -3000,7 +3000,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -3009,7 +3009,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3018,7 +3018,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3054,7 +3054,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3185,7 +3185,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3863,14 +3863,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3882,14 +3882,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4027,7 +4027,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4581,14 +4581,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4945,14 +4948,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4961,16 +4968,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5267,6 +5277,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5275,6 +5287,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5283,10 +5296,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5295,6 +5310,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5321,6 +5337,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5760,7 +5777,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5769,7 +5786,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5796,7 +5813,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5827,7 +5844,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5844,7 +5861,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5868,7 +5885,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5880,7 +5897,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5890,7 +5907,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5907,7 +5924,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5921,26 +5938,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -6004,7 +6021,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -6013,9 +6030,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6025,8 +6042,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6035,7 +6052,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6129,8 +6146,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6234,14 +6251,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6263,7 +6280,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6291,8 +6308,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6300,15 +6317,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6332,7 +6349,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6368,7 +6385,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6380,7 +6397,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6393,7 +6410,7 @@ msgstr "Forskning" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 #, fuzzy msgid "Research Module" msgstr "Forskning ferdig" @@ -6406,7 +6423,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6427,8 +6444,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6439,30 +6456,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6473,27 +6490,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6504,29 +6521,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6536,168 +6553,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6708,139 +6725,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6851,80 +6868,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6934,74 +6951,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -7010,62 +7027,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7074,22 +7091,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7106,308 +7123,308 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 #, fuzzy msgid "Hardcrete" msgstr "Tøff" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7422,15 +7439,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7439,55 +7456,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7505,15 +7522,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7524,49 +7541,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7604,54 +7621,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7688,172 +7705,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7863,84 +7880,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7961,292 +7978,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8255,17 +8272,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8282,252 +8299,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8536,57 +8553,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8595,142 +8612,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8739,367 +8756,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9120,7 +9137,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9129,49 +9146,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9180,37 +9197,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9494,336 +9511,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9832,7 +10685,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9841,7 +10694,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9850,127 +10703,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9979,7 +10832,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9988,55 +10841,155 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10659,7 +11612,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10688,7 +11641,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10701,634 +11654,648 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Tøff" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Spill" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "Forskning" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "Forskning" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 #, fuzzy msgid "Sensor Upgrade Mk2" msgstr "Sensorradius" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "Sensorradius" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11464,31 +12431,40 @@ msgstr "" msgid "Latin" msgstr "Latin" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Lagre spill" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11641,15 +12617,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Spiller" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11688,18 +12664,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Vekt" @@ -11713,189 +12689,189 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Sensorradius" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Sensorkraft" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Rekkevidde" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Spiller" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Spiller" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Kan ikke bygge her. Oljeressurs brenner." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:1857 +#: src/display.c:1856 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "" -#: src/display.c:2048 +#: src/display.c:2047 msgid "2 trucks ordered to build Oil Derrick" msgstr "" -#: src/display.c:2049 +#: src/display.c:2048 #, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Enhet Tapt!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Nybegynner" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Grønn" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Trent" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Vanlig" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Profesjonell" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Spesiell" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Helt" @@ -11943,11 +12919,11 @@ msgstr "INTRODUKSJON" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "" @@ -12030,19 +13006,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12051,43 +13027,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "PÃ¥" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Av" @@ -12097,153 +13072,152 @@ msgid "Fog" msgstr "TÃ¥ke" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "KrigstÃ¥ke" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "SPILLALTERNATIVER" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Stemmevolum" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Lydeffektvolum" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Musikkvolum" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "SPILLALTERNATIVER" -#: src/frontend.c:940 +#: src/frontend.c:932 #, fuzzy msgid "Graphics Mode*" msgstr "Grafikkalternativer" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "SPILLALTERNATIVER" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Spillalternativer" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "SPILLALTERNATIVER" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Vanskelighetsgrad" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Enkel" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Normal" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Tøff" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "SPILLALTERNATIVER" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12277,85 +13251,85 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Produksjon (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 #, fuzzy msgid "Design (F4)" msgstr "Design (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 #, fuzzy msgid "Research (F2)" msgstr "Forskning (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 #, fuzzy msgid "Build (F3)" msgstr "Bygg (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energi" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 #, fuzzy msgid "Place tiles on map" msgstr "Sett strukturbegrensninger" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Enhet" -#: src/hci.c:4086 +#: src/hci.c:4088 #, fuzzy msgid "Place Unit on map" msgstr "Sett strukturbegrensninger" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 #, fuzzy msgid "Place Structures on map" msgstr "Sett strukturbegrensninger" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 #, fuzzy msgid "Place Features on map" msgstr "Sett strukturbegrensninger" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "Verten har forlatt spillet!" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 @@ -12363,28 +13337,28 @@ msgstr "" msgid "Quit" msgstr "Avslutt" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Avslutt Spill" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Framdriftslinje" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "LeveringsmÃ¥l for fabrikk" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12429,6 +13403,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12443,7 +13425,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "PAUSE" @@ -12570,291 +13552,291 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Beklager, den juksekoden er slÃ¥tt av i flerspiller-modus." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Las oss se hva du ser!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS-visning er slÃ¥tt pÃ¥." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS-visning er slÃ¥tt av." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Uendelig energi slÃ¥tt av" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Uendelig energi slÃ¥tt pÃ¥" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Alle gjenstander er nÃ¥ tilgjengelige" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "TÃ¥ke slÃ¥tt pÃ¥" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "TÃ¥ke slÃ¥tt av" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "Forskning" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demomodus slÃ¥tt av - GÃ¥r tilbake til normalt spillmodus" -#: src/keybind.c:1546 +#: src/keybind.c:1542 #, fuzzy msgid "Debug menu is Open" msgstr "Byggemenyen vil gjenÃ¥pnes" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oi, værskifte i vente... SNØ" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Værtmelding: Klar himmel, ingen skyer i vente... IKKE VÆR" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Klarer ikke Ã¥ finne hovedkvarter!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Beklager, den juksekoden er slÃ¥tt av i flerspiller-modus." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Spillfart øker til %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Spillfart reduseres til %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Byggemenyen vil gjenÃ¥pnes" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Byggemenyen vil ikke gjenÃ¥pnes" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar viser spillernes farger" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar viser kun gjenstander" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar viser terreng" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar viser terreng" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar viser høyde" @@ -13277,8 +14259,8 @@ msgstr "Fortsett spill" msgid "GAME SAVED :" msgstr "SPILL LAGRET!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13589,21 +14571,21 @@ msgstr "Verten har kastet ut %s fra spillet!" msgid "Host is Starting Game" msgstr "Vert starter spill" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Spillere" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13612,27 +14594,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s har forlatt spillet" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s hopper inn pÃ¥ spillet" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "SystemsprÃ¥k" @@ -13720,48 +14702,48 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Allianser" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Grønn" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oransje" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "GrÃ¥" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Svart" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Rød" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "BlÃ¥" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Rosa" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "CyanblÃ¥" @@ -13904,12 +14886,12 @@ msgstr "DU HAR VUNNET!" msgid "YOU WERE DEFEATED!" msgstr "DU HAR TAPT!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13938,62 +14920,62 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, fuzzy, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Skade %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Forbundet med %u av %u mulige" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Elektrisk skadet" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -14002,7 +14984,7 @@ msgstr "" msgid "Launch Transport" msgstr "Send transport" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Forsterkninger lander" @@ -14065,6 +15047,3 @@ msgstr "Version %s%s%s%s" #~ msgid "Swedish" #~ msgstr "Svensk" - -#~ msgid "Game" -#~ msgstr "Spill" diff --git a/po/nl.po b/po/nl.po index c71b97107..c2a500843 100644 --- a/po/nl.po +++ b/po/nl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2009-10-31 12:10+0100\n" "Last-Translator: \n" "Language-Team: Dutch \n" @@ -1581,7 +1581,7 @@ msgstr "Cyborgproductie verbeterd" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Geautomatiseerde cyborg-productie" @@ -1613,8 +1613,8 @@ msgstr "Alle cyborgfabrieken automatisch verbeterd" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Cyborgfabriek" @@ -1775,7 +1775,7 @@ msgstr "Verhoogt schadebestendigheid" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1948,7 +1948,7 @@ msgstr "Voertuig Motor Upgrade" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Injectiemotor" @@ -2105,7 +2105,7 @@ msgstr "Snelheid: langzaam" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Wielaandrijving" @@ -2965,7 +2965,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Gerobotiseerde cyborg-productie" @@ -2987,7 +2987,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2996,7 +2996,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3005,7 +3005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Gerobotiseerde VTOL-productie" @@ -3041,7 +3041,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3172,7 +3172,7 @@ msgstr "Hoge energiekosten en langere productietijd dan Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Turbolader" @@ -3850,14 +3850,14 @@ msgstr "Gasturbine verhoogt energieuitvoer" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3869,14 +3869,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Geavanceerde VTOL-productie" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4014,7 +4014,7 @@ msgstr "Heel duur om te produceren" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Gasturbine" @@ -4566,14 +4566,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "Objectief: Zoek en herstel neurale synaps technologie" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Bouw een basis, Zoek dan voor de Pre-Collapse Gebouw." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Dit gebouw bevat technologie vitaal voor het succes van het project." @@ -4930,14 +4933,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4946,16 +4953,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Nieuwe technologieën zijn beschikbaar" @@ -5252,6 +5262,8 @@ msgid "Good luck, Commander." msgstr "Success, commandant." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5260,6 +5272,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Gefeliciteerd met uw succes van het evacueren van de Beta Basis." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5268,10 +5281,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Neem uw krachten naar de noord sector." #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Team Gamma neemt contact met u op zodra u daar bent." @@ -5280,6 +5295,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Commadant, het succes van het project ligt in uw handen." @@ -5306,6 +5322,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5745,7 +5762,7 @@ msgstr "Vervoer" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Vrachtwagen" @@ -5754,7 +5771,7 @@ msgstr "Vrachtwagen" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Machinegeweer Adder Wielen" @@ -5781,7 +5798,7 @@ msgstr "Licht Kanon Adder Banden" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 #, fuzzy msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Zwaar Machinegeweer Adder Halfband" @@ -5816,7 +5833,7 @@ msgstr "Reparatiekoepel Adder Halfband" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Dubbel Machinegeweer Adder Wielen" @@ -5833,7 +5850,7 @@ msgstr "Zwaar Machinegeweer Adder Halfband" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Zwaar Machinegeweer Adder Banden" @@ -5860,7 +5877,7 @@ msgstr "Bunkerblaas-raketten Adder Wielen" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 #, fuzzy msgid "Medium Cannon Cobra Tracks" msgstr "Middelkanon Adder Banden" @@ -5874,7 +5891,7 @@ msgstr "Middelkanon Adder Banden" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5885,7 +5902,7 @@ msgstr "Sensor Cobra Halfband" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 #, fuzzy msgid "Flamer Cobra Tracks" msgstr "Vlammewerper Adder Halfband" @@ -5905,7 +5922,7 @@ msgstr "Sensor Cobra Halfband" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5921,10 +5938,10 @@ msgid "Light Cannon Python Tracks" msgstr "Licht Kanon Adder Banden" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 #, fuzzy msgid "Medium Cannon Python Tracks" msgstr "Middelkanon Adder Banden" @@ -5932,9 +5949,9 @@ msgstr "Middelkanon Adder Banden" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 #, fuzzy msgid "Heavy Cannon Python Tracks" msgstr "Zwaar kanon" @@ -5942,7 +5959,7 @@ msgstr "Zwaar kanon" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 #, fuzzy msgid "Command Turret Python Tracks" msgstr "Commandokoepel Adder Banden" @@ -6007,7 +6024,7 @@ msgstr "Burger" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Mitrailleur" @@ -6016,9 +6033,9 @@ msgstr "Mitrailleur" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Vlammenwerper" @@ -6028,8 +6045,8 @@ msgstr "Vlammenwerper" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lansier" @@ -6038,7 +6055,7 @@ msgstr "Lansier" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Zware kanonnier" @@ -6132,8 +6149,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6237,14 +6254,14 @@ msgstr "Halfband III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Cyborgaandrijving II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Cyborgaandrijving III" @@ -6266,7 +6283,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Cyborg-aandrijving" @@ -6295,8 +6312,8 @@ msgstr "Z NULSENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Sensortoren" @@ -6304,15 +6321,15 @@ msgstr "Sensortoren" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Verharde Sensortoren" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Sensorkoepel" @@ -6336,7 +6353,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6372,7 +6389,7 @@ msgstr "Fabriek" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Fabrieksmodule" @@ -6384,7 +6401,7 @@ msgstr "Energiegenerator" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Energiemodule" @@ -6396,7 +6413,7 @@ msgstr "Onderzoekscentrum" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Onderzoeksmodule" @@ -6408,7 +6425,7 @@ msgstr "Sloop gebouw" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Reparatiecentrum" @@ -6429,8 +6446,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "VTOL-fabriek" @@ -6441,30 +6458,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6475,27 +6492,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6506,29 +6523,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6538,82 +6555,82 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Machinegeweer wachttoren" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Dubbel machinegeweerwachttoren" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 #, fuzzy msgid "Heavy Machinegun Tower" msgstr "Zwaar machinegeweer-wachttoren" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Vlammewerper-wachttoren" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 #, fuzzy msgid "Lancer Tower" msgstr "Lansierwachttoren" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 #, fuzzy msgid "Mini-Rocket Tower" msgstr "Mini-pod-raket-wachttoren" @@ -6621,88 +6638,88 @@ msgstr "Mini-pod-raket-wachttoren" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Machinegeweer-bunker" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Dubbel machinegeweer-bunker" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Zwaar machinegeweer-bunker" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Licht kanon-bunker" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Vlammewerperbunker" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Lansierbunker" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Tankval" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Drakentanden" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6713,139 +6730,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Licht kanon" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Gemiddeld kanon" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Zwaar kanon" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Hypersnelheidskanon" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Aanvalskanon" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Houwitser" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Machinegeweer" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Dubbel machinegeweer" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Zwaar machinegeweer" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6856,80 +6873,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Mortier" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6939,76 +6956,76 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Bunkerbeuker" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 #, fuzzy msgid "Mini-Rocket Pod" msgstr "HE-mini-raketten" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 #, fuzzy msgid "VTOL Mini-Rocket" msgstr "HE-mini-raketten" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -7017,62 +7034,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7081,22 +7098,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7113,314 +7130,314 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Cyborg-hitteschild" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Cyborg-hitteschild Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Cyborg-hitteschild Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 #, fuzzy msgid "Bunker Blaster Cyborg" msgstr "Bunkerbeuker" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 #, fuzzy msgid "Heavy Gunner Cyborg" msgstr "Zware kanonnier" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 #, fuzzy msgid "Flamer Cyborg" msgstr "Vlammenwerper" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 #, fuzzy msgid "Machinegunner Cyborg" msgstr "Mitrailleur" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 #, fuzzy msgid "Lancer Cyborg" msgstr "Lansier" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 #, fuzzy msgid "Assault Gunner Cyborg" msgstr "Aanvalskanonnier" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 #, fuzzy msgid "Scourge Cyborg" msgstr "Produceert cyborgs" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7435,15 +7452,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7452,55 +7469,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7519,15 +7536,15 @@ msgstr "Mini-pod-raket-wachttoren" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7538,49 +7555,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Geavanceerde cyborg-productie" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7618,54 +7635,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Reparatie faciliteit" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Geautomatiseerde Reparatie Faciliteit" @@ -7702,172 +7719,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Geavanceerde Reparatie Faciliteit Upgrade Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Synaptische Link Gegevens Analyse" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Synaptische Link Gegevens Analyse Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Synaptische Link Gegevens Analyse Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Geautmatiseerde VTOL herlading Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Geautmatiseerde VTOL herlading Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Robotische VTOL herlading Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Robotische VTOL herlading Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Robotische VTOL herlading Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Gerobotiseerde VTOL-productie Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Gerobotiseerde VTOL-productie Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Geavanceerde VTOL-productie Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Geavanceerde VTOL-productie Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Cyborg Zelf-Reparatie" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Geautomatisserde Cyborg Reparatie Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Geautomatisserde Cyborg Reparatie Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Verdedeging Zelf-Reparatie" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Geautmatiseerde Verdedegingswerk Reparatie Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Geautmatiseerde Verdedegingswerk Reparatie Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Voertuig Zelf-Reparatie" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Geautomatiseerde Voertuig Reparatie Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Geautomatiseerde Voertuig Reparatie Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Sensorverbetering" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Constructie Eenheid" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Genie" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Verbeterde genie" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Geavanceerde genie" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Mobiele reparatiekoepel" @@ -7877,84 +7894,84 @@ msgstr "Zwaare Mobiele Reparatie Upgrade" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Mobiele Reparatie Upgrade" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Mobiele Reparatie Upgrade Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "CB-sensorverbetering" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "CB-sensorverbetering 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "CB-sensorverbetering 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7975,292 +7992,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Sensorvergrendeling" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Hitteschild" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Hitteschild Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Hitteschild Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Hoogintensief hitteschild" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Lichte carrosserie - Adder" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Lichte carrosserie - Luipaard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Lichte carrosserie - Wraak" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Lichte carrosserie - Kever" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Gemiddelde carrosserie - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Gemiddelde carrosserie - Panter" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Gemiddelde carrosserie - Vergelding" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Gemiddelde carrosserie - Schorpioen" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Zware carrosserie - Tijger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Zware carrosserie - Wraak" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Zware carrosserie - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Zware carrosserie - Bidsprinkhaan" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Injectiemotor Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Injectiemotor Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Turbolader Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Turbolader Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Gasturbine Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Gasturbine Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Legeringen" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Legeringen Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Legeringen Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Dichte legeringen" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Dichte legeringen Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Dichte legeringen Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Superdichte legeringen" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Superdichte legeringen Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Superdichte legeringen Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Luchtkussenaandrijving" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Luchtkussenaandrijving II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Halfbandaandrijving" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Halfbandaandrijving II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Bandaandrijving" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Bandaandrijving II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "VTOL-aandrijving" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "VTOL-aandrijving II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Wielaandrijving II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "AA thermische beeldsensor" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "AA doelverkrijg-granaten" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "AA doelvoorspel-computer" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "AA HE afweergeschut" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "AA HE afweergeschut Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "AA HE afweergeschut Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "AA HEAP afweergeschut" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "AA HEAP afweergeschut Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "AA HEAP afweergeschut Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "AA munitietremel" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "AA munitietremel Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "AA munitietremel Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "AA kettinglader" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "AA kettinglader Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "AA kettinglader Mk3" @@ -8269,17 +8286,17 @@ msgid "Cluster Bombs Bay" msgstr "Clusterbommenluik" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "HEAP-bommenluik" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Fosforbommenluik" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Thermietbommenluik" @@ -8296,252 +8313,252 @@ msgid "Target Acquisition Bombsight" msgstr "Doelverkrijg-bomzicht" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Kanon-laser-afstandsmeter" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Kanon-laser-aanwijzer" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "HEAT-kanongranaten" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "HEAT-kanongranaten Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "HEAT-kanongranaten Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "APFSDS-kanonspatronen" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "APFSDS-kanonspatronen Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "APFSDS-kanonspatronen Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "HVAPFSDS-kanonspatronen" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "HVAPFSDS-kanonspatronen Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "HVAPFSDS-kanonspatronen Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Kanon-autolader" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Kanon-autolader Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Kanon-autolader Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Kanon-snellader" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Kanon-snellader Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Kanon-snellader Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Verbeterd laserscherpstellen" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Verbeterd laserscherpstellen Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Verbeterd laserscherpstellen Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Hoog-energetische laseruitzender" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Hoog-energetische laseruitzender M2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Hoog-energetische laseruitzender Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Thermopool-stimulator" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Thermopool-stimulator Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Thermopool-stimulator Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Hete vlamgel" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Hete vlamgel Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Hete vlamgel Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Superhete vlamgel" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Superhete vlamgel Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Superhete vlamgel Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Vlammenwerper-autolader" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Vlammenwerper-autolader Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Vlammenwerper-autolader Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Zware vlammenwerper - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Zware houwitser - grondschudder" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Draaihouwitser - hellestorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Doelverkrijg-artillerie-granaten" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Doelverkrijg-artillerie-granaten Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Doelvoorspel-artillerie-granaten" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "HE-houwitsergranaten" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "HE-houwitsergranaten Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "HE-houwitsergranaten Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "HEAP-houwitsergranaten" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "HEAP-houwitsergranaten Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "HEAP-houwitsergranaten M3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Houwitser-autolader" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Houwitser-autolader Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Houwitser-autolader Mk3" @@ -8550,57 +8567,57 @@ msgid "Fast Loader" msgstr "Snelle lader" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - zaklamp" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Verharde MG-kogels" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "APDSB MG-kogels" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "APDSB MG-kogels Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "APDSB MG-kogels Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Met wolfraam beslagen MG-kogels" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Met wolfraam beslagen MG-kogels Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Met wolfraam beslagen MG-kogels Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "MG-kogels van verarmd uranium" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "MG-kogels van verarmd uranium Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Kettinglader-verbetering" @@ -8609,142 +8626,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Snelvuur-kettinglader-verbetering" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Hypervuur-kettinglader-verbetering" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Doelvoorspelraketten" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Zoek & vernietig-raketten" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Geavanceerde raket-springkop" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Geavanceerde raket-springkop Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Geavanceerde raket-springkop Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Geavanceerde raket-toewijzingssysteem" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Geavanceerde raket-toewijzingssysteem Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Geavanceerde raket-toewijzingssysteem Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "HEAP raket-springkop" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "HEAP raket-springkop Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "HEAP raket-springkop Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Verbeterd raketlaadsysteem" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Mortierdoelcomputer" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Warmtebeeld-mortiergranaten" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Doelverkrijg-mortiergranaten" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "HE-mortiergranaten" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "HE-mortiergranaten Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "HE-mortiergranaten Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "HEAP-mortiergranaten" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "HEAP-mortiergranaten Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "HEAP-mortiergranaten Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Mortier-autolader" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Mortier-autolader Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Mortier-autolader Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Snelle mortierlader" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Zware mortier - Pothond" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Draaimortier - Peperbus" @@ -8753,368 +8770,368 @@ msgid "Target Prediction Computer" msgstr "Doelvoorspelcomputer" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Verharde railsdart" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Verharde railsdart Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Verharde railsdart Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Railsgeweer vuurfrequentie" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Railsgeweer vuurfrequentie Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Railsgeweer vuurfrequentie Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Gestabiliseerde mini-raketten" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Gestabiliseerde mini-raketten Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "HE-mini-raketten" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "HE-mini-raketten Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "HE-mini-raketten Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "HEAP-mini-raketten" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "HEAP-mini-raketten Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "HEAP-mini-raketten Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Snelvuur-mini-raketten" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Snelvuur-mini-raketten Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Snelvuur-mini-raketten Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Snelvuur-mini-raketten" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Snelvuur-mini-raketten Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Snelvuur-mini-raketten Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Verbeterde raket-draad-besturing" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Raket-laser-aanwijzer" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Warmtebeeld-raketten" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "HEAT-raket-springkop" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "HEAT-raket-springkop Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "HEAT-raket-springkop Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "HESH-raket-springkop" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "HESH-raket-springkop Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "HESH-raket-springkop Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Raket-autolader" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Raket-autolader Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Raket-autolader Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Lansier-AT-raket" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Bunkerbeuker-raket" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Tankdoderraket" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 #, fuzzy msgid "Machinegun Artifact" msgstr "Artefact van machinegeweer" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Commandocentrum van het Nieuw Paradigma" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Collectief commandocentrum" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Aaseters fabriek" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Aaseters geweertoren" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Aaseters horizontale muur" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Aaseters energiegenerator" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Aaseters raketput" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Aaseters AT-raketput" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Aaseters bunker" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Aaseters hoekmuur" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Aaseters vlamtoren" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Aaseters vlamtoren einde" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Uitkijktoren" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Kanontoren" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefact" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Olievoorraad" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Brug" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Kapotte fabriek" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Warenhuis" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Hut" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Olievat" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Wrak" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Kapotte tank" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Kapotte brug" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Kapot busje" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Kapot voertuig" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Kapotte tanker" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratorium voor cyborgs" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratorium voor geavanceerde oorlogsvoering" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Genielaboratorium" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratorium voor robotica" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratorium voor laseroptica" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratorium voor elektronica" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Chemisch laboratorium" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Geavanceerde oorlogsvoering" @@ -9135,7 +9152,7 @@ msgid "MRL Emplacement" msgstr "MRL-emplacement" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Railsgeweer-emplacement" @@ -9144,50 +9161,50 @@ msgid "Angel Missile Emplacement" msgstr "Angelraket-emplacement" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Aartsengelraket-emplacement" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 #, fuzzy msgid "Repair Turret Cobra Tracks" msgstr "Commandokoepel Adder Banden" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9196,37 +9213,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Zaklamp" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "VTOL-zaklamp" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Draai-MG-bunker" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Raketsilo" @@ -9508,353 +9525,1202 @@ msgstr "Wacht even terwijl de fabriek de nieuwe eenheden produceert" msgid "Congratulations commander - you are ready for your first mission" msgstr "Gefeliciteerd commandant - je bent nu klaar voor je eerste missie" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "Binnenkomende uitzending" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" -msgstr "Adder HMG Wielen" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Projectdoelen" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" -msgstr "Adder Commandokoepel Banden" +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Ploeg Alfa uitgeroeid" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "Commadant, wij hebben graf nieuws." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "Ze moeten gestopt worden!" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "Vernietig daarna het kamp." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +#, fuzzy +msgid "Team Alpha approaches Beta Base" +msgstr "Ploeg Alfa uitgeroeid" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "Binnenkomende uitzending" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Gefeliciteerd met uw succes van het evacueren van de Beta Basis." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "Instructies beginnen:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Toon volgende commandant" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Success, commandant." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Nucleaire reactor" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" -msgstr "" +msgid "Viper HMG Wheels" +msgstr "Adder HMG Wielen" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" -msgstr "" +msgid "Viper Command Turret Tracks" +msgstr "Adder Commandokoepel Banden" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" -msgstr "Adder Banden Lansier" +msgid "Mantis Heavy Cannon Tracks" +msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" -msgstr "" +msgid "Viper Tracks Lancer" +msgstr "Adder Banden Lansier" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +msgid "Cobra Tracks Mini-Pod" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Adder Machinegeweer Halfband" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Adder Vlammenwerper Halfband" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Zwaar Machinegeweer Adder Wielen" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 #, fuzzy msgid "Tank Killer Mantis Hover" msgstr "Tankdoderraket" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 #, fuzzy msgid "Heavy Machinegun Cobra Tracks" msgstr "Zwaar Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 #, fuzzy msgid "Heavy Cannon Cobra Hover" msgstr "Zwaar kanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 #, fuzzy msgid "Heavy Machinegun Cobra Wheels" msgstr "Zwaar Machinegeweer Adder Wielen" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 #, fuzzy msgid "Heavy Machinegun Cobra Hover" msgstr "Zwaar machinegeweer-wachttoren" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Dubbel Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 #, fuzzy msgid "Medium Cannon Cobra Hover" msgstr "Gemiddeld kanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 #, fuzzy msgid "Medium Cannon Scorpion Hover" msgstr "Gemiddelde carrosserie - Schorpioen" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 #, fuzzy msgid "Medium Cannon Scorpion Tracks" msgstr "Middelkanon Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 #, fuzzy msgid "Medium Cannon Python Hover" msgstr "Gemiddeld kanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 #, fuzzy msgid "Heavy Cannon Python Hover" msgstr "Zwaar kanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 #, fuzzy msgid "Tank Killer Vengeance Tracks" msgstr "Tankdoderraket" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 #, fuzzy msgid "Heavy Cannon Tiger Tracks" msgstr "Middelkanon Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 #, fuzzy msgid "Needle Gun Tiger Tracks" msgstr "Middelkanon Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 #, fuzzy msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "Clusterbommenluik" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 #, fuzzy msgid "VTOL Bunker Buster Bug VTOL" msgstr "Bunkerbeuker" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 #, fuzzy msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "Clusterbommenluik" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 #, fuzzy msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Bunkerbeuker" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9864,7 +10730,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "Hypersnelheidskanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9874,7 +10740,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "Hypersnelheidskanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9884,141 +10750,141 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "Hypersnelheidskanon" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 #, fuzzy msgid "Repair Turret Mantis Tracks" msgstr "Reparatiecentrum" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 #, fuzzy msgid "Heavy Cannon Scorpion Tracks" msgstr "Zwaar Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 #, fuzzy msgid "Bunker Buster Scorpion VTOL" msgstr "Bunkerbeuker" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Commandokoepel Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 #, fuzzy msgid "Command Turret Cobra Tracks" msgstr "Commandokoepel Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 #, fuzzy msgid "Command Turret Scorpion Tracks" msgstr "Commandokoepel Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 #, fuzzy msgid "Command Turret Mantis Tracks" msgstr "Commandokoepel Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 #, fuzzy msgid "Heavy Cannon Mantis Tracks" msgstr "Zwaar Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 #, fuzzy msgid "Tank Killer Mantis Tracks" msgstr "Tankdoderraket" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" msgstr "Zwaar Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 #, fuzzy msgid "Bunker Buster Cobra Tracks" msgstr "Bunkerbeuker-raket" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 #, fuzzy msgid "Bunker Buster Scorpion Tracks" msgstr "Bunkerbeuker-raket" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 #, fuzzy msgid "Bunker Buster Mantis Tracks" msgstr "Bunkerbeuker-raket" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 #, fuzzy msgid "Lancer Viper Tracks" msgstr "Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 #, fuzzy msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Sensor Cobra Halfband" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 #, fuzzy msgid "Mini-Rocket Cobra Tracks" msgstr "Mini-pod-raketten" @@ -10029,7 +10895,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Mini-raket-artillerie Adder Wielen" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 #, fuzzy msgid "Inferno Cobra Half-Tracks" msgstr "Sensor Cobra Halfband" @@ -10040,60 +10906,179 @@ msgid "HPV Cannon Python Hover" msgstr "Kanon-autolader" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 #, fuzzy msgid "Gauss Cannon Python Tracks" msgstr "Middelkanon Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 #, fuzzy msgid "Pulse Laser Tiger Tracks" msgstr "Vlammewerper Adder Halfband" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 #, fuzzy msgid "Heavy Laser Tiger Tracks" msgstr "Zwaar Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 #, fuzzy msgid "Gauss Cannon Wyvern Tracks" msgstr "Middelkanon Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 #, fuzzy msgid "Heavy Laser Wyvern Tracks" msgstr "Zwaar Machinegeweer Adder Banden" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Machinegeweer Adder Halfband" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Vlammewerper Adder Halfband" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "Sensor Cobra Halfband" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "Middelkanon Adder Banden" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "Kanon-autolader" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "Aanvalskanonnier" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "Middelkanon Adder Banden" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Zwaar Machinegeweer Adder Banden" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "Aanvalskanon" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "Vlammewerper Adder Halfband" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "Vlammewerper Adder Halfband" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +#, fuzzy +msgid "Rail Gun Tiger Hover" +msgstr "Middelkanon Adder Banden" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "Vlammewerper Adder Halfband" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Middelkanon Adder Banden" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "Zwaar Machinegeweer Adder Banden" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Sensor Cobra Halfband" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Mini-raket-artillerie Adder Wielen" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Fosforbommenluik" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Fosforbommenluik" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Gemiddelde carrosserie - Vergelding" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "Wraak" + #: data/mp/messages/resmessages12.rmsg:58 #, fuzzy msgid "Construction speed +10%" @@ -10747,7 +11732,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10778,7 +11763,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Mini-raket-artillerie Adder Wielen" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10791,687 +11776,701 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 #, fuzzy msgid "Inferno Bunker" msgstr "Lansierbunker" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 #, fuzzy msgid "Pulse Laser Tower" msgstr "Vlammewerper Adder Halfband" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 #, fuzzy msgid "Seraph Missile Array" msgstr "Verbetert de nauwkeurigheid van raketten" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Mini-pod-raket-wachttoren" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 #, fuzzy msgid "VTOL Cluster Bomb Bay" msgstr "Clusterbommenluik" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 #, fuzzy msgid "Collective Corner Wall" msgstr "Collectief commandocentrum" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 #, fuzzy msgid "Nexus Corner Wall" msgstr "Aaseters hoekmuur" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Spel" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 #, fuzzy msgid "Hyper Velocity Cannon Emplacement" msgstr "Hypersnelheidskanon" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 #, fuzzy msgid "Flamer Tower" msgstr "Vlammewerper-wachttoren" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 #, fuzzy msgid "Hyper Velocity Cannon Hardpoint" msgstr "Hypersnelheidskanon" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 #, fuzzy msgid "Automated Manufacturing" msgstr "Geautomatiseerde fabrieksproductie" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 #, fuzzy msgid "Robotic Manufacturing" msgstr "Produceer" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 #, fuzzy msgid "Robotic Manufacturing Mk2" msgstr "Gerobotiseerde VTOL-productie Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 #, fuzzy msgid "Robotic Manufacturing Mk3" msgstr "Gerobotiseerde VTOL-productie Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 #, fuzzy msgid "Advanced Manufacturing" msgstr "Geavanceerde oorlogsvoering" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 #, fuzzy msgid "Advanced Manufacturing Mk2" msgstr "Geavanceerde VTOL-productie Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 #, fuzzy msgid "Advanced Manufacturing Mk3" msgstr "Geavanceerde VTOL-productie Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Geautomatiseerde Reparatie Faciliteit Mk2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Geautomatiseerde Reparatie Faciliteit Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "Onderzoekscentrum" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Robotische Reparatie Faciliteit Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "Onderzoekscentrum" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Robotische Reparatie Faciliteit Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 #, fuzzy msgid "Advanced Repair Facility Mk2" msgstr "Geavanceerde raket-springkop Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 #, fuzzy msgid "Advanced Repair Facility Mk3" msgstr "Geavanceerde raket-springkop Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Automatische-Reparatie" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Zwaare Reparatie Toren" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Nexus Indringer Programma" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 #, fuzzy msgid "Cluster Bomb Bay" msgstr "Clusterbommenluik" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 #, fuzzy msgid "HE Bomb Shells" msgstr "HE-mortiergranaten" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 #, fuzzy msgid "Improved Bomb Warhead" msgstr "Verbeterd sensorbereik" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 #, fuzzy msgid "Advanced Bomb Warhead" msgstr "Geavanceerde raket-springkop" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 #, fuzzy msgid "Howitzer Fast Loader" msgstr "Snelle mortierlader" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 #, fuzzy msgid "Rail Target Prediction Computer" msgstr "Doelvoorspelcomputer" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "HE-mini-raketten" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "HE-mini-raketten Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "HE-mini-raketten Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 #, fuzzy msgid "Assault Gun Tower" msgstr "Aanvalskanonnier" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "Zwaar kanon" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 #, fuzzy msgid "Bunker Buster Cobra Hover" msgstr "Bunkerbeuker-raket" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Sensorverbetering Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "Sensorverbetering Mk2" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 #, fuzzy msgid "Vapor Turbine Generator Mk2" msgstr "Gasturbine Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 #, fuzzy msgid "Gas Turbine Generator Mk2" msgstr "Gasturbine Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 #, fuzzy msgid "Gas Turbine Generator Mk3" msgstr "Gasturbine Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 #, fuzzy msgid "Vapor Turbine Generator Mk3" msgstr "Gasturbine Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 #, fuzzy msgid "Thermite Flamer Cyborg" msgstr "Thermietbommenluik" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 #, fuzzy msgid "Grenadier Cyborg" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Genist" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Cyborg-monteur" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 #, fuzzy msgid "Incendiary Howitzer Emplacement" msgstr "Angelraket-emplacement" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 #, fuzzy msgid "Plasmite Flamer Bunker" msgstr "Vlammewerperbunker" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 #, fuzzy msgid "Incendiary Mortar Pit" msgstr "HEAP-mortiergranaten" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Zwaare Laser" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "VTOL Zwaare Laser" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Wijdspectrum-sensor" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Wijdspectrum-sensor-toren" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "Zware carrosserie - Tijger" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 #, fuzzy msgid "EMP Mortar Pit" msgstr "HEAP-mortiergranaten" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 #, fuzzy msgid "Stormbringer Emplacement" msgstr "Railsgeweer-emplacement" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 #, fuzzy msgid "Twin Assault Gun Hardpoint" msgstr "Aanvalskanonnier" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 #, fuzzy msgid "VTOL Plasmite Bomb Bay" msgstr "Thermietbommenluik" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 #, fuzzy msgid "VTOL EMP Missile Launcher" msgstr "HEAP raket-springkop" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Adder Commandokoepel Banden" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "Adder Commandokoepel Banden" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Commandokoepel Adder Banden" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "Hypersnelheidskanon" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "Hypersnelheidskanon" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 #, fuzzy msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "Hypersnelheidskanon" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Mini-raket-artillerie Adder Wielen" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "Zwaar kanon" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Gemiddelde carrosserie - Vergelding" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11605,32 +12604,41 @@ msgstr "" msgid "Latin" msgstr "Latijn" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 #, fuzzy msgid "Enter password here" msgstr "Vul eerst het wachtwoord in" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, fuzzy, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Kan niet communiceren met de lobby server! is TCP port 9990 open?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Spel opslaan" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11781,15 +12789,15 @@ msgstr "gastheer" msgid "go directly to host screen" msgstr "Ga direct naar het gastheer scherm" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Speler" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nieuw voertuig" @@ -11828,18 +12836,18 @@ msgstr "Motoruitvoer" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Gewicht" @@ -11853,188 +12861,188 @@ msgstr "Totale energie nodig" msgid "Total Body Points" msgstr "Totale carrosseriepunten" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Energieverbruik" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Vervoer" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Sensorbereik" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Sensorvermogen" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM-energie" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Bouw-punten" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Bereik" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Schade" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Vuursnelheid" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Luchtsnelheid" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Wegsnelheid" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Snelheid buiten de weg" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Watersnelheid" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Wapens" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Systemen" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Speler verliet het spel" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Speler gevallen" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Kan niet bouwen. De oliebron staat in brand." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Schade %d%% - Ervaring %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Schade %d%% - Ervaring %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Vrachtwagen bevel gegeven om jaknikker te bouwen." -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Vrachtwagen bevel gegeven om jaknikker te bouwen." -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Vrachtwagen bevel gegeven om jaknikker te bouwen." -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Eenheid verloren!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Gebouw hersteld" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Groep %u geselecteerd - %u eenheid" msgstr[1] "Groep %u geselecteerd - %u eenheden" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u eenheid aan groep %u toegewezen" msgstr[1] "%u eenheden aan groep %u toegewezen" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Gecentreerd op groep %u - %u eenheid" msgstr[1] "Gecentreerd op groep %u - %u eenheden" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Rekruut" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Groen" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Geoefend" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Beroeps" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Professioneel" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteraan" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Speciaal" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Held" @@ -12080,11 +13088,11 @@ msgstr "OEFENPOTJES" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Terug" @@ -12164,19 +13172,19 @@ msgid "Video Playback" msgstr "Video afspelen" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "1x" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "2x" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Volledig scherm" @@ -12185,43 +13193,42 @@ msgid "Screen Shake" msgstr "Scherm schudden" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Aan" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Uit" @@ -12231,153 +13238,152 @@ msgid "Fog" msgstr "Mist" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Nevel" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Oorlogsmist" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Ondertitels" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Schaduwen" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "SPELINSTELLINGEN" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Stemvolume" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Effectenvolume" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Muziekvolume" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "SPELINSTELLINGEN" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Grafische modus*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Venster" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "Resolutie*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Structuurgrootte" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "Verticale synchr*" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* Gaat in na herstart" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "SPELINSTELLINGEN" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "Draai knoppen om" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "Cursor opsluiten" -#: src/frontend.c:1157 +#: src/frontend.c:1149 #, fuzzy msgid "Colored Cursors*" msgstr "Gekleurde Muis wijzer *" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "Verwissel Muis Knoppen" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "SPELINSTELLINGEN" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Moeilijkheidsgraad" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Makkelijk" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Normaal" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Moeilijk" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Scrollsnelheid" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Taal" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Speelkleur" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "SPELINSTELLINGEN" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12410,105 +13416,105 @@ msgstr "Speler %u heeft zichzelf met cheats (debugmenu) een nieuw voorwerp gegev msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Speler %u heeft zichzelf met cheats (debugmenu) een nieuw eenheid gegeven: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Commandanten (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Inlichtingen (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Produceer (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Ontwerp (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Onderzoek (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Bouw (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energie" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "Tegel" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "Tegels op kaart plaatsen" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Eenheid" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "Eenheid op kaart plaatsen" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Gebouw" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "Gebouwen op kaart plaatsen" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Kenm." -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "Kenmerken op kaart plaatsen" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "Spel pauzeren of verdergaan" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "Hoogte van alle kaartobjecten uitlijnen" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Afsluiten" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Spel verlaten" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Voortgangsbalk" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Fabrieksafleverpunt" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Productie herhalen" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12552,6 +13558,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12567,7 +13581,7 @@ msgid "Power Accrued" msgstr "Energie toegenomen" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "GEPAUZEERD" @@ -12694,291 +13708,291 @@ msgstr "VTOL-fabrieksproductie toewijzen" msgid "Circle" msgstr "Cirkel" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Het spijt me, maar vals spelen mag niet in spelletjes met meerdere spelers." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Waarschuwing! deze cheat werkt niet goed. Wij raden aan deze NIET te gebruiken." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Laat ons zien wat jij ziet!" -#: src/keybind.c:226 +#: src/keybind.c:227 #, fuzzy msgid "Fine, weapon & sensor display is off!" msgstr "Goed, sensorweergave is uit!" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "Speler %u heeft zichzelf met cheats (debugmenu) een nieuw eenheid gegeven: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(speler %u) gebruikt cheat :%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Spijkerhard!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Doe het rustig aan!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 grote jongens!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Overweldigende energie" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Terug naar normaal!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Wordt moeilijk!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Twee keer zo fijn!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS-weergave aan." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS-weergave uit." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Oneindige energie uit" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Oneindige energie aan" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Alle onderdelen beschikbaar" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Mist aan" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Mist uit" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Waarschuwing! Deze cheat kan verschrikelijke problemen veroorzaken! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "Einde Missie." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "CHEATS ZIJN NU INGESCHAKELD!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "CHEATS ZIJN NU UITGESCHAKELD!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "God Modus AAN" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "God Modus UIT" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Kijk richting het noorden" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, fuzzy, c-format msgid "Trap cursor %s" msgstr "Cursor opsluiten" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "ALLES onderzocht!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Speler %u) gebruikt cheat :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "Onderzocht" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demomodus uit - Terug naar normaal spel" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "Debug menu is open" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Kan geen grondstofophalers vinden!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "O, het weer buiten is vreselijk... SNEEUW" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Spetter spitter spater, lekker in het water... REGEN" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Weerbericht: heldere hemel in alle richtingen... GEEN WEER" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 #, fuzzy msgid "All enemies destroyed by cheating!" msgstr "Vijand vernietigd door vals spelen!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Kijk op spelers HK, richting het NOORDEN" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Kan het HK niet vinden!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Het spijt me, maar vals spelen mag niet in spelletjes met meerdere spelers." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Speelsnelheid herstellen" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Speelsnelheid toegenomen tot %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Speelsnelheid verminderd tot %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Bouwmenu zal opnieuw openen" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Bouwmenu zal niet opnieuw openen" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar toont vriend-en-vijand-kleuren" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar toont spelerskleuren" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar toont enkel objecten" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar toon terrein en hoogte" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar toont terrein" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar toont terrein" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar toont hoogte" @@ -13400,8 +14414,8 @@ msgstr "Spel vervolgen" msgid "GAME SAVED :" msgstr "SPEL OPGESLAGEN!" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, fuzzy, c-format msgid "You found %u power in an oil drum." msgstr "jij hebt %u energie gevonden in een olie ton" @@ -13713,21 +14727,21 @@ msgstr "De gastheer heeft %s uit het spel verwijderd!" msgid "Host is Starting Game" msgstr "Gastheer start spel" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Spelers" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13736,27 +14750,27 @@ msgstr "" msgid "Players Still Joining" msgstr "Spelers komen nog steeds binnen" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s heeft het spel verlaten" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s neemt deel aan het spel" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Systeem bericht:" @@ -13843,48 +14857,48 @@ msgstr "Geef energie aan speler" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Bondgenootschappen toestaan" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Groen" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oranje" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Grijs" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Zwart" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Rood" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Blauw" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Roze" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cyaan" @@ -14027,12 +15041,12 @@ msgstr "JE HEBT GEWONNEN!" msgid "YOU WERE DEFEATED!" msgstr "JE BENT VERSLAGEN!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Baken ontvangen van %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Baken %d" @@ -14061,63 +15075,63 @@ msgstr "Kon geen sensoreenheden vinden!" msgid "Unable to locate any Commanders!" msgstr "Kon geen commandanten vinden!" -#: src/structure.c:2838 +#: src/structure.c:2837 #, fuzzy msgid "Command Control Limit Reached - Production Halted" msgstr "Commando controlelimiet bereikt - Productie gestopt" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Eenheid toegewezen" msgstr[1] "%s - %u Eenheden toegewezen" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Schade %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Verbonden met %u van %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Elektronisch beschadigd" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Elektronische onderscheiding - Zichtbaarheidsverslag" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Fabrieksonderscheiding - Aandrijving" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Fabrieksonderscheiding - Carrosserie" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Fabrieksonderscheiding - Wapen" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Fabrieksonderscheiding - Niets" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Reparatie-onderscheiding - Reparatie" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Reparatie-onderscheiding - Niets" @@ -14126,7 +15140,7 @@ msgstr "Reparatie-onderscheiding - Niets" msgid "Launch Transport" msgstr "Vervoer wegsturen" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Versterkingen landen" @@ -14158,6 +15172,18 @@ msgstr " - Gebouwd %s" msgid "Version %s%s%s%s" msgstr "Versie %s%s%s%s" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "Fosforbommenluik" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "Fosforbommenluik" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "mod" + #, fuzzy #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Speler %u Heeft de verkeerde versie van het spel. Automatisch verwijderd van het spel." @@ -14212,9 +15238,6 @@ msgstr "Versie %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "Stop geluid voor meerdere spelers" -#~ msgid "Game" -#~ msgstr "Spel" - #~ msgid "Mayhem" #~ msgstr "Rotzooi" @@ -14460,9 +15483,6 @@ msgstr "Versie %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Inkomende luchtaanval" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Ploeg Alfa uitgeroeid" - #~ msgid "Team Beta Eradicated" #~ msgstr "Ploeg Bèta uitgeroeid" diff --git a/po/pl.po b/po/pl.po index b4824c42f..7e26cc133 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,10 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: Warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2010-03-14 09:16+0100\n" +"POT-Creation-Date: 2010-05-29 21:39+0200\n" +"PO-Revision-Date: 2010-05-28 10:43+0100\n" "Last-Translator: MichaÅ‚ D. aka Emdek \n" "Language-Team: Polish \n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -255,7 +256,7 @@ msgstr "Umocnienie uzbrojone w moździerz" #: data/mp/messages/strings/resstrings.txt:203 #: data/mp/messages/strings/resstrings.txt:209 msgid "Assigned automatically to nearest sensor or CB tower" -msgstr "Przypisany automatycznie do najbliższego sensora lub wieży CB" +msgstr "Przypisany automatycznie do najbliższego radaru lub wieży CB" #: data/base/messages/resmessages12.rmsg:7 #: data/base/messages/resmessages12.rmsg:20 @@ -428,7 +429,7 @@ msgstr "Umocnienie uzbrojone w ciężki karabin" #: data/mp/messages/strings/resstrings.txt:329 #: data/mp/messages/strings/resstrings.txt:335 msgid "Automatically targets enemies within sensor range" -msgstr "Automatycznie namierza wroga w zasiÄ™gu sensora" +msgstr "Automatycznie namierza wroga w zasiÄ™gu radaru" #: data/base/messages/resmessages12.rmsg:33 #: data/base/messages/resmessages12.rmsg:46 @@ -502,7 +503,7 @@ msgstr "SiÅ‚a obrony: Wysoka" #: data/base/messages/resmessages12.rmsg:44 #: data/mp/messages/resmessages12.rmsg:44 msgid "Armored hardpoint with Lancer AT missile" -msgstr "Umocnienie uzbrojone w rakiety AT Lancer" +msgstr "Umocnienie uzbrojone w rakiety Lancer AT" #: data/base/messages/resmessages12.rmsg:56 #: data/base/messages/resmessages23.rmsg:43 @@ -568,7 +569,7 @@ msgstr "CB kontynuuje ostrzaÅ‚ dopóki bateria wroga nie zostanie zniszczona" #: data/mp/messages/resmessages23.rmsg:56 #: data/mp/messages/resmessages3.rmsg:524 msgid "CB Sensor Improved" -msgstr "Sensor CB ulepszony" +msgstr "Radar CB ulepszony" #: data/base/messages/resmessages12.rmsg:83 #: data/base/messages/resmessages2.rmsg:447 @@ -595,7 +596,7 @@ msgstr "ZwiÄ™ksza zasiÄ™g CB" #: data/mp/messages/resmessages23.rmsg:59 #: data/mp/messages/resmessages3.rmsg:527 msgid "All CB sensors upgraded automatically" -msgstr "Wszystkie sensory CB ulepszone automatycznie" +msgstr "Wszystkie radary CB ulepszone automatycznie" #: data/base/messages/resmessages12.rmsg:95 #: data/base/messages/resmessages12.rmsg:212 @@ -719,7 +720,7 @@ msgstr "Nowa broÅ„ dostÄ™pna" #: data/base/messages/resmessages12.rmsg:122 #: data/mp/messages/resmessages12.rmsg:122 msgid ".50-calibre heavy machinegun" -msgstr "Ciężki karabin maszynowy kaliber .50mm" +msgstr "Ciężki karabin maszynowy" #: data/base/messages/resmessages12.rmsg:123 #: data/base/messages/resmessages1.rmsg:617 @@ -927,7 +928,7 @@ msgstr "Nowa broÅ„ artyleryjska dostÄ™pna" #: data/mp/messages/resmessages2.rmsg:902 #: data/mp/messages/strings/resstrings.txt:933 msgid "May be assigned to a sensor" -msgstr "Może być przypisana do sensora" +msgstr "Może być przypisana do radaru" #: data/base/messages/resmessages12.rmsg:149 #: data/base/messages/resmessages1.rmsg:669 @@ -1054,7 +1055,7 @@ msgstr "Nowa broÅ„ rakietowa dostÄ™pna" #: data/base/messages/resmessages12.rmsg:187 #: data/mp/messages/resmessages12.rmsg:187 msgid "Rocket artillery; can be assigned to a sensor" -msgstr "Artyleria rakietowa; może byc przypisana do sensora" +msgstr "Artyleria rakietowa; może być przypisana do radaru" #: data/base/messages/resmessages12.rmsg:188 #: data/mp/messages/resmessages12.rmsg:188 @@ -1123,7 +1124,7 @@ msgstr "ZwiÄ™ksza obrażenia dziaÅ‚" #: data/base/messages/resmessages12.rmsg:239 #: data/mp/messages/resmessages12.rmsg:239 msgid "Rocket tracks the laser designator to the target" -msgstr "Rakieta wysyÅ‚a celownik laserowy do celu" +msgstr "Rakieta Å›ledzi cel używajÄ…c celownika laserowego" #: data/base/messages/resmessages12.rmsg:240 #: data/base/messages/resmessages1.rmsg:747 @@ -1389,7 +1390,7 @@ msgstr "Uzbrojony w miotacz ognia" #: data/base/messages/resmessages1.rmsg:83 #: data/mp/messages/resmessages1.rmsg:83 msgid "Armed with Lance Anti-Tank rocket" -msgstr "Uzbrojony w rakiety AT Lancer" +msgstr "Uzbrojony w rakiety Lancer AT" #: data/base/messages/resmessages1.rmsg:95 #: data/base/messages/resmessages2.rmsg:56 @@ -1448,7 +1449,7 @@ msgstr "Bunkier uzbrojony w karabin maszynowy" #: data/base/messages/resmessages1.rmsg:148 msgid "Armored bunker with Lancer AT rocket" -msgstr "Bunkier uzbrojony w rakiety AT Lancer" +msgstr "Bunkier uzbrojony w rakiety Lancer AT" #: data/base/messages/resmessages1.rmsg:161 #: data/mp/messages/resmessages1.rmsg:161 @@ -1582,7 +1583,7 @@ msgstr "Produkcja Cyborgów ulepszona" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Automatyczna produkcja Cyborgów" @@ -1614,8 +1615,8 @@ msgstr "Wszystkie Fabryki Cyborgów ulepszone automatycznie" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Fabryka Cyborgów" @@ -1645,7 +1646,7 @@ msgstr "Produkcja ulepszona" #: data/base/messages/resmessages1.rmsg:304 #: data/mp/messages/resmessages1.rmsg:304 msgid "Factory module enables medium and large bodies" -msgstr "ModuÅ‚ Fabryki pozwala na produkcjÄ™ Å›rednich i cieżkich kadÅ‚ubów" +msgstr "ModuÅ‚ Fabryki pozwala na produkcjÄ™ Å›rednich i ciężkich kadÅ‚ubów" #: data/base/messages/resmessages1.rmsg:305 #: data/base/messages/resmessages1.rmsg:318 @@ -1673,7 +1674,7 @@ msgstr "Produkcja pojazdów ulepszona" #: data/base/messages/strings/names.txt:794 #: data/mp/messages/resmessages1.rmsg:318 msgid "Automated Factory Production" -msgstr "Automatyczna produkcja pojazdów" +msgstr "Automatyzacja produkcji pojazdów" #: data/base/messages/resmessages1.rmsg:319 #: data/base/messages/resmessages2.rmsg:358 @@ -1776,7 +1777,7 @@ msgstr "Zwieksza odporność na obrażenia" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Wzmocnione materiaÅ‚y struktur bazy" @@ -1949,7 +1950,7 @@ msgstr "Ulepszony silnik pojazdów" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "System wtrysku paliwa" @@ -2106,7 +2107,7 @@ msgstr "PrÄ™dkość: Niska" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "NapÄ™d koÅ‚owy" @@ -2197,7 +2198,7 @@ msgstr "Pociski przebijajÄ…ce pancerz" #: data/mp/messages/resmessages1.rmsg:669 #: data/mp/messages/resmessagesall.rmsg:343 msgid "May be targeted directly or assigned to a sensor turret or tower" -msgstr "Może strzelać samodzielnie lub z pomocÄ… sensora lub wieży" +msgstr "Może strzelać samodzielnie lub z pomocÄ… radaru lub wieży" #: data/base/messages/resmessages1.rmsg:681 #: data/mp/messages/resmessages1.rmsg:682 @@ -2464,17 +2465,17 @@ msgstr "Poszerza zasiÄ™g CB VTOL " #: data/mp/messages/resmessages3.rmsg:540 #: data/mp/messages/strings/resstrings.txt:516 msgid "All VTOL CB sensors upgraded automatically" -msgstr "Wszystkie sensory CB VTOL ulepszone automatycznie" +msgstr "Wszystkie radary CB VTOL ulepszone automatycznie" #: data/base/messages/resmessages23.rmsg:96 #: data/mp/messages/resmessages23.rmsg:96 msgid "VTOL Strike Tower detects approaching enemies" -msgstr "VTOL Strike Tower wykrywa zbliżajÄ…cego siÄ™ wroga" +msgstr "Wieża uderzeniowa VTOL wykrywa zbliżajÄ…cego siÄ™ wroga" #: data/base/messages/resmessages23.rmsg:97 #: data/mp/messages/resmessages23.rmsg:97 msgid "Assigned VTOLs attack the enemy units" -msgstr "Przypisane VTOL atakujÄ… jednostki wroga" +msgstr "Przypisane jednostki VTOL atakujÄ… jednostki wroga" #: data/base/messages/resmessages23.rmsg:98 #: data/mp/messages/resmessages23.rmsg:98 @@ -2501,7 +2502,7 @@ msgstr "Nowa wieżyczka systemowa dostÄ™pna" #: data/base/messages/resmessages23.rmsg:109 #: data/mp/messages/resmessages23.rmsg:109 msgid "VTOL Strike turret used to spot targets" -msgstr "VTOL Strike Turret jest używany do zaznaczania celów" +msgstr "Wieżyczka uderzeniowa VTOL jest używana do rozpoznawania celów" #: data/base/messages/resmessages23.rmsg:110 #: data/mp/messages/resmessages23.rmsg:110 @@ -2511,7 +2512,7 @@ msgstr "Przypisane VTOL atakujÄ… zaznaczony cel" #: data/base/messages/resmessages23.rmsg:111 #: data/mp/messages/resmessages23.rmsg:111 msgid "Select new targets to continue the VTOL strikes" -msgstr "Zaznacz nowe cele aby kontynuować nalot" +msgstr "Zaznacz nowe cele aby kontynuować naloty" #: data/base/messages/resmessages23.rmsg:121 #: data/base/messages/resmessages2.rmsg:459 @@ -2522,7 +2523,7 @@ msgstr "Zaznacz nowe cele aby kontynuować nalot" #: data/mp/messages/resmessages3.rmsg:550 #: data/mp/messages/strings/resstrings.txt:527 msgid "VTOL Strike Improved" -msgstr "VTOL Strike ulepszony" +msgstr "Wieża uderzeniowa VTOL ulepszona" #: data/base/messages/resmessages23.rmsg:122 #: data/mp/messages/resmessages23.rmsg:122 @@ -2538,7 +2539,7 @@ msgstr "Ulepszony system rozpoznawania celów" #: data/mp/messages/resmessages3.rmsg:552 #: data/mp/messages/strings/resstrings.txt:529 msgid "Extends VTOL Strike Range" -msgstr "Rozszerza zasiÄ™g VTOL Strike" +msgstr "Rozszerza zasiÄ™g wieży uderzeniowej VTOL" #: data/base/messages/resmessages23.rmsg:124 #: data/base/messages/resmessages2.rmsg:462 @@ -2549,7 +2550,7 @@ msgstr "Rozszerza zasiÄ™g VTOL Strike" #: data/mp/messages/resmessages3.rmsg:553 #: data/mp/messages/strings/resstrings.txt:530 msgid "All VTOL Strike sensors upgraded automatically" -msgstr "Wszystkie sensory VTOL Strike ulepszone automatycznie" +msgstr "Wszystkie radary wież uderzeniowych VTOL ulepszone automatycznie" #: data/base/messages/resmessages23.rmsg:134 #: data/base/messages/resmessages2.rmsg:641 @@ -2616,7 +2617,7 @@ msgstr "Wszystkie bronie AA ulepszone automatycznie" #: data/mp/messages/strings/resstrings.txt:730 #: data/mp/messages/strings/resstrings.txt:736 msgid "New Bomb Bay Available" -msgstr "Nowy przedziaÅ‚ bombowy dostÄ™pny" +msgstr "Nowy luk bombowy dostÄ™pny" #: data/base/messages/resmessages23.rmsg:148 #: data/mp/messages/resmessages23.rmsg:148 @@ -2657,7 +2658,7 @@ msgstr "ZwiÄ™ksza celność nalotu bombowego" #: data/mp/messages/resmessages3.rmsg:865 #: data/mp/messages/strings/resstrings.txt:749 msgid "All bomb bays upgraded automatically" -msgstr "Wszystkie bomby ulepszone automatycznie" +msgstr "Wszystkie luki bombowe ulepszone automatycznie" #: data/base/messages/resmessages23.rmsg:174 #: data/mp/messages/resmessages23.rmsg:174 @@ -2672,7 +2673,7 @@ msgstr "Pociski wykrywajÄ… i kierujÄ… siÄ™ na emisjÄ™ ciepÅ‚a" #: data/base/messages/resmessages23.rmsg:200 #: data/mp/messages/resmessages23.rmsg:200 msgid "105mm multi-barrel Howitzer may be assigned to a sensor" -msgstr "Wielolufowa haubica 105mm może być przypisana do sensora" +msgstr "Wielolufowa haubica 105mm może być przypisana do radaru" #: data/base/messages/resmessages23.rmsg:201 #: data/base/messages/resmessages2.rmsg:799 @@ -2953,7 +2954,7 @@ msgstr "Umocnienie uzbrojone w miotacz ognia Inferno" #: data/mp/messages/resmessages2.rmsg:317 #: data/mp/messages/strings/resstrings.txt:334 msgid "Armored hardpoint with Tank Killer AT missile" -msgstr "Umocnienie uzbrojone w rakiety Tank Killer" +msgstr "Umocnienie uzbrojone w rakiety Tank Killer AT" #: data/base/messages/resmessages2.rmsg:330 #: data/base/messages/strings/resstrings.txt:334 @@ -2966,7 +2967,7 @@ msgstr "Nowe robotyczne techniki napraw" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Robotyczna produkcja Cyborgów" @@ -2976,7 +2977,7 @@ msgstr "Robotyczna produkcja Cyborgów" #: data/mp/messages/resmessages2.rmsg:356 #: data/mp/messages/strings/resstrings.txt:392 msgid "New Robotic Techniques improve factory production" -msgstr "Nowe techniki produkcji zwiÄ™kszajÄ… wydajność" +msgstr "Nowe techniki robotyzacji produkcji zwiÄ™kszajÄ… wydajność" #: data/base/messages/resmessages2.rmsg:357 #: data/base/messages/strings/resstrings.txt:367 @@ -2988,7 +2989,7 @@ msgstr "ZwiÄ™ksza szybkość produkcji" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Dedykowana analiza danych poÅ‚Ä…czenia synaptycznego" @@ -2997,7 +2998,7 @@ msgstr "Dedykowana analiza danych poÅ‚Ä…czenia synaptycznego" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Wzmocnione materiaÅ‚y struktur bazy" @@ -3006,7 +3007,7 @@ msgstr "Wzmocnione materiaÅ‚y struktur bazy" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Robotyczna produkcja VTOL" @@ -3018,7 +3019,7 @@ msgstr "Robotyczna produkcja VTOL" #: data/mp/messages/resmessages3.rmsg:487 #: data/mp/messages/strings/resstrings.txt:439 msgid "Increases VTOL factory output" -msgstr "Przyspiesza produkcjÄ™ Fabryki VTOL" +msgstr "PrzyÅ›piesza produkcjÄ™ Fabryki VTOL" #: data/base/messages/resmessages2.rmsg:397 #: data/base/messages/resmessages3.rmsg:488 @@ -3042,7 +3043,7 @@ msgstr "Czas dozbrajania VTOL zredukowany" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Automatyczne dozbrajanie VTOL" @@ -3114,7 +3115,7 @@ msgstr "Nowe systemy wykrywania celów" #: data/mp/messages/resmessages2.rmsg:472 #: data/mp/messages/strings/resstrings.txt:560 msgid "Collective Light Body" -msgstr "Lekki kadÅ‚ub używany przez Collective" +msgstr "Lekki kadÅ‚ub Collective" #: data/base/messages/resmessages2.rmsg:473 #: data/base/messages/resmessages3.rmsg:629 @@ -3144,7 +3145,7 @@ msgstr "Wysokie koszty i wolniejszy w produkcji niż Å»mija" #: data/mp/messages/resmessages2.rmsg:485 #: data/mp/messages/strings/resstrings.txt:572 msgid "Collective Medium Body" -msgstr "Åšredni kadÅ‚ub używany przez Collective" +msgstr "Åšredni kadÅ‚ub Collective" #: data/base/messages/resmessages2.rmsg:486 #: data/base/messages/resmessages3.rmsg:642 @@ -3173,7 +3174,7 @@ msgstr "Wysokie koszty i wolniejszy w produkcji niż Kobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Turbo-DoÅ‚adowanie silnika" @@ -3506,21 +3507,21 @@ msgstr "Å»el propylenowy spala siÄ™ w supergorÄ…ych temperaturach" #: data/mp/messages/resmessages2.rmsg:798 #: data/mp/messages/strings/resstrings.txt:811 msgid "105mm Howitzer may be assigned to a sensor" -msgstr "Haubica 105mm może być przypisana do sensora" +msgstr "Haubica 105mm może być przypisana do radaru" #: data/base/messages/resmessages2.rmsg:811 #: data/base/messages/strings/resstrings.txt:780 #: data/mp/messages/resmessages2.rmsg:811 #: data/mp/messages/strings/resstrings.txt:819 msgid "155mm Howitzer may be assigned to a sensor" -msgstr "Haubica 155mm może być przypisana do sensora" +msgstr "Haubica 155mm może być przypisana do radaru" #: data/base/messages/resmessages2.rmsg:824 #: data/base/messages/strings/resstrings.txt:788 #: data/mp/messages/resmessages2.rmsg:824 #: data/mp/messages/strings/resstrings.txt:827 msgid "105m Howitzer firing incendiaries, may be assigned to a sensor" -msgstr "Haubica 105mm strzela pociskami ogniowymi, przypisywalna do sensora" +msgstr "Haubica 105mm strzela pociskami ogniowymi, może być przypisana do radaru" #: data/base/messages/resmessages2.rmsg:825 #: data/base/messages/strings/resstrings.txt:789 @@ -3638,7 +3639,7 @@ msgstr "Wysoko wybuchowe gÅ‚owice rozrywajÄ…ce" #: data/base/messages/resmessages3.rmsg:18 #: data/mp/messages/resmessages3.rmsg:18 msgid "NEXUS Intruder Program analyzed" -msgstr "Program-intruz NEXUS zaanalizowany" +msgstr "Program NEXUS Intruder przeanalizowany" #: data/base/messages/resmessages3.rmsg:19 #: data/mp/messages/resmessages3.rmsg:19 @@ -3821,7 +3822,7 @@ msgstr "Wieża strażnicza uzbrojona w wyrzutniÄ™ ostrz" #: data/base/messages/resmessages3.rmsg:369 #: data/mp/messages/resmessages3.rmsg:369 msgid "Armored hardpoint with Scourge AT Missile" -msgstr "Umocnienie uzbrojone w rakiety Scourge" +msgstr "Umocnienie uzbrojone w rakiety Scourge AT" #: data/base/messages/resmessages3.rmsg:382 #: data/mp/messages/resmessages3.rmsg:382 @@ -3851,14 +3852,14 @@ msgstr "Turbina oparowa zwiÄ™ksza wydajość" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" -msgstr "Neurologiczny mózg badaÅ„ synaptycznych" +msgstr "Mózg badawczy poÅ‚Ä…czenia synaptycznego" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Zaawansowane materiaÅ‚y struktur bazy" @@ -3870,14 +3871,14 @@ msgstr "MateriaÅ‚y struktur bazy wysokiej wytrzymaÅ‚oÅ›ci" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Zaawansowana produkcja VTOL" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Robotyczne dozbrajanie VTOL" @@ -3976,7 +3977,7 @@ msgstr "Umożliwia samonaprawÄ™ we wszystkich pojazdach" #: data/base/messages/resmessages3.rmsg:628 #: data/mp/messages/resmessages3.rmsg:628 msgid "NEXUS Light Body" -msgstr "Lekki kadÅ‚ub używany przez NEXUS" +msgstr "Lekki kadÅ‚ub NEXUS" #: data/base/messages/resmessages3.rmsg:631 #: data/mp/messages/resmessages3.rmsg:631 @@ -3986,7 +3987,7 @@ msgstr "Drogi w produkcji" #: data/base/messages/resmessages3.rmsg:641 #: data/mp/messages/resmessages3.rmsg:641 msgid "NEXUS Medium Body" -msgstr "Åšredni kadÅ‚ub używany przez NEXUS" +msgstr "Åšredni kadÅ‚ub NEXUS" #: data/base/messages/resmessages3.rmsg:644 #: data/mp/messages/resmessages3.rmsg:644 @@ -3996,7 +3997,7 @@ msgstr "Drogi i powolny w produkcji" #: data/base/messages/resmessages3.rmsg:654 #: data/mp/messages/resmessages3.rmsg:654 msgid "NEXUS Heavy Body" -msgstr "Ciężki kadÅ‚ub używany przez NEXUS" +msgstr "Ciężki kadÅ‚ub NEXUS" #: data/base/messages/resmessages3.rmsg:655 #: data/base/messages/resmessagesall.rmsg:109 @@ -4015,7 +4016,7 @@ msgstr "Bardzo drogi w produkcji" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Trubina paliwowa" @@ -4140,7 +4141,7 @@ msgstr "Ulepszenie lasera" #: data/base/messages/resmessages3.rmsg:967 #: data/mp/messages/resmessages3.rmsg:967 msgid "Improvement in laser optics reduces light dispersal" -msgstr "Ulepszenie optyki laserowej redukuje zaÅ‚amanie Å›wiatÅ‚a" +msgstr "Ulepszenie optyki laserowej redukuje rozproszenie Å›wiatÅ‚a" #: data/base/messages/resmessages3.rmsg:968 msgid "Increases Laser accuracy" @@ -4468,7 +4469,7 @@ msgstr "Nowa wieżyczka systemowa dostÄ™pna do projektu" #: data/mp/messages/resmessagesall.rmsg:514 #: data/mp/messages/resmessagesall.rmsg:709 msgid "Improved sensor range" -msgstr "ZwiÄ™kszony zasiÄ™g sensora" +msgstr "Ulepszony zasiÄ™g radaru" #: data/base/messages/resmessagesall.rmsg:58 #: data/mp/messages/resmessagesall.rmsg:58 @@ -4478,7 +4479,7 @@ msgstr "Bardzo dobra jednostka zwiadowcza" #: data/base/messages/resmessagesall.rmsg:70 #: data/mp/messages/resmessagesall.rmsg:70 msgid "Extended sensor range" -msgstr "Roszerzony zasiÄ™g sensora" +msgstr "Poszerzony zasiÄ™g radaru" #: data/base/messages/resmessagesall.rmsg:71 #: data/mp/messages/resmessagesall.rmsg:71 @@ -4493,7 +4494,7 @@ msgstr "Utrzymuje obszary na mapie pod staÅ‚Ä… obserwacjÄ…" #: data/mp/messages/resmessagesall.rmsg:95 #: data/mp/messages/resmessagesall.rmsg:108 msgid "Sensors Improved" -msgstr "Sensory ulepszone" +msgstr "Radary ulepszone" #: data/base/messages/resmessagesall.rmsg:83 #: data/mp/messages/resmessagesall.rmsg:83 @@ -4502,14 +4503,14 @@ msgstr "Wykrywanie emisji termicznych" #: data/base/messages/resmessagesall.rmsg:84 msgid "Extends Sensor Range" -msgstr "Rozszerza zasiÄ™g sensora" +msgstr "Poszerza zasiÄ™g radaru" #: data/base/messages/resmessagesall.rmsg:85 #: data/mp/messages/resmessagesall.rmsg:85 #: data/mp/messages/resmessagesall.rmsg:98 #: data/mp/messages/resmessagesall.rmsg:111 msgid "All sensors upgraded automatically" -msgstr "Wszystkie sensory ulepszone automatycznie" +msgstr "Wszystkie radary ulepszone automatycznie" #: data/base/messages/resmessagesall.rmsg:96 #: data/mp/messages/resmessagesall.rmsg:122 @@ -4519,7 +4520,7 @@ msgstr "Wieża CB wykrywa artyleriÄ™ wroga" #: data/base/messages/resmessagesall.rmsg:108 #: data/mp/messages/resmessagesall.rmsg:147 msgid "Collective Heavy Body" -msgstr "Ciężki kadÅ‚ub używany przez Collective" +msgstr "Ciężki kadÅ‚ub Collective" #: data/base/messages/resmessagesall.rmsg:110 #: data/mp/messages/resmessagesall.rmsg:149 @@ -4539,7 +4540,7 @@ msgstr "Nowy napÄ™d dostÄ™pny do projektu" #: data/base/messages/resmessagesall.rmsg:122 #: data/mp/messages/resmessagesall.rmsg:161 msgid "Vertical Take Off and Landing Propulsion" -msgstr "NapÄ™d powietrzny" +msgstr "NapÄ™d pionowego startu i lÄ…dowania" #: data/base/messages/resmessagesall.rmsg:123 #: data/mp/messages/resmessagesall.rmsg:162 @@ -4567,28 +4568,31 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Celownik laserowy prowadzi pociski do celu" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "CEL: Zlokalizuj i zdobÄ…dź technologiÄ™ poÅ‚Ä…czenia synaptycznego" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." -msgstr "Zabezpiecz bazÄ™, nastÄ™pnie szukaj struktur sprzed Zniszczenia." +msgstr "Załóż bazÄ™, nastÄ™pnie szukaj struktury sprzed Zniszczenia." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Ta struktura zawiera technologiÄ™ potrzebnÄ… by Projekt osiÄ…gnÄ…Å‚ sukces." #: data/base/messages/strings/cam1strings.txt:7 msgid "ALPHA BASE MISSION: Scavenger Raiders" -msgstr "MISJA BAZY ALFA: Jeźdźcy Padlinożerców" +msgstr "MISJA BAZY ALFA: Jeźdźcy Åšmieciarzy" #: data/base/messages/strings/cam1strings.txt:8 msgid "Scavenger raiders are approaching our base." -msgstr "Jeźdźcy Padlinożerców zbliżajÄ… siÄ™ do naszej bazy." +msgstr "Jeźdźcy Åšmieciarzy zbliżajÄ… siÄ™ do naszej bazy." #: data/base/messages/strings/cam1strings.txt:9 msgid "Defend the base then destroy the Scavenger camps." -msgstr "ObroÅ„ bazÄ™, nastÄ™pnie zniszcz obozy Padlinożerców." +msgstr "ObroÅ„ bazÄ™, nastÄ™pnie zniszcz obozy Åšmieciarzy." #: data/base/messages/strings/cam1strings.txt:11 #: data/base/messages/strings/cam1strings.txt:65 @@ -4597,7 +4601,7 @@ msgstr "MISJA BAZY ALFA: ŹródÅ‚o energii wykryte" #: data/base/messages/strings/cam1strings.txt:12 msgid "A power surge has been detected to the south of our position." -msgstr "Silne źródÅ‚o energii wykryto na poÅ‚udnie od naszej pozycji." +msgstr "Wykryto silne źródÅ‚o energii na poÅ‚udnie od naszej pozycji." #: data/base/messages/strings/cam1strings.txt:13 msgid "Investigate and secure the area." @@ -4609,7 +4613,7 @@ msgstr "MISJA BAZY ALFA: New Paradigm" #: data/base/messages/strings/cam1strings.txt:16 msgid "The New Paradigm control superior weapons technology." -msgstr "New Paradigm kontroluje lepsze uzbrojenie." +msgstr "New Paradigm posiada lepsze technologie uzbrojenia." #: data/base/messages/strings/cam1strings.txt:17 msgid "They may have the synaptic link technology, it's vital we retrieve it." @@ -4629,7 +4633,7 @@ msgstr "Po wylÄ…dowaniu, przeszukaj ruiny i zdobÄ…dź każdy artefakt." #: data/base/messages/strings/cam1strings.txt:23 msgid "TRANSPORT MISSION: Investigate Research Center" -msgstr "MISJA TRANSPORTOWA: Zbadaj StacjÄ™ BadawczÄ…" +msgstr "MISJA TRANSPORTOWA: Zbadaj stacjÄ™ badawczÄ…" #: data/base/messages/strings/cam1strings.txt:24 msgid "Investigate the area and recover any artifacts present." @@ -4650,7 +4654,7 @@ msgstr "WyÅ›lij zwiad aby zbadać te sygnaÅ‚y." #: data/base/messages/strings/cam1strings.txt:29 msgid "Use your trucks to build defenses at your LZ." -msgstr "Użyj twoich ciężarówek do wybudowania obrony na twojej SL." +msgstr "Użyj twoich ciężarówek do wybudowania umocnieÅ„ na twojej SL." #: data/base/messages/strings/cam1strings.txt:31 msgid "TRANSPORT MISSION: Enemy Transmissions Detected" @@ -4658,7 +4662,7 @@ msgstr "MISJA TRANSPORTOWA: Wykryto transmisje wroga" #: data/base/messages/strings/cam1strings.txt:32 msgid "Scout the designated area for enemy research facilities." -msgstr "Zbadaj i zlokalizuj Stacje Badawcze wroga." +msgstr "Przeszukaj obszar w celu zlokalizowania stacji badawczych wroga." #: data/base/messages/strings/cam1strings.txt:33 msgid "Proceed to LZ#2. Do not engage the enemy at this time." @@ -4670,11 +4674,11 @@ msgstr "MISJA TRANSPORTOWA: Lokacja poÅ‚Ä…czenia synaptycznego" #: data/base/messages/strings/cam1strings.txt:36 msgid "The New Paradigm are analyzing synaptic link technology at this location." -msgstr "New Paradigm analizuje poÅ‚Ä…czenie synaptyczne na tej lokacji." +msgstr "New Paradigm analizuje technologiÄ™ poÅ‚Ä…czenia synaptycznego na tej lokacji." #: data/base/messages/strings/cam1strings.txt:37 msgid "Assemble an attack team and recover the synaptic link technology." -msgstr "Stwórz drużynÄ™ szturmowÄ… i zdobÄ…dź tÄ… technologiÄ™." +msgstr "Stwórz drużynÄ™ szturmowÄ… i zdobÄ…dź technologiÄ™ poÅ‚Ä…czenia synaptycznego." #: data/base/messages/strings/cam1strings.txt:39 msgid "TRANSPORT MISSION: New Objectives" @@ -4682,11 +4686,11 @@ msgstr "MISJA TRANSPORTOWA: Nowe cele" #: data/base/messages/strings/cam1strings.txt:40 msgid "New Paradigm are searching for artifacts in this vicinity." -msgstr "New Paradigm szuka artefaktów w tej lokalizacji." +msgstr "New Paradigm szuka w pobliżu artefaktów." #: data/base/messages/strings/cam1strings.txt:41 msgid "Intercept them. Do not let any enemies exit this area." -msgstr "Zatrzymaj ich. Nie pozwól żadnemu wrogowi opuÅ›cić ten obszar." +msgstr "Zatrzymaj ich. Nie pozwól żadnemu wrogowi na opuszczenie tego obszaru." #: data/base/messages/strings/cam1strings.txt:43 msgid "TRANSPORT MISSION: Enemy Base Under Construction" @@ -4706,7 +4710,7 @@ msgstr "MISJA BAZY ALFA: Przygotuj wysuniÄ™tÄ… bazÄ™" #: data/base/messages/strings/cam1strings.txt:49 msgid "Establish a forward base on the plateau." -msgstr "Przygotuj wysuniÄ™tÄ… bazÄ™ na placu." +msgstr "Przygotuj wysuniÄ™tÄ… bazÄ™ na pÅ‚askowyżu." #: data/base/messages/strings/cam1strings.txt:50 msgid "Build defensive structures." @@ -4722,15 +4726,15 @@ msgstr "SiÅ‚y wroga zbliżajÄ… siÄ™ ze wschodu i z północy." #: data/base/messages/strings/cam1strings.txt:54 msgid "Hold the bases and repulse any attacks." -msgstr "Utrzymaj bazy i powtrzymaj każdy atak." +msgstr "Utrzymaj bazy i odeprzyj każdy atak." #: data/base/messages/strings/cam1strings.txt:56 msgid "ALPHA BASE MISSION: Incoming Transmission" -msgstr "MISJA BAZY ALFA: Przybywa transmisja" +msgstr "MISJA BAZY ALFA: Transmisja przychodzÄ…ca" #: data/base/messages/strings/cam1strings.txt:57 msgid "We are detecting enemy forces at these locations." -msgstr "Wykryto siÅ‚y wroga na tej lokacji." +msgstr "Wykryto siÅ‚y wroga na tych lokacjach." #: data/base/messages/strings/cam1strings.txt:58 msgid "This is our chance to defeat the New Paradigm and destroy their base." @@ -4752,7 +4756,7 @@ msgstr "Gratulacje dowódco." #: data/base/messages/strings/cam1strings.txt:67 msgid "We now have a further task for you." -msgstr "Mamy teraz inne zadanie dla ciebie." +msgstr "Mamy teraz kolejne zadanie dla ciebie." #: data/base/messages/strings/cam1strings.txt:70 msgid "ALPHA BASE MISSION: Locate and Recover Artifacts" @@ -4772,11 +4776,11 @@ msgstr "RAPORT DRUÅ»YNY BETA" #: data/base/messages/strings/cam1strings.txt:79 msgid "We have recovered some artifacts." -msgstr "ZdobyliÅ›my kilka artefaktów." +msgstr "OdzyskaliÅ›my kilka artefaktów." #: data/base/messages/strings/cam1strings.txt:80 msgid "There is a better equipped force operating in this area." -msgstr "Tu jest lepiej uzbrojona siÅ‚a operacyjna w tym obszarze." +msgstr "Tu jest lepiej uzbrojona siÅ‚a dziaÅ‚ajÄ…ca w tym obszarze." #: data/base/messages/strings/cam1strings.txt:83 msgid "TEAM GAMMA UPDATE" @@ -4788,11 +4792,11 @@ msgstr "Nic do zanotowania." #: data/base/messages/strings/cam1strings.txt:85 msgid "We've discovered no artifacts and encountered no hostiles." -msgstr "Nie znaleźliÅ›my żadnego artefaktu ani żadnych wrogów." +msgstr "Nie znaleźliÅ›my żadnych artefaktów i nie napotkaliÅ›my na żadnych wrogów." #: data/base/messages/strings/cam1strings.txt:88 msgid "ALPHA BASE INTELLIGENCE REPORT: Enemy Attack" -msgstr "DANE WYWIADU BAZY ALFA: Wrogi atak" +msgstr "RAPORT WYWIADU BAZY ALFA: Wrogi atak" #: data/base/messages/strings/cam1strings.txt:89 msgid "We are detecting an enemy attack force at this location." @@ -4808,7 +4812,7 @@ msgstr "Ta struktura to twój główny cel." #: data/base/messages/strings/cam1strings.txt:95 msgid "Search for and recover any artifacts here." -msgstr "Szukaj i zdobÄ…dź artefakty z tej lokacji." +msgstr "Szukaj i zdobÄ…dź artefakty z tego obszaru." #: data/base/messages/strings/cam1strings.txt:97 msgid "ENEMY LZ" @@ -4820,7 +4824,7 @@ msgstr "Zniszcz tÄ… SL aby zatrzymać posiÅ‚ki wroga." #: data/base/messages/strings/cam1strings.txt:101 msgid "ALPHA BASE INTELLIGENCE REPORT: NEXUS" -msgstr "DANE WYWIADU BAZY ALFA: NEXUS" +msgstr "RAPORT WYWIADU BAZY ALFA: NEXUS" #: data/base/messages/strings/cam1strings.txt:102 msgid "New objective." @@ -4832,15 +4836,15 @@ msgstr "WykryliÅ›my i odizolowaliÅ›my program intruza." #: data/base/messages/strings/cam1strings.txt:108 msgid "Supplemental" -msgstr "Supplemental." +msgstr "UzupeÅ‚nienie" #: data/base/messages/strings/cam1strings.txt:109 msgid "The synaptic link technology was at this location but was removed." -msgstr "Technologia poÅ‚Ä…czenia synaptycznego zostaÅ‚a stÄ…d przeniesiona." +msgstr "Technologia poÅ‚Ä…czenia synaptycznego znajdowaÅ‚a siÄ™ w tym miejscu lecz zostaÅ‚a przeniesiona." #: data/base/messages/strings/cam1strings.txt:111 msgid "Establish a forward base then continue the search for the synaptic link." -msgstr "Przygotuj wysuniÄ™tÄ… bazÄ™ i kontynuuj poszukiwanie tej technologii." +msgstr "Przygotuj wysuniÄ™tÄ… bazÄ™ i kontynuuj poszukiwanie technologii poÅ‚Ä…czenia synaptycznego." #: data/base/messages/strings/cam1strings.txt:114 msgid "INCOMING TRANSMISSION" @@ -4860,7 +4864,7 @@ msgstr "ZdekodowaliÅ›my wiadomość przychodzÄ…cÄ… do New Paradigm..." #: data/base/messages/strings/cam1strings.txt:123 msgid "Destroy Enemy Base" -msgstr "Zniszcz wrogÄ… bazÄ™." +msgstr "Zniszcz bazÄ™ wroga." #: data/base/messages/strings/cam1strings.txt:124 msgid "Assemble an attack force and board the transport." @@ -4876,11 +4880,11 @@ msgstr "Technologia poÅ‚Ä…czenia synaptycznego zostaÅ‚a zdobyta!" #: data/base/messages/strings/cam1strings.txt:129 msgid "Initial research confirms it will be of great benefit to the Project." -msgstr "RozpoczÄ™te badania potwierdzajÄ…, że to bÄ™dzie wielka nagroda dla Projektu." +msgstr "WstÄ™pne badania potwierdzajÄ…, że bÄ™dzie to wielki zysk dla Projektu." #: data/base/messages/strings/cam1strings.txt:132 msgid "Base Beta is under heavy attack, they may need assistance." -msgstr "Baza Beta jest pod silnym atakiem, możliwe że potrzebujÄ… wsparcia." +msgstr "Baza Beta jest silnie atakowana, możliwe że potrzebujÄ… wsparcia." #: data/base/messages/strings/cam1strings.txt:133 msgid "We will send further updates as they arrive." @@ -4888,7 +4892,7 @@ msgstr "WyÅ›lemy kolejne raporty jak tylko je otrzymamy." #: data/base/messages/strings/cam1strings.txt:136 msgid "This transmission was intercepted a few minutes ago." -msgstr "Ta transmisja byÅ‚a wysÅ‚ana dużo wczeÅ›niej." +msgstr "Ta transmisja zostaÅ‚a przechwycona kilka minut temu." #: data/base/messages/strings/cam1strings.txt:137 msgid "It originates from the east." @@ -4908,11 +4912,11 @@ msgstr "Potem użyj ciężarówki aby ulepszyć twój Generator tym moduÅ‚em." #: data/base/messages/strings/cam1strings.txt:145 msgid "SCAVENGER BASE DETECTED" -msgstr "WYKRYTO BAZĘ PADLINOÅ»ERCÓW" +msgstr "WYKRYTO BAZĘ ÅšMIECIARZY" #: data/base/messages/strings/cam1strings.txt:146 msgid "Defeat the scavengers and retrieve any artifacts." -msgstr "Pokonaj padlinożerców i odzyskaj wszystkie artefakty." +msgstr "Pokonaj Å›mieciarzy i odzyskaj wszystkie artefakty." #: data/base/messages/strings/cam1strings.txt:150 msgid "Congratulations on defeating the New Paradigm, this sector is now secure." @@ -4920,59 +4924,66 @@ msgstr "Gratulujemy pokonania New Paradigm, ten sektor jest teraz bezpieczny." #: data/base/messages/strings/cam1strings.txt:151 msgid "The Nexus Intruder Program was in the New Paradigm system." -msgstr "Program intruz Nexus byÅ‚ w ich systemach." +msgstr "Program NEXUS Intruder byÅ‚ w systemie New Paradigm." #: data/base/messages/strings/cam1strings.txt:152 msgid "We recorded two conversations with it, extracts follow..." -msgstr "ZarejestrowaliÅ›my dwie konwersacje z nim." +msgstr "ZarejestrowaliÅ›my dwie konwersacje z nim..." #: data/base/messages/strings/cam1strings.txt:155 msgid "We'll keep you informed of further developments" -msgstr "BÄ™dziemy ciÄ™ informować o dalszych postÄ™pach." +msgstr "BÄ™dziemy ciÄ™ informować o dalszych postÄ™pach" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Dowódco, musisz pomóc Drużynie Beta." #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" -msgstr "MISJA BAZY BETA: Wschodni Sektor" +msgstr "MISJA BAZY BETA: Sektor Wschodni" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." -msgstr "Po przybyciu obejmujesz dowództwo nad bazÄ…." +msgstr "Po przybyciu obejmiesz dowództwo nad bazÄ…." #: data/base/messages/strings/cam2strings.txt:6 msgid "You must defend it and hold it." -msgstr "Musisz jÄ… obronić i utrzymać." +msgstr "Musisz jej bronić i utrzymać jÄ…." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" -msgstr "MISJA BAZY BETA: Obrona i fortyfikacja" +msgstr "MISJA BAZY BETA: Obrona i fortyfikowanie" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." -msgstr "Sfortyfikuj bazÄ™ i przygotuj obronÄ™ przeciwlotniczÄ…." +msgstr "Wzmocnij bazÄ™ i przygotuj obronÄ™ przeciwlotniczÄ…." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." -msgstr "Nowe technologie sÄ… dostÄ™pne." +msgstr "DostÄ™pne sÄ… nowe technologie." #: data/base/messages/strings/cam2strings.txt:14 msgid "We are currently detecting coded bitstream signals." -msgstr "W tym momencie wykrywamy zakodowane sygnaÅ‚y strumienia bitów." +msgstr "Wykryto zakodowane sygnaÅ‚y strumienia bitów." #: data/base/messages/strings/cam2strings.txt:15 #: data/base/messages/strings/cam2strings.txt:39 msgid "Decoding..." -msgstr "Dekodowanie........." +msgstr "Dekodowanie..." #: data/base/messages/strings/cam2strings.txt:18 #: data/base/messages/strings/cam2strings.txt:22 msgid "TRANSPORT MISSION: Transport Down" -msgstr "MISJA TRANSPORTOWA: Utracony transport" +msgstr "MISJA TRANSPORTOWA: Zestrzelony transport" #: data/base/messages/strings/cam2strings.txt:19 msgid "Our transport carrying units from team Alpha Base has been shot down." @@ -4992,11 +5003,11 @@ msgstr "ODPRAWA W TRAKCIE LOTU" #: data/base/messages/strings/cam2strings.txt:28 msgid "Team Beta are searching for Vertical Takeoff and Landing (VTOL) technology." -msgstr "Drużyna Beta szuka technologii Vertical Takeoff and Landing (VTOL)." +msgstr "Drużyna Beta szuka technologii pionowego startu i lÄ…dowania (VTOL)." #: data/base/messages/strings/cam2strings.txt:29 msgid "It's believed to be at a pre-Collapse airbase in this area." -msgstr "Podobno znajduje siÄ™ tutaj baza powietrzna sprzed Zniszczenia." +msgstr "Podobno znajduje siÄ™ tutaj baza lotnicza sprzed Zniszczenia." #: data/base/messages/strings/cam2strings.txt:32 msgid "Team Beta under heavy attack" @@ -5008,7 +5019,7 @@ msgstr "MISJA BAZY BETA: Utrzymaj za wszelkÄ… cenÄ™" #: data/base/messages/strings/cam2strings.txt:38 msgid "We are detecting coded bitstream signals from the Collective." -msgstr "Wykrywamy zakodowany strumieÅ„ bitów z Collective." +msgstr "Wykryto zakodowany strumieÅ„ bitów z Collective." #: data/base/messages/strings/cam2strings.txt:42 msgid "BETA BASE MISSION: Hold At All Costs" @@ -5016,11 +5027,11 @@ msgstr "MISJA BAZY BETA: Utrzymaj za wszelkÄ… cenÄ™" #: data/base/messages/strings/cam2strings.txt:43 msgid "We are detecting ground and aerial forces from the north." -msgstr "Wykrywamy siÅ‚y lÄ…dowe i powietrzne z północy." +msgstr "Wykryto siÅ‚y lÄ…dowe i powietrzne z północy." #: data/base/messages/strings/cam2strings.txt:44 msgid "Hold your position and repulse these attacks, then eradicate the enemy's northern base." -msgstr "Utrzymaj pozycjÄ™ i powstrzymaj te ataki, nastÄ™pnie zniszcz północnÄ… bazÄ™ wroga." +msgstr "Utrzymaj pozycjÄ™ i odeprzyj te ataki, nastÄ™pnie zniszcz północnÄ… bazÄ™ wroga." #: data/base/messages/strings/cam2strings.txt:47 msgid "TRANSPORT MISSION: Intercept convoy." @@ -5028,27 +5039,27 @@ msgstr "MISJA TRANSPORTOWA: Zatrzymaj konwój" #: data/base/messages/strings/cam2strings.txt:48 msgid "Data from the Collective's base indicates the presence of the NEXUS intruder program." -msgstr "Dane z bazy Collective pokazujÄ… dziaÅ‚alność progamu intruza Nexus." +msgstr "Dane z bazy Collective pokazujÄ… obecność programu NEXUS Intruder." #: data/base/messages/strings/cam2strings.txt:49 msgid "Before NEXUS switched itself off-line we accessed the following." -msgstr "Przed tym jak NEXUS siÄ™ wyÅ‚Ä…czyÅ‚ zdobyliÅ›my dostÄ™p do nich." +msgstr "Przed tym jak NEXUS wyÅ‚Ä…czyÅ‚ siÄ™ zdobyliÅ›my dostÄ™p do nich." #: data/base/messages/strings/cam2strings.txt:51 msgid "An enemy commander is collecting a shipment from NEXUS at this location." -msgstr "Wrogi dowódca odbiera wyposażenie od NEXUS na tej lokacji." +msgstr "Dowódca wroga odbiera wyposażenie od NEXUS na tej lokacji." #: data/base/messages/strings/cam2strings.txt:52 msgid "Once at the LZ, eradicate the enemy commander and recover the shipment." -msgstr "Po przybyciu na SL, zlikwiduj wrogiego dowódcÄ™ i zdobÄ…dź ten sprzÄ™t." +msgstr "Po przybyciu na SL, zlikwiduj dowódcÄ™ wroga i przejmij ten sprzÄ™t." #: data/base/messages/strings/cam2strings.txt:53 msgid "Then return to the LZ." -msgstr "Potem wróć do SL." +msgstr "NastÄ™pnie wróć do SL." #: data/base/messages/strings/cam2strings.txt:55 msgid "Disturbing news regarding NASDA." -msgstr "NiepokojÄ…ce wieÅ›ci przybyÅ‚y z NASDA." +msgstr "NiepokojÄ…ce wieÅ›ci dotyczÄ…ce NASDA." #: data/base/messages/strings/cam2strings.txt:58 #: data/base/messages/strings/cam2strings.txt:63 @@ -5057,11 +5068,11 @@ msgstr "MISJA TRANSPORTOWA: Znajdź i zniszcz konwój" #: data/base/messages/strings/cam2strings.txt:59 msgid "The shipment you recovered was a decoy." -msgstr "Jednostki które znalazÅ‚eÅ› byÅ‚y przynÄ™tÄ…." +msgstr "PrzesyÅ‚ka którÄ… odzyskaÅ‚eÅ› byÅ‚a przynÄ™tÄ…." #: data/base/messages/strings/cam2strings.txt:60 msgid "We have detected another convoy proceeding along the river." -msgstr "WykryliÅ›my inny konwój poruszajÄ…cy siÄ™ wzdÅ‚uż rzeki." +msgstr "WykryliÅ›my inny konwój przemieszczajÄ…cy siÄ™ wzdÅ‚uż rzeki." #: data/base/messages/strings/cam2strings.txt:64 msgid "You are to intercept the convoy and recover its cargo." @@ -5069,65 +5080,65 @@ msgstr "Zatrzymaj konwój i zdobÄ…dź jego Å‚adunek." #: data/base/messages/strings/cam2strings.txt:65 msgid "Enemy VTOLs are likely to be flying close escort." -msgstr "Wrogie VTOL latajÄ… blisko eskorty." +msgstr "Wrogie jednostki VTOL sÄ… najprawdopodobniej Å›cisÅ‚Ä… eskortÄ…." #: data/base/messages/strings/cam2strings.txt:68 #: data/base/messages/strings/cam2strings.txt:72 msgid "TRANSPORT MISSION: Rescue civilians from Containment Camp" -msgstr "MISJA TRANSPORTOWA: Uratuj cywili z Obozu Jenienckiego" +msgstr "MISJA TRANSPORTOWA: Uratuj cywili z Obozu Jenieckiego" #: data/base/messages/strings/cam2strings.txt:69 msgid "The Collective are processing and exterminating civilians at this base." -msgstr "Collective przetrzymuje i zabija cywili w tej bazie." +msgstr "Collective przetrzymuje i likwiduje cywili w tej bazie." #: data/base/messages/strings/cam2strings.txt:73 msgid "You are to rescue the civilians." -msgstr "Musisz ich uratować." +msgstr "Musisz uratować cywili." #: data/base/messages/strings/cam2strings.txt:74 msgid "Then destroy the camp." -msgstr "Potem zniszcz obóz." +msgstr "NastÄ™pnie zniszcz obóz." #: data/base/messages/strings/cam2strings.txt:77 msgid "BETA BASE MISSION: Destroy Enemy Air Base and Recover VTOLs." -msgstr "MISJA BAZY BETA: Zniszcz bazÄ™ powietrznÄ… wroga i zdobÄ…dź VTOL." +msgstr "MISJA BAZY BETA: Zniszcz bazÄ™ lotniczÄ… wroga i zdobÄ…dź VTOL." #: data/base/messages/strings/cam2strings.txt:78 msgid "Analysis of flight paths indicate that The Collective's VTOLs originate from here." -msgstr "Analiza lotu potwierdza że VTOL Collective startujÄ… stamtÄ…d." +msgstr "Analiza trasy lotu potwierdza że jednostki VTOL Collective startujÄ… stamtÄ…d." #: data/base/messages/strings/cam2strings.txt:81 msgid "BETA BASE MISSION: Destroy Enemy Air Base and Recover VTOLs" -msgstr "MISJA BAZY BETA: Zniszcz bazÄ™ powietrzna wroga i zdobÄ…dź VTOL" +msgstr "MISJA BAZY BETA: Zniszcz bazÄ™ lotniczÄ… wroga i zdobÄ…dź VTOL" #: data/base/messages/strings/cam2strings.txt:82 msgid "The location of the enemy airbase is here; this is your primary objective." -msgstr "Lokacja bazy powietrznej jest tutaj; to jest twój główny cel." +msgstr "Baza lotnicza jest poÅ‚ożna tutaj; to jest twój główny cel." #: data/base/messages/strings/cam2strings.txt:83 msgid "Eradicate all Collective forces and recover all artifacts." -msgstr "Zlikwiduj siÅ‚y Collective i zdobÄ…dź wszystkie artefakty." +msgstr "Zlikwiduj siÅ‚y Collective i odzyskaj wszystkie artefakty." #: data/base/messages/strings/cam2strings.txt:86 #: data/base/messages/strings/cam2strings.txt:91 msgid "SECONDARY MISSION: Destroy or Drive Off Enemy Transport" -msgstr "MISJA DODATKOWA: Zniszcz lub przejmij transport wroga" +msgstr "MISJA DODATKOWA: Zniszcz lub przepÄ™dź transportowiec wroga" #: data/base/messages/strings/cam2strings.txt:87 msgid "The Collective are rounding up all civilians in this area." -msgstr "Collective gromadzi wszystkich cywili w tym obszarze." +msgstr "Collective gromadzi wszystkich cywili na tym obszarze." #: data/base/messages/strings/cam2strings.txt:88 msgid "They are then flying them to an unknown location." -msgstr "Przewożą ich później do nieznanej lokacji." +msgstr "NastÄ™pnie przewożą ich do nieznanej lokacji." #: data/base/messages/strings/cam2strings.txt:92 msgid "Destroy or drive off The Collective's transport." -msgstr "Zniszcz lub przejmij ten transport." +msgstr "Zniszcz lub przepÄ™dź ten transportowiec." #: data/base/messages/strings/cam2strings.txt:93 msgid "Rescue as many civilians as possible." -msgstr "Uratuj tylu cywili jak tylko możliwe." +msgstr "Uratuj tak wielu cywili jak to możliwe." #: data/base/messages/strings/cam2strings.txt:96 #: data/base/messages/strings/cam2strings.txt:101 @@ -5136,11 +5147,11 @@ msgstr "MISJA TRANSPORTOWA: Zniszcz reaktor" #: data/base/messages/strings/cam2strings.txt:97 msgid "The Collective are searching for knowledge of nuclear reactors." -msgstr "Collective szuka wiedzy o reaktorach atomowych." +msgstr "Collective szuka wiedzy na temat reaktorów atomowych." #: data/base/messages/strings/cam2strings.txt:98 msgid "They must be stopped." -msgstr "Oni muszÄ… być powstrzymani." +msgstr "MuszÄ… zostać powstrzymani." #: data/base/messages/strings/cam2strings.txt:102 msgid "Proceed from the LZ to the reactor and destroy it." @@ -5148,7 +5159,7 @@ msgstr "Udaj siÄ™ ze SL do reaktora i zniszcz go." #: data/base/messages/strings/cam2strings.txt:103 msgid "Do not allow the Collective to bring the reactor on-line." -msgstr "Nie pozwól żeby Collective go uruchomiÅ‚." +msgstr "Nie pozwól na uruchomienie go przez Collective." #: data/base/messages/strings/cam2strings.txt:106 msgid "BETA BASE MISSION: Capture NASDA Central" @@ -5166,19 +5177,19 @@ msgstr "MISJA TRANSPORTOWA: Stanowisko Przekaźnika Satelitarnego" #: data/base/messages/strings/cam2strings.txt:112 msgid "NEXUS is searching for still functioning memory banks." -msgstr "NEXUS poszukuje wciąż funkcjonalnych baz pamiÄ™ci." +msgstr "NEXUS poszukuje wciąż sprawnych modułów pamiÄ™ci." #: data/base/messages/strings/cam2strings.txt:113 msgid "Part of its consciousness has moved to a remote NASDA control-site." -msgstr "Część tej wiedzy zostaÅ‚a przeniesiona do ruchomego centrum NASDA." +msgstr "Część jego Å›wiadomoÅ›ci zostaÅ‚a przeniesiona do oddalonego centrum NASDA." #: data/base/messages/strings/cam2strings.txt:117 msgid "We are detecting transmissions from this site that are reaching high orbit." -msgstr "Wykrywamy transmisje z tego centrum wysyÅ‚ane na orbitÄ™." +msgstr "Wykryto transmisje wysyÅ‚ane z tego centrum na orbitÄ™." #: data/base/messages/strings/cam2strings.txt:118 msgid "NEXUS has now reconnected itself with the NASDA satellites." -msgstr "NEXUS poÅ‚Ä…czyÅ‚ siebie z satelitami NASDA." +msgstr "NEXUS poÅ‚Ä…czyÅ‚ siÄ™ z satelitami NASDA." #: data/base/messages/strings/cam2strings.txt:122 msgid "Use the transport to carry a strike force to this site." @@ -5186,7 +5197,7 @@ msgstr "Użyj transportowca aby przewieźć tam drużynÄ™ szturmowÄ…." #: data/base/messages/strings/cam2strings.txt:123 msgid "Destroy the site and return to your base." -msgstr "Zniszcz centrum i wróć do bazy." +msgstr "Zniszcz centrum i powróć do bazy." #: data/base/messages/strings/cam2strings.txt:126 msgid "TRANSPORT MISSION: Destroy Enemy SAM Sites" @@ -5198,20 +5209,20 @@ msgstr "JeÅ›li chcesz uciekać, musisz zniszczyć stanowiska rakiet ziemia-powie #: data/base/messages/strings/cam2strings.txt:128 msgid "Fly to the LZ, then head overland to destroy the SAM sites." -msgstr "Leć na SL, potem kieruj siÄ™ przed siebie i zniszcz stanowiska SAM." +msgstr "Leć na SL, potem kieruj siÄ™ lÄ…dem i zniszcz stanowiska SAM." #: data/base/messages/strings/cam2strings.txt:131 #: data/base/messages/strings/cam2strings.txt:136 msgid "TRANSPORT MISSION: Establish Safe Haven" -msgstr "MISJA TRANSPORTOWA: Przygotuj bezpieczny raj" +msgstr "MISJA TRANSPORTOWA: Przygotuj bezpieczne schronienie" #: data/base/messages/strings/cam2strings.txt:132 msgid "We can confirm a missile is heading for Alpha Base." -msgstr "Możemy potwierdzić że rakieta jest wycelowana w BazÄ™ Alfa." +msgstr "Możemy potwierdzić że rakieta zmierza w kierunku Bazy Alfa." #: data/base/messages/strings/cam2strings.txt:133 msgid "You are to establish a safe haven for evacuation of Beta Base." -msgstr "Musisz przygotować bezpieczny raj dla ewakuacji Bazy Beta." +msgstr "Musisz przygotować bezpieczne schronienie dla ewakuacji Bazy Beta." #: data/base/messages/strings/cam2strings.txt:137 msgid "Eradicate any enemy and secure the area." @@ -5219,7 +5230,7 @@ msgstr "Zniszcz każdego wroga i zabezpiecz teren." #: data/base/messages/strings/cam2strings.txt:138 msgid "Once a safe haven is established, return to the LZ for further orders." -msgstr "Kiedy bezpieczny raj bÄ™dzie gotowy wróć do SL po dalsze rozkazy." +msgstr "Kiedy bezpieczne schronienie bÄ™dzie gotowa wróć do SL po dalsze rozkazy." #: data/base/messages/strings/cam2strings.txt:141 #: data/base/messages/strings/cam2strings.txt:146 @@ -5229,7 +5240,7 @@ msgstr "MISJA BAZY BETA: Ewakuacja!" #: data/base/messages/strings/cam2strings.txt:142 msgid "Commander, we have grave news." -msgstr "Dowódco, mamy grobowe wieÅ›ci." +msgstr "Dowódco, mamy ważne wieÅ›ci." #: data/base/messages/strings/cam2strings.txt:143 msgid "Alpha base has been destroyed by nuclear missile attack." @@ -5237,15 +5248,15 @@ msgstr "Baza Alfa zostaÅ‚a zniszczona przez atak nuklearny." #: data/base/messages/strings/cam2strings.txt:147 msgid "The Collective are unaware of the nuclear attack and have air units heading for your base." -msgstr "Collective nie przejmuje siÄ™ atakiem nuklearnym i wysÅ‚aÅ‚ jednostki powietrzne na twojÄ… bazÄ™." +msgstr "Collective nie wie o ataku nuklearnym i wysÅ‚aÅ‚ jednostki powietrzne na twojÄ… bazÄ™." #: data/base/messages/strings/cam2strings.txt:148 msgid "This message was intercepted a few moments ago..." -msgstr "Ta wiadomość zostaÅ‚a opóźniona przez kilka minut..." +msgstr "Ta wiadomość zostaÅ‚a przechwycona kilka minut temu..." #: data/base/messages/strings/cam2strings.txt:152 msgid "You must transport as many of your forces as possible." -msgstr "Musisz przetransportować tyle jednostek ile tylko możliwe." +msgstr "Musisz przetransportować tyle jednostek ile to możliwe." #: data/base/messages/strings/cam2strings.txt:153 #: data/base/messages/strings/cam3strings.txt:30 @@ -5253,26 +5264,31 @@ msgid "Good luck, Commander." msgstr "Powodzenia, Dowódco." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" -msgstr "MISJA TRANSPORTOWA: Północny Sektor" +msgstr "MISJA TRANSPORTOWA: Sektor Północny" #: data/base/messages/strings/cam3strings.txt:5 msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Gratulujemy udanej ewakuacji Bazy Beta." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." -msgstr "NEXUS uzyskaÅ‚ dostÄ™p do broni atomowych i jest zdeterminowany by zniszczyć Projekt." +msgstr "NEXUS uzyskaÅ‚ dostÄ™p do broni jÄ…drowej i jest zdecydowany zniszczyć Projekt." #: data/base/messages/strings/cam3strings.txt:9 msgid "Take your forces to the Northern Sector" -msgstr "PrzenieÅ› swoje jednostki do Północnego Sektora." +msgstr "PrzenieÅ› swoje jednostki do Sektora Północnego" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Najpierw zabezpiecz SL w górach. Potem przygotuj wysuniÄ™tÄ… bazÄ™." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Drużyna Gamma skontaktuje siÄ™ tam z tobÄ…." @@ -5281,6 +5297,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "MISJA TRANSPORTOWA: Przygotuj wysuniÄ™tÄ… bazÄ™" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Dowódco, sukces Projektu leży w twoich rÄ™kach." @@ -5303,16 +5320,17 @@ msgstr "ByÅ‚a jedna lub wiÄ™cej rakiet na tym stanowisku NASDA." #: data/base/messages/strings/cam3strings.txt:24 msgid "We are transmitting coordinates of an LZ near the silos." -msgstr "PrzesyÅ‚amy ci współrzÄ™dne SL blisko silosów." +msgstr "PrzesyÅ‚amy ci współrzÄ™dne SL w pobliżu silosów." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Pobieranie współrzÄ™dnych zakoÅ„czone." #: data/base/messages/strings/cam3strings.txt:29 msgid "Secure your LZ, then head overland to destroy the missile silo." -msgstr "Zabezpiecz twojÄ… SL, potem kieruj siÄ™ przed siebie i zniszcz ten silos." +msgstr "Zabezpiecz twojÄ… SL, potem kieruj siÄ™ lÄ…dem i zniszcz silos rakietowy." #: data/base/messages/strings/cam3strings.txt:33 #: data/base/messages/strings/cam3strings.txt:38 @@ -5321,11 +5339,11 @@ msgstr "MISJA SEKTORA PÓÅNOCNEGO: Uderzenie nuklearne" #: data/base/messages/strings/cam3strings.txt:34 msgid "All units must escape the area before the warhead detonates." -msgstr "Wszystkie jednostki muszÄ… uciec z tego obszaru zanim gÅ‚owica eksloduje." +msgstr "Wszystkie jednostki muszÄ… uciec z tego obszaru zanim eksploduje gÅ‚owica." #: data/base/messages/strings/cam3strings.txt:35 msgid "Air-lift by transport is not possible. You'll have to head overland." -msgstr "Transport powietrzny jest niemożliwy. Musisz wydostać siÄ™ samodzielnie." +msgstr "Transport powietrzny jest niemożliwy. Musisz wydostać siÄ™ drogÄ… lÄ…dowÄ…." #: data/base/messages/strings/cam3strings.txt:39 msgid "The mountain range to the east should shield you from the blast." @@ -5333,7 +5351,7 @@ msgstr "Góry na wschodzie powinny ochronić was przed falÄ… uderzeniowÄ…." #: data/base/messages/strings/cam3strings.txt:40 msgid "The valley is your only chance of escape." -msgstr "Dolina jest jedynÄ… szansÄ… na ucieczkÄ™." +msgstr "Dolina jest twojÄ… jedynÄ… szansÄ… na ucieczkÄ™." #: data/base/messages/strings/cam3strings.txt:43 msgid "AWAY TEAM UPDATE" @@ -5341,23 +5359,23 @@ msgstr "RAPORT ODLEGÅEJ DRUÅ»YNY" #: data/base/messages/strings/cam3strings.txt:44 msgid "All communication with the away team was lost after the nuclear explosions." -msgstr "CaÅ‚a komunikacja zostaÅ‚a utracona po wybuchu." +msgstr "CaÅ‚a komunikacja z odlegÅ‚Ä… drużynÄ… zostaÅ‚a utracona po wybuchach jÄ…drowych." #: data/base/messages/strings/cam3strings.txt:45 msgid "Their last transmission indicated they were heading back to base." -msgstr "Ich ostatniÄ… transmisjÄ… byÅ‚o to że wracajÄ… do bazy." +msgstr "Ich ostatnia transmisja wskazuje na to że wracajÄ… do bazy." #: data/base/messages/strings/cam3strings.txt:48 msgid "NORTHERN SECTOR MISSION: Assist Team Gamma" -msgstr "MISJA SEKTORA PÓÅNOCNEGO: Wspomóż BazÄ™ Gamma" +msgstr "MISJA SEKTORA PÓÅNOCNEGO: Wesprzyj DrużynÄ™ Gamma" #: data/base/messages/strings/cam3strings.txt:49 msgid "You are to assist Team Gamma." -msgstr "Musisz wesprzeć BazÄ™ Gamma." +msgstr "Musisz wesprzeć DrużynÄ™ Gamma." #: data/base/messages/strings/cam3strings.txt:50 msgid "On reaching Gamma Base, help secure the area from further NEXUS attacks." -msgstr "Kiedy osiÄ…gniesz BazÄ™ Gamma, pomóż zabezpieczyć teren przed atakami NEXUS." +msgstr "Kiedy dotrzesz do Bazy Gamma, pomóż zabezpieczyć teren przed atakami NEXUS." #: data/base/messages/strings/cam3strings.txt:53 msgid "NEXUS DEFEATED" @@ -5369,11 +5387,11 @@ msgstr "Dowódco, pokonaliÅ›my NEXUS." #: data/base/messages/strings/cam3strings.txt:55 msgid "Unfortunately, our systems' performance has been affected by NEXUS. We are trying to rectify this." -msgstr "Niestety, wydajność naszych systemów zostaÅ‚a zainfekowana przez NEXUS. Próbujemy to odwrócić." +msgstr "Niestety, wydajność naszych systemów zostaÅ‚a uszkodzona przez NEXUS. Próbujemy to naprawić." #: data/base/messages/strings/cam3strings.txt:58 msgid "We are currently receiving this transmission." -msgstr "WÅ‚aÅ›nie dostaliÅ›my tÄ… transmisjÄ™." +msgstr "WÅ‚aÅ›nie odbieramy tÄ… transmisjÄ™." #: data/base/messages/strings/cam3strings.txt:64 msgid "TRANSPORT MISSION: Team Alpha Detected" @@ -5381,15 +5399,15 @@ msgstr "MISJA TRANSPORTOWA: Wykryto DrużynÄ™ Alfa" #: data/base/messages/strings/cam3strings.txt:65 msgid "Take a scout force to these coordinates and evaluate the situation." -msgstr "WyÅ›lij zwiad na te współrzÄ™dne i zbadaj sytuacjÄ™." +msgstr "WyÅ›lij zwiad na te współrzÄ™dne i oceÅ„ sytuacjÄ™." #: data/base/messages/strings/cam3strings.txt:66 msgid "Determine whether they are Team Alpha. If so, rescue and escort them back to the LZ." -msgstr "Dowiedz siÄ™, gdzie jest Drużyna Alfa. JeÅ›li jest, uratuj ich i eskortuj z powrotem do SL." +msgstr "Sprawdź czy sÄ… oni DrużynÄ… Alfa. JeÅ›li tak, uratuj ich i odeskortuj z powrotem do SL." #: data/base/messages/strings/cam3strings.txt:68 msgid "This group are part of Team Alpha, Rescue them and escort them to the LZ." -msgstr "Ta grupa jest częściÄ… Drużyny Alfa, uratuj ich i eskortuj do SL." +msgstr "Ta grupa jest częściÄ… Drużyny Alfa, uratuj ich i odeskortuj do SL." #: data/base/messages/strings/cam3strings.txt:71 msgid "NORTHERN SECTOR MISSION: Team Alpha Debrief" @@ -5401,11 +5419,11 @@ msgstr "Transfer energii z Drużyny Alfa w toku." #: data/base/messages/strings/cam3strings.txt:75 msgid "Commander, after you left the Western Sector we recovered this artifact." -msgstr "Dowódco, kiedy opuÅ›ciÅ‚eÅ› Sektor Zachodni zdobyliÅ›my ten artefakt." +msgstr "Dowódco, po tym jak opuÅ›ciÅ‚eÅ› Sektor Zachodni zdobyliÅ›my ten artefakt." #: data/base/messages/strings/cam3strings.txt:76 msgid "The benefits from researching it could be vast." -msgstr "KorzyÅ›ci ze zbadania go mogÄ… byc ogromne." +msgstr "KorzyÅ›ci ze zbadania go mogÄ… być ogromne." #: data/base/messages/strings/cam3strings.txt:79 msgid "Enemy forces are ....... from these coordinates." @@ -5417,7 +5435,7 @@ msgstr "ObroÅ„ bazÄ™ i ........." #: data/base/messages/strings/cam3strings.txt:81 msgid "Search and destroy ...." -msgstr "Znajdź i zniszcz .............." +msgstr "Znajdź i zniszcz ...." #: data/base/messages/strings/cam3strings.txt:84 msgid "TRANSPORT MISSION: Ambush NEXUS Forces" @@ -5425,23 +5443,23 @@ msgstr "MISJA TRANSPORTOWA: Zasadzka na siÅ‚y NEXUS" #: data/base/messages/strings/cam3strings.txt:85 msgid "Commander, your decisive actions halted the spread of NEXUS." -msgstr "Dowódco, twoje akcje przyczyniÅ‚y siÄ™ do zatrzymania rozprzestrzenienia siÄ™ NEXUS." +msgstr "Dowódco, twoje akcje wstrzymaÅ‚y rozprzestrzenianie siÄ™ NEXUS." #: data/base/messages/strings/cam3strings.txt:86 msgid "Before NEXUS was expelled, we intercepted this message - Decoding completed." -msgstr "Kiedy NEXUS siÄ™ wycofywaÅ‚, przechwyciliÅ›my tÄ… wiadomość - Dekodowanie zakoÅ„czone." +msgstr "Przed usuniÄ™ciem NEXUS, przechwyciliÅ›my tÄ… wiadomość - Dekodowanie zakoÅ„czone." #: data/base/messages/strings/cam3strings.txt:89 msgid "A NEXUS task force is heading for these coordinates." -msgstr "Drużyna zadaniowa NEXUS kieruje siÄ™ na te współrzÄ™dne." +msgstr "OddziaÅ‚ specjalny NEXUS kieruje siÄ™ na te współrzÄ™dne." #: data/base/messages/strings/cam3strings.txt:90 msgid "You have an opportunity to destroy NEXUS before they get there." -msgstr "Twoje zadanie polega na zniszczeniu NEXUS zanim siÄ™ tam dostanÄ…." +msgstr "Masz możliwość zniszczenia NEXUS zanim siÄ™ tam dostanÄ…." #: data/base/messages/strings/cam3strings.txt:91 msgid "Take an attack force and ambush NEXUS task force at ....... the ......." -msgstr "Weź drużynÄ™ szturmowÄ… i przygotuj zasadzkÄ™ na NEXUS w ........ " +msgstr "Weź drużynÄ™ szturmowÄ… i przygotuj zasadzkÄ™ na oddziaÅ‚ specjalny NEXUS w ........ " #: data/base/messages/strings/cam3strings.txt:94 msgid "TRANSPORT MISSION: Away Team" @@ -5453,11 +5471,11 @@ msgstr "Dowódco, twój atak na ......" #: data/base/messages/strings/cam3strings.txt:98 msgid "NEXUS exiting system." -msgstr "System wyjÅ›cia NEXUS." +msgstr " NEXUS opuszcza system." #: data/base/messages/strings/cam3strings.txt:101 msgid "Incoming transmission from away team." -msgstr "Transmisja przychodzÄ…ca z odlegÅ‚ej drużyny." +msgstr "Transmisja przychodzÄ…ca od odlegÅ‚ej drużyny." #: data/base/messages/strings/cam3strings.txt:104 msgid "Commander, we are attempting to return to base." @@ -5469,15 +5487,15 @@ msgstr "To jest nasza obecna pozycja." #: data/base/messages/strings/cam3strings.txt:106 msgid "Take control of our forces and lead us." -msgstr "Weź kontrolÄ™ nad naszymi siÅ‚ami i poprowadź nas." +msgstr "Przejmij kontrolÄ™ nad naszymi siÅ‚ami i poprowadź nas." #: data/base/messages/strings/cam3strings.txt:109 msgid "Control transfer successful." -msgstr "Transfer kontroli zakoÅ„czony." +msgstr "Transfer dowodzenia zakoÅ„czony." #: data/base/messages/strings/cam3strings.txt:110 msgid "Entering new zone." -msgstr "Przechodzenie na nowy obszar." +msgstr "Wkraczanie na nowy obszar." #: data/base/messages/strings/cam3strings.txt:113 msgid "Incoming Transmission..." @@ -5485,7 +5503,7 @@ msgstr "Transmisja przychodzÄ…ca..." #: data/base/messages/strings/cam3strings.txt:116 msgid "Elements of Team Gamma have contacted us." -msgstr "Elementy Drużyny Gamma skontaktowali siÄ™ z nami." +msgstr "Część Drużyny Gamma skontaktowaÅ‚a siÄ™ z nami." #: data/base/messages/strings/cam3strings.txt:117 msgid "They claim to be free of NEXUS, and offer their base as a site of operations." @@ -5501,11 +5519,11 @@ msgstr "MISJA SEKTORA PÓÅNOCNEGO: Satelity laserowe" #: data/base/messages/strings/cam3strings.txt:122 msgid "We are detecting strong energy surges from orbit." -msgstr "Wykrywamy silne źródÅ‚o energii z orbity." +msgstr "Wykrywamy silne fale energii z orbity." #: data/base/messages/strings/cam3strings.txt:123 msgid "The laser satellites are charged and moving towards our position." -msgstr "Satelity laserowe sÄ… naÅ‚adowane poruszajÄ… siÄ™ w stronÄ™ naszej pozycji." +msgstr "Satelity laserowe sÄ… naÅ‚adowane i zmierzajÄ… w naszym kierunku." #: data/base/messages/strings/cam3strings.txt:126 msgid "The 2nd Team Gamma base is at this location." @@ -5513,7 +5531,7 @@ msgstr "Druga Baza Gamma jest na tej lokacji." #: data/base/messages/strings/cam3strings.txt:127 msgid "We have limited time to evacuate this base and move to Gamma Base." -msgstr "Mamy ograniczony czas na ewakuacje tej bazy i przeniesienie do Bazy Gamma." +msgstr "Mamy ograniczony czas na ewakuacjÄ™ tej bazy i przeniesienie do Bazy Gamma." #: data/base/messages/strings/cam3strings.txt:130 msgid "The laser satellites are not functioning properly, they are misfiring." @@ -5521,7 +5539,7 @@ msgstr "Satelity laserowe nie dziaÅ‚ajÄ… prawidÅ‚owo, pudÅ‚ujÄ…." #: data/base/messages/strings/cam3strings.txt:131 msgid "They are directing their fire towards this position." -msgstr "KierujÄ… ostraÅ‚ w stronÄ™ tej pozycji." +msgstr "KierujÄ… ostrzaÅ‚ w stronÄ™ tej pozycji." #: data/base/messages/strings/cam3strings.txt:132 msgid "We will need to evacuate this base shortly." @@ -5529,7 +5547,7 @@ msgstr "Musimy szybko ewakuować tÄ… bazÄ™." #: data/base/messages/strings/cam3strings.txt:135 msgid "Team Gamma reports a missile silo at this location." -msgstr "Drużyna Gamma wykryÅ‚a silosy rakietowe na tej pozycji." +msgstr "Drużyna Gamma zameldowaÅ‚a o silosach rakietowych na tej pozycji." #: data/base/messages/strings/cam3strings.txt:136 msgid "They believe that the silo contains missiles capable of reaching high orbit." @@ -5537,11 +5555,11 @@ msgstr "WierzÄ…, że ten silos zawiera rakiety które można wystrzelić na orbi #: data/base/messages/strings/cam3strings.txt:137 msgid "Capture this silo at all costs." -msgstr "Przejmij te silosy za wszelkÄ… cenÄ™." +msgstr "Przejmij ten silos za wszelkÄ… cenÄ™." #: data/base/messages/strings/cam3strings.txt:140 msgid "Missile silos captured." -msgstr "Silosy rakietowe przejÄ™te" +msgstr "Silosy rakietowe przejÄ™te." #: data/base/messages/strings/cam3strings.txt:143 #: data/base/messages/strings/cam3strings.txt:161 @@ -5554,7 +5572,7 @@ msgstr "Dowódco, w tych silosach sÄ… rakiety." #: data/base/messages/strings/cam3strings.txt:145 msgid "Nexus is preventing us from accessing the missile control code." -msgstr "NEXUS próbuje zapobiec dostÄ™pu do kodów kontrolujÄ…cych rakiety." +msgstr "NEXUS próbuje zapobiec dostÄ™powi do kodów kontrolujÄ…cych rakiety." #: data/base/messages/strings/cam3strings.txt:148 msgid "NEXUS is present in our systems." @@ -5562,15 +5580,15 @@ msgstr "NEXUS jest w naszych systemach" #: data/base/messages/strings/cam3strings.txt:149 msgid "To defeat NEXUS we must research the Nexus Intruder Program." -msgstr "Aby go pokonać musimy zbadać program-intruz NEXUS." +msgstr "Aby go pokonać musimy zbadać program NEXUS Intruder." #: data/base/messages/strings/cam3strings.txt:150 msgid "Assign this task to a research facility." -msgstr "Przypisz to zadanie Stacji Badawczej." +msgstr "Przypisz to zadanie do stacji badawczej." #: data/base/messages/strings/cam3strings.txt:153 msgid "NEXUS forces detected at these locations." -msgstr "SiÅ‚y NEXUS wykryto na tych lokacjach." +msgstr "Wykryto siÅ‚y NEXUS na tych lokacjach." #: data/base/messages/strings/cam3strings.txt:157 msgid "NEXUS has been eradicated from all Project systems." @@ -5578,11 +5596,11 @@ msgstr "NEXUS zostaÅ‚ usuniÄ™ty ze wszystkich systemów Projektu." #: data/base/messages/strings/cam3strings.txt:158 msgid "We are attempting to access the missile control codes." -msgstr "Próbujemy uzyskać dostep do kodów kontrolujÄ…cych rakiety." +msgstr "Próbujemy uzyskać dostÄ™p do kodów kontrolujÄ…cych rakiety." #: data/base/messages/strings/cam3strings.txt:162 msgid "A research facility is required to crack the code. Allocate one immediately." -msgstr "Stacja Badawcza jest wymagana do zÅ‚amania kodu. Natychmiast jednÄ… zbuduj." +msgstr "Stacja badawcza jest wymagana do zÅ‚amania kodu. Przydziel natychmiast jednÄ…." #: data/base/messages/strings/cam3strings.txt:163 msgid "Protect the missile silos from NEXUS attacks." @@ -5598,7 +5616,7 @@ msgstr "Uzbrajanie rakiet w toku." #: data/base/messages/strings/cam3strings.txt:168 msgid "More research is required to proceed further." -msgstr "WiÄ™cej badaÅ„ jest wymaganych." +msgstr "Wymaganych jest wiÄ™cej badaÅ„." #: data/base/messages/strings/cam3strings.txt:171 msgid "PROJECT UPDATE: 2nd Level Missile Code Cracked." @@ -5606,11 +5624,11 @@ msgstr "AKTUALIZACJA: Drugi poziom kodów rakietowych zÅ‚amany." #: data/base/messages/strings/cam3strings.txt:172 msgid "Missile target programming in progress." -msgstr "Zaprogramowanie celu rakiet w toku." +msgstr "Programowanie celu rakiet w toku." #: data/base/messages/strings/cam3strings.txt:173 msgid "Once level 3 codes are cracked we initiate launch procedures." -msgstr "Kiedy zÅ‚amiemy poziom 3 możemy zaczynać procedurÄ™ odpalenia." +msgstr "Kiedy zÅ‚amiemy kody poziomu 3 możemy zaczynać procedurÄ™ odpalenia." #: data/base/messages/strings/cam3strings.txt:176 msgid "PROJECT UPDATE: 3rd Level Missile Code Cracked." @@ -5651,12 +5669,12 @@ msgstr "PrzyszedÅ‚ raport wywiadu... Drużyna Gamma" #: data/base/messages/strings/genstrings.txt:4 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:4 msgid "Briefing Commences:" -msgstr "Aktualne cele:" +msgstr "RozpoczÄ™cie odprawy:" #: data/base/messages/strings/genstrings.txt:7 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:7 msgid "Scavenger Outpost" -msgstr "Posterunek Padlinożerców" +msgstr "Posterunek Åšmieciarzy" #: data/base/messages/strings/genstrings.txt:8 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:8 @@ -5671,12 +5689,12 @@ msgstr "Nieznany artefakt" #: data/base/messages/strings/genstrings.txt:10 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:10 msgid "Source of Power Surge" -msgstr "Silne źródÅ‚o energii" +msgstr "ŹródÅ‚o energii" #: data/base/messages/strings/genstrings.txt:13 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:13 msgid "Landing Zone" -msgstr "Strefa LÄ…dowania" +msgstr "Strefa lÄ…dowania" #: data/base/messages/strings/genstrings.txt:14 #: data/base/messages/strings/genstrings.txt:24 @@ -5723,7 +5741,7 @@ msgstr "Transmisja przychodzÄ…ca" #: data/base/messages/strings/genstrings.txt:30 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:30 msgid "Incoming intelligence report." -msgstr "PrzyszÅ‚y dane wywiadu" +msgstr "PrzyszedÅ‚ raport wywiadu." #: data/base/messages/strings/genstrings.txt:33 #: data/mods/multiplay/ntw/messages/strings/genstrings.txt:33 @@ -5746,7 +5764,7 @@ msgstr "Transportowiec" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Ciężarówka" @@ -5755,7 +5773,7 @@ msgstr "Ciężarówka" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Å»mija karabin na koÅ‚ach" @@ -5782,7 +5800,7 @@ msgstr "Å»mija z lekkim dziaÅ‚em na gÄ…sienicach" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Kobra z ciężkim karabinem na pół-gÄ…sienicach" @@ -5813,7 +5831,7 @@ msgstr "Å»mija naprawcza na pół-gÄ…sienicach" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Å»mija podwójny karabin na koÅ‚ach" @@ -5830,7 +5848,7 @@ msgstr "Å»mija z ciężkim karabinem na pół-gÄ…sienicach" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Å»mija ciężki karabin na gÄ…sienicach" @@ -5854,7 +5872,7 @@ msgstr "Å»mija Bunker Buster na koÅ‚ach" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Kobra ze Å›rednim dziaÅ‚em na gÄ…sienicach" @@ -5866,7 +5884,7 @@ msgstr "Kobra z ciężkim dziaÅ‚em na gÄ…sienicach" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Kobra ciężarówka" @@ -5876,7 +5894,7 @@ msgstr "Kobra z radarem na pół-gÄ…sienicach" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Kobra z miotaczem ognia na gÄ…sienicach" @@ -5893,7 +5911,7 @@ msgstr "Kobra dowodzÄ…ca na pół-gÄ…sienicach" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Kobra Lancer na pół-gÄ…sienicach" @@ -5907,33 +5925,33 @@ msgid "Light Cannon Python Tracks" msgstr "Pyton z lekkim dziaÅ‚em na gÄ…sienicach" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Pyton z lekkim dziaÅ‚em na gÄ…sienicach" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Pyton z ciężkim dziaÅ‚em na gÄ…sienicach" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Pyton wieżyczka dowodzÄ…ca na gÄ…sienicach" #: data/base/messages/strings/names.txt:199 #: data/mp/messages/strings/names.txt:202 msgid "Scavenger" -msgstr "Padlinożerca" +msgstr "Åšmieciarz" #: data/base/messages/strings/names.txt:200 #: data/mp/messages/strings/names.txt:203 @@ -5990,7 +6008,7 @@ msgstr "Cywil" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Karabinier" @@ -5999,9 +6017,9 @@ msgstr "Karabinier" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Miotacz" @@ -6011,8 +6029,8 @@ msgstr "Miotacz" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lancer" @@ -6021,7 +6039,7 @@ msgstr "Lancer" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "DziaÅ‚onowy" @@ -6115,8 +6133,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Wieżyczka dowodzÄ…ca" @@ -6220,14 +6238,14 @@ msgstr "Pół-gÄ…sienice III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "NapÄ™d cyborgów II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "NapÄ™d cyborgów III" @@ -6249,7 +6267,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "NapÄ™d cyborgów" @@ -6277,8 +6295,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Wieża radarowa" @@ -6286,15 +6304,15 @@ msgstr "Wieża radarowa" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Umocniona wieża radarowa" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Wieżyczka radarowa" @@ -6318,9 +6336,9 @@ msgstr "Wieżyczka CB" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" -msgstr "Wieża VTOL Strike" +msgstr "Wieżyczka uderzeniowa VTOL" #: data/base/messages/strings/names.txt:377 #: data/mp/messages/strings/names.txt:384 @@ -6354,7 +6372,7 @@ msgstr "Fabryka" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "ModuÅ‚ Fabryki" @@ -6366,7 +6384,7 @@ msgstr "Generator" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "ModuÅ‚ energetyczny" @@ -6378,7 +6396,7 @@ msgstr "Stacja Badawcza" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "ModuÅ‚ badawczy" @@ -6390,7 +6408,7 @@ msgstr "Zburz strukturÄ™" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Stacja naprawcza" @@ -6411,8 +6429,8 @@ msgstr "Betonowy mur" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Fabryka VTOL" @@ -6423,30 +6441,30 @@ msgstr "Stanowisko miotacza Inferno" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Umocnienie z miotaczem Inferno" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Stanowisko moździerza Pepperpot" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Stanowisko haubicy Hellstorm" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Stanowisko dziaÅ‚ka AA Tornado" @@ -6457,27 +6475,27 @@ msgstr "Stanowisko dziaÅ‚ka AA Cyclone" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Stanowisko dziaÅ‚ka AA Hurricane" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Stanowisko dziaÅ‚ka AA Whirlwind" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Bateria rakiet kropelkowych" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Wieża strażnicza z dziaÅ‚em szturmowym" @@ -6488,29 +6506,29 @@ msgstr "Wieża strażnicza z karabinem szturmowym" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Umocnienie z karabinem szturmowym" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Umocnienie z dziaÅ‚em szturmowym" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "Wieża CB" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Wieża CB VTOL" @@ -6520,168 +6538,168 @@ msgstr "Wieża radarowa VTOL" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Stanowisko ciężkiego karabinu" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Umocnienie z lekkim dziaÅ‚em" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Umocnienie ze Å›rednim dziaÅ‚em" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Umocnienie z ciężkim dziaÅ‚em" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Umocnienie z miotaczem ognia" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Umocnienie z rakietami Lancer" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Wieża strażnicza z karabinem" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Wieża strażnicza z podwójnym karabinem" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Wieża strażnicza z ciężkim karabinem" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Wieża strażnicza z miotaczem ognia" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Wieża strażnicza z rakietami Lancer" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Bateria Wieża z minirakietami" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Bunkier z karabinem" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Bunkier z podwójnym karabinem" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Bunkier z ciężkim karabinem" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Bunkier z lekkim dziaÅ‚em" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Bunkier z miotaczem ognia" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Bunkier z rakietami Lancer" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "PuÅ‚apki czoÅ‚gowe" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "ZÄ™by smoka" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Platforma dozbrajania VTOL" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Stanowisko haubicy" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Stanowisko lasera Flashlight" @@ -6692,139 +6710,139 @@ msgstr "Umocnienie z laserem Flashlight" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Umocnienie z Railgunem" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Wieża z rakietami Scourge" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Wieża z wyrzutniÄ… ostrz" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Stanowisko dziaÅ‚a Gaussa" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Lekkie dziaÅ‚o" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Åšrednie dziaÅ‚o" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Ciężkie dziaÅ‚o" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "DziaÅ‚o HPV" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "DziaÅ‚o szturmowe" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Haubica" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Ground Shaker" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Stanowisko haubicy Ground Shaker" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Hellstorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Laser pulsacyjny" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Karabin maszynowy" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Podwójny karabin maszynowy" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Ciężki karabin maszynowy" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Karabin szturmowy" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Rakiety Scourge" @@ -6835,80 +6853,80 @@ msgstr "Rakiety Angel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "ObroÅ„ca SAM" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Rakiety Archangel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "MÅ›ciciel SAM" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "Rakiety Scourge VTOL" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Moździerz" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Stanowisko moździerza" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombard" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Stanowisko moździerza Bombard" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Pepperpot" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Stanowisko moździerza Pepperpot" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Wyrzutnia ostrz" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Railgun" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "DziaÅ‚o Gaussa" @@ -6918,74 +6936,74 @@ msgid "Mini-Rocket Artillery" msgstr "Artyleria minirakiet" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Bunker Buster" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Minirakiety" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Rakiety kropelkowe" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Tank Killer" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "Bunker Buster VTOL" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "Minirakiety VTOL" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "Lancer VTOL" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "Tank Killer VTOL" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "DziaÅ‚ko AA Tornado" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "DziaÅ‚ko AA Cyclone" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "DziaÅ‚ko AA Whirlwind" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "DziaÅ‚ko AA Hurricane" @@ -6994,86 +7012,86 @@ msgid "LasSat" msgstr "LasSat" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "DziaÅ‚o VTOL" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "DziaÅ‚o HPV VTOL" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "DziaÅ‚o szturmowe VTOL" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "Laser pulsacyjny VTOL" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "Karabin VTOL" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "Podwójny karabin VTOL" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Ciężki karabin VTOL" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "Karabin szturmowy VTOL" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "Wyrzutnia ostrz VTOL" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "Railgun VTOL" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Bomba zbliżeniowa" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Superbomba zbliżeniowa" #: data/base/messages/strings/names.txt:575 msgid "VTOL Cluster Bombs Bay" -msgstr "PrzedziaÅ‚ bomb odÅ‚amkowych" +msgstr "Luk bomb odÅ‚amkowych" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" -msgstr "PrzedziaÅ‚ bomb HEAP" +msgstr "Luk bomb HEAP" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" -msgstr "PrzedziaÅ‚ bomb fosforowych" +msgstr "Luk bomb fosforowych" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" -msgstr "PrzedziaÅ‚ bomb termitowych" +msgstr "Luk bomb termitowych" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Mur Collective" @@ -7090,307 +7108,307 @@ msgid "NEXUS CWall" msgstr "Narożnik muru NEXUS" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 RESEARCH" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "ADVANCED RESEARCH" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 VEHICLES" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 WEAPONS" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SYSTEMS" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DEFENSES" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 STRUCTURES" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 RESEARCH" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 VEHICLES" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 WEAPONS" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SYSTEMS" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 DEFENSES" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 STRUCTURES" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 RESEARCH" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "PoÅ‚Ä…czenie synaptyczne" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Kody namierzajÄ…ce rakiety" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Drugi poziom kodów namierzajÄ…ce rakiety" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Trzeci poziom kodów - sekwencja odpalenia" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Pancerz termiczny Cyborgów" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Pancerz termiczny Cyborgów Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Pancerz termiczny Cyborgów Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Wysoko odporny pancerz termiczny Cyborgów" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Wysoko odporny pancerz termiczny Cyborgów Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Wysoko odporny pancerz termiczny Cyborgów Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Pancerze kompozytowe Cyborgów" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Pancerze kompozytowe Cyborgów Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Pancerze kompozytowe Cyborgów Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Ulepszone pancerze kompozytowe Cyborgów" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Ulepszone pancerze kompozytowe Cyborgów Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Ulepszone pancerze kompozytowe Cyborgów Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Utwardzone pancerze kompozytowe Cyborgów" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Utwardzone pancerze kompozytowe Cyborgów Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Utwardzone pancerze kompozytowe Cyborgów Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Cyborg Bunker Blaster" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Cyborg z ciężkim karabinem" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Cyborg miotacz" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Cyborg karabinier" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Cyborg lancer" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" -msgstr "[Cyborg szturmowy karabinier" +msgstr "Cyborg szturmowy karabinier" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Cyborg z wyrzutniÄ… ostrz" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" -msgstr "Cyborg z wyrzutniÄ… Scourge" +msgstr "Cyborg z rakietami Scourge" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Cyborg z laserem Flashlight" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "SkaczÄ…cy Bunker Blaster" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "SkaczÄ…cy dziaÅ‚onowy" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "SkaczÄ…cy Lancer" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "SkaczÄ…cy karabinier szturmowy" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "SkaczÄ…cy cyborg z wyrzutniÄ… ostrz" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" -msgstr "SkaczÄ…cy Scourge" +msgstr "SkaczÄ…cy z rakietami Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "SkaczÄ…cy cyborg z laserem flashlight" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Plecak odrzutowy cyborgów" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Beton" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Hardcrete" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Ulepszony beton" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Ulepszony beton Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Ulepszony beton Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Superbeton" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Superbeton Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Superbeton Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plasbeton" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plasbeton Mk2" @@ -7405,15 +7423,15 @@ msgstr "Stanowisko dziaÅ‚a HPV" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Stanowisko rakiet Tank Killer" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Stanowisko moździerza Bombard" @@ -7422,55 +7440,55 @@ msgid "Angel Missile Battery" msgstr "Bateria rakiet Angel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Bateria rakiet Archangel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Stanowisko moździerza" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Bateria minirakiet" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Stanowisko lasera pulsacyjnego" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Stanowisko Railguna" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Stanowisko dziaÅ‚a szturmowego" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Stanowisko karabinu szturmowego" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Stanowisko SAM MÅ›ciciel" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Stanowisko SAM ObroÅ„ca" @@ -7488,15 +7506,15 @@ msgstr "Wieża strażnicza z minirakietami" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Umocnienie z rakietami Scourge" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Umocnienie z rakietami Tank Killer" @@ -7507,71 +7525,71 @@ msgstr "Umocnienie z dziaÅ‚em HPV" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Umocnienie z dziaÅ‚em Gaussa" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Centrum koordynacji dowodzenia" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Automatyczna produkcja Cyborgów Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Automatyczna produkcja Cyborgów Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Robotyczna produkcja Cyborgów Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Robotyczna produkcja Cyborgów Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Zaawansowana produkcja Cyborgów" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Zaawansowana produkcja Cyborgów Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Zaawansowana produkcja Cyborgów Mk3" #: data/base/messages/strings/names.txt:795 msgid "Automated Factory Production Mk2" -msgstr "Automatyczna produkcja Fabryki Mk2" +msgstr "Automatyzacja produkcji Fabryki Mk2" #: data/base/messages/strings/names.txt:796 msgid "Automated Factory Production Mk3" -msgstr "Automatyczna produkcja Fabryki Mk3" +msgstr "Automatyzacja produkcji Fabryki Mk3" #: data/base/messages/strings/names.txt:797 msgid "Robotic Factory Production" -msgstr "Robotyczna produkcja Fabryki" +msgstr "Robotyzacja produkcji Fabryki" #: data/base/messages/strings/names.txt:798 msgid "Robotic Factory Production Mk2" -msgstr "Robotyczna produkcja Fabryki Mk2" +msgstr "Robotyzacja produkcji Fabryki Mk2" #: data/base/messages/strings/names.txt:799 msgid "Robotic Factory Production Mk3" -msgstr "Robotyczna produkcja Fabryki Mk3" +msgstr "Robotyzacja produkcji Fabryki Mk3" #: data/base/messages/strings/names.txt:800 #: data/mp/messages/resmessagesall.rmsg:785 @@ -7587,54 +7605,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Zaawansowana produkcja Fabryki Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Wzmocnione materiaÅ‚y struktur bazy Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Wzmocnione materiaÅ‚y struktur bazy Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Utwardzone materiaÅ‚y struktur bazy Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Utwardzone materiaÅ‚y struktur bazy Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Zaawansowane materiaÅ‚y struktur bazy Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Zaawansowane materiaÅ‚y struktur bazy Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Turbina gazowa Generatora" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Turbina oparowa Generatora" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Stacja Naprawcza" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Zautomatyzowana Stacja Naprawcza" @@ -7671,172 +7689,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Zaawansowana Stacja Naprawcza Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Analiza danych poÅ‚Ä…czenia synaptycznego" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Analiza danych poÅ‚Ä…czenia synaptycznego Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Analiza danych poÅ‚Ä…czenia synaptycznego Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Dedykowana analiza danych poÅ‚Ä…czenia synaptycznego Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Dedykowana analiza danych poÅ‚Ä…czenia synaptycznego Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Mózg badawczy poÅ‚Ä…czenia synaptycznego Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Mózg badawczy poÅ‚Ä…czenia synaptycznego Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Automatyczne dozbrajanie VTOL Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Automatyczne dozbrajanie VTOL Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Robotyczne dozbrajanie VTOL Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Robotyczne dozbrajanie VTOL Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Robotyczne dozbrajanie VTOL Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Robotyczna produkcja VTOL Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Robotyczna produkcja VTOL Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Zaawansowana produkcja VTOL Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Zaawansowana produkcja VTOL Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Samonaprawa Cyborgów" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Automatyczna naprawa Cyborgów Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Automatyczna naprawa Cyborgów Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Samonaprawa struktur obronnych" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Automatyczna naprawa struktur obronnych Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Automatyczna naprawa struktur obronnych Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Samonaprawa struktur bazy" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Automatyczna naprawa struktur bazy Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Automatyczna naprawa struktur bazy Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Samonaprawa pojazdów" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Automatyczna naprawa pojazdów Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Automatyczna naprawa pojazdów Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" -msgstr "Ulepszenie sensora" +msgstr "Ulepszenie radaru" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Jednostka budujÄ…ca" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Inżynieria" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Ulepszona Inżynieria" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Zaawansowana Inżynieria" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Wieżyczka naprawiajÄ…ca" @@ -7846,90 +7864,90 @@ msgstr "Ciężka wieżyczka naprawiajÄ…ca" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Mobile Repair Upgrade" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Mobile Repair Upgrade Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "Wieżyczka CB" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" -msgstr "Ulepszenie sensora CB" +msgstr "Ulepszenie radaru CB" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" -msgstr "Ulepszenie sensora CB 2" +msgstr "Ulepszenie radaru CB 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" -msgstr "Ulepszenie sensora CB 3" +msgstr "Ulepszenie radaru CB 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "Wieżyczka CB VTOL" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" -msgstr "Ulepszenie sensora CB VTOL" +msgstr "Ulepszenie radaru CB VTOL" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" -msgstr "Ulepszenie sensora CB VTOL 2" +msgstr "Ulepszenie radaru CB VTOL 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" -msgstr "Ulepszenie sensora CB VTOL 3" +msgstr "Ulepszenie radaru CB VTOL 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" -msgstr "Ulepszenie VTOL Strike" +msgstr "Ulepszenie wieży uderzeniowej VTOL" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" -msgstr "Ulepszenie VTOL Strike Mk2" +msgstr "Ulepszenie wieży uderzeniowej VTOL Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" -msgstr "Ulepszenie VTOL Strike Mk3" +msgstr "Ulepszenie wieży uderzeniowej VTOL Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" -msgstr "Wieża VTOL Strike" +msgstr "Wieża uderzeniowa VTOL" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Ulepszony Scrambler" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Scrambler Turret Mk2" #: data/base/messages/strings/names.txt:913 msgid "NEXUS Intruder Program" -msgstr "Program intruz NEXUS" +msgstr "Program NEXUS Intruder" # 'Electronics resistance' sound better than 'resitance circuits' #: data/base/messages/strings/names.txt:914 @@ -7945,316 +7963,316 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Systemy obronne elektroniki Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Sensor Lock" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Pancerz termiczny" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Pancerz termiczny Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Pancerz termiczny Mk3" # I used 'high resistant' as 'high intensity' for better understand #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Wysoko odporny pancerz termiczny" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Wysoko odporny pancerz termiczny Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Wysoko odporny pancerz termiczny Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Lekki kadÅ‚ub - Å»mija" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Lekki kadÅ‚ub - Leopard" # 'Retaliation', 'Retribution' and 'Vengeance' has the same meaning in Polish. I used synonims, but it can sound weird. #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Lekki kadÅ‚ub - OdpÅ‚ata" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Lekki kadÅ‚ub - Robal" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Åšredni kadÅ‚ub - Kobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Åšredni kadÅ‚ub - Pantera" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Åšredni kadÅ‚ub - Odwet" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Åšredni kadÅ‚ub - Skorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Ciężki kadÅ‚ub - Tygrys" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Ciężki kadÅ‚ub - Zemsta" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Ciężki kadÅ‚ub - Pyton" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Ciężki kadÅ‚ub - Modliszka" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "System wtrysku paliwa Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "System wtrysku paliwa Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Turbo-doÅ‚adowany silnik Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Turbo-doÅ‚adowany silnik Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Turbina paliwowa Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Turbina paliwowa Mk3" # I used 'Layer' instead of 'Alloy'. Result meaning doesn't changed. #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Pokrywy kompozytowe" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Pokrywy kompozytowe Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Pokrywy kompozytowe Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Ulepszone pokrywy kompozytowe" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Ulepszone pokrywy kompozytowe Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Ulepszone pokrywy kompozytowe Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Utwardzone pokrywy kompozytowe" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Utwardzone pokrywy kompozytowe Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Utwardzone pokrywy kompozytowe Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "NapÄ™d poduszkowy" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "NapÄ™d poduszkowy II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "NapÄ™d pół-gÄ…sienicowy" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "NapÄ™d pół-gÄ…sienicowy II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "NapÄ™d gÄ…sienicowy" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "NapÄ™d gÄ…sienicowy II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "NapÄ™d VTOL" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "NapÄ™d VTOL II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "NapÄ™d koÅ‚owy II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Termiczne namierzanie AA" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "Pociski AA namierzajÄ…ce cel" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Komputer AA przewidujÄ…cy cel" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Wybuchowe pociski AA" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "Wybuchowe pociski AA Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "Wybuchowe pociski AA Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Pociski AA HEAP" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "Pociski AA HEAP Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "Pociski AA HEAP Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Åadowacz przeskakujÄ…cy AA" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "Åadowacz przeskakujÄ…cy AA Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "Åadowacz przeskakujÄ…cy AA Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Åadowacz Å‚aÅ„cuchowy AA" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "Åadowacz Å‚aÅ„cuchowy AA Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "Åadowacz Å‚aÅ„cuchowy AA Mk3" #: data/base/messages/strings/names.txt:1003 msgid "Cluster Bombs Bay" -msgstr "PrzedziaÅ‚ bomb odÅ‚amkowych" +msgstr "Luk bomb odÅ‚amkowych" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" -msgstr "PrzedziaÅ‚ bomb HEAP" +msgstr "Luk bomb HEAP" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" -msgstr "PrzedziaÅ‚ bomb fosforowych" +msgstr "Luk bomb fosforowych" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" -msgstr "PrzedziaÅ‚ bomb termitowych" +msgstr "Luk bomb termitowych" # I used 'Airstrike' instead of 'Bombsight' for better meaning #: data/base/messages/strings/names.txt:1008 @@ -8270,256 +8288,256 @@ msgid "Target Acquisition Bombsight" msgstr "Lokalizowanie celu nalotu" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Wskaźnik odlegÅ‚oÅ›ciowy dziaÅ‚a" # I used 'laser pointer' instead of 'designator' because I can't find good meaning for that word. #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Celownik laserowy dziaÅ‚a" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Pociski dziaÅ‚a HEAT" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Pociski dziaÅ‚a HEAT Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Pociski dziaÅ‚a HEAT Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Pociski dziaÅ‚a APFSDS" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Pociski dziaÅ‚a APFSDS Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Pociski dziaÅ‚a APFSDS Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Pociski dziaÅ‚a HVAPFSDS" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Pociski dziaÅ‚a HVAPFSDS Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Pociski dziaÅ‚a HVAPFSDS Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Automatycznie Å‚adowanie dziaÅ‚a" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Automatycznie Å‚adowanie dziaÅ‚a Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Automatycznie Å‚adowanie dziaÅ‚a Mk3" # I translated 'Rapid' as 'Hyper'. Result meaning doesn't change. #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "HiperÅ‚adowanie dziaÅ‚a" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "HiperÅ‚adowanie dziaÅ‚a Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "HiperÅ‚adowanie dziaÅ‚a Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Ulepszone namierzanie lasera" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Ulepszone namierzanie lasera Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Ulepszone namierzanie lasera Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Emiter lasera wysokiej mocy" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Emiter lasera wysokiej mocy Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Emiter lasera wysokiej mocy Mk3" # I had trouble with this. Finally, I translated 'Energizer' into 'Accelerator' #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Akcelerator termopolowy" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Akcelerator termopolowy Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Akcelerator termopolowy Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Wyższa temperatura żelu do miotacza" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Wyższa temperatura żelu do miotacza Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Wyższa temperatura żelu do miotacza Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "SupergorÄ…cy żel do miotacza" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "SupergorÄ…cy żel do miotacza Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "SupergorÄ…cy żel do miotacza Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Automatyczne Å‚adowanie miotacza" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Automatyczne Å‚adowanie miotacza Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Automatyczne Å‚adowanie miotacza Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Ciężki miotacz ognia - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Ciężka haubica - Ground Shaker" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Obrotowa haubica - Hellstorm" # I can't find better word for this. 'Target Acquisition' translated into 'Target guiding' #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Pociski artylerii namierzajÄ…ce cel" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Pociski artylerii namierzajÄ…ce cel Mk3" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Pociski artylerii przewidujÄ…ce cel" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Pociski haubicy HE" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Pociski haubicy HE Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Pociski haubicy HE Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Pociski haubicy HEAP" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Pociski haubicy HEAP Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Pociski haubicy HEAP Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "AutoÅ‚adowanie haubicy" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "AutoÅ‚adowanie haubicy Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "AutoÅ‚adowanie haubicy Mk3" @@ -8528,57 +8546,57 @@ msgid "Fast Loader" msgstr "Szybkie Å‚adowanie" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - Flashlight" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Utwardzone pociski karabinu" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Pociski karabinu APDSB " #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Pociski karabinu APDSB Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Pociski karabinu APDSB Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Wolframowe pociski karabinu" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Wolframowe pociski karabinu Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Wolframowe pociski karabinu Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Uranowe pociski karabinu" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Uranowe pociski karabinu" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Ulepszenie do Chaingun" @@ -8587,142 +8605,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Szybkostrzelny Chaingun" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Bardzo szybkostrzelny Chaingun" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Rakiety przewidujÄ…ce cel" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Rakiety Znajdź i Zniszcz" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Zaawansowana gÅ‚owica rakiet" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Zaawansowana gÅ‚owica rakiet Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Zaawansowana gÅ‚owica rakiet Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Zaawansowany system rozmieszczenia rakiet" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Zaawansowany system rozmieszczenia rakiet Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Zaawansowany system rozmieszczenia rakiet Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "GÅ‚owica rakiet HEAP" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "GÅ‚owica rakiet HEAP Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "GÅ‚owica rakiet HEAP Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Ulepszony system Å‚adowania rakiet" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Komputer celowniczy moździerza" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Namierzanie termiczne pocisków moździeowych" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Pociski moździeżowe namierzajÄ…ce cel" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Pociski moździeżowe HE" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Pociski moździeżowe HE Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Pociski moździeżowe HE Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Pociski moździeżowe HEAP" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Pociski moździeżowe HEAP Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Pociski moździeżowe HEAP Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "AutoÅ‚adowanie moździeża" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "AutoÅ‚adowanie moździeża Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "AutoÅ‚adowanie moździeża Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Szybkie Å‚adowanie moździeża" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Ciężki moździeż - Bombard" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Obrotowy moździeż - Pepperpot" @@ -8731,367 +8749,367 @@ msgid "Target Prediction Computer" msgstr "Komputer przewidywania celów" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Utwardzone ostrze Railguna" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Utwardzone ostrze Railguna Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Utwardzone ostrze Railguna Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Szybkostrzelność Railguna" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Szybkostrzelność Railguna Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Szybkostrzelność Railguna Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Stabilizowane minirakiety" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Stabilizowane minirakiety Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Minirakiety HE" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Minirakiety HE Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Minirakiety HE Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Minirakiety HEAP" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Minirakiety HEAP Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Minirakiety HEAP Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Szybkostrzelne minirakiety" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Szybkostrzelne minirakiety Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Szybkostrzelne minirakiety Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Bardzo szybkostrzelne minirakiety" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Bardzo szybkostrzelne minirakiety Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Bardzo szybkostrzelne minirakiety Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "ZwiÄ™kszony ukÅ‚ad celowniczy rakiet" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Celownik laserowy rakiet" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Namierzanie termiczne rakiet" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "GÅ‚owica rakietowa HEAT" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "GÅ‚owica rakietowa HEAT Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "GÅ‚owica rakietowa HEAT Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "GÅ‚owica rakietowa HESH" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "GÅ‚owica rakietowa HESH Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "GÅ‚owica rakietowa HESH Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "AutoÅ‚adowanie rakiet" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "AutoÅ‚adowanie rakiet Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "AutoÅ‚adowanie rakiet Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" -msgstr "Rakieta AT Lancer" +msgstr "Rakieta Lancer AT" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Rakieta Bunker Buster" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Rakieta Tank Killer" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Artefakt karabinu" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Kwatera główna New Paradigm" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Kwatera główna Collective" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" -msgstr "Fabryka Padlinożerców" +msgstr "Fabryka Åšmieciarzy" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" -msgstr "Wieża strażnicza Padlinożerców" +msgstr "Wieża strażnicza Åšmieciarzy" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" -msgstr "Pozioma Å›ciana Padlinożerców" +msgstr "Pozioma Å›ciana Åšmieciarzy" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" -msgstr "Generator Padlinożerców" +msgstr "Generator Åšmieciarzy" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" -msgstr "Umocnienie rakietowe Padlinożerców" +msgstr "Umocnienie rakietowe Åšmieciarzy" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" -msgstr "Umocnienie AT Padlinożerców" +msgstr "Stanowisko rakiet AT Åšmieciarzy" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" -msgstr "Bunkier Padlinożerców" +msgstr "Bunkier Åšmieciarzy" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" -msgstr "Narożnik Å›ciany Padlinożerców" +msgstr "Narożnik Å›ciany Åšmieciarzy" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" -msgstr "Wieża ogniowa Padlinożerców" +msgstr "Wieża ogniowa Åšmieciarzy" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" -msgstr "ZakoÅ„czenie wieży ogniowej Padlinożerców" +msgstr "ZakoÅ„czenie wieży ogniowej Åšmieciarzy" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Wieża obserwacyjna" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Wieża z dziaÅ‚em" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefakt" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Pole ropy" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Most" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Zniszczona fabryka" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Magazyn" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Chata" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Beczka z ropÄ…" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Wrak" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Wrak czoÅ‚gu" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Zniszczony most" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Wrak Vana" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Wrak pojazdu" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Wrak cysterny" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratorium cyborgów" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratorium zaawansowanej wojny" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Laboratorium inżynierii" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratorium robotyki" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratorium optyki laserowej" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratorium elektroniczne" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Laboratorium chemiczne" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Zaawansowana wojna" @@ -9112,7 +9130,7 @@ msgid "MRL Emplacement" msgstr "Stanowisko artylerii minirakiet" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Stanowisko Railguna" @@ -9121,49 +9139,49 @@ msgid "Angel Missile Emplacement" msgstr "Stanowisko rakiet Angel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Stanowisko rakiet Archangel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Kobra naprawiajÄ…ca na gÄ…sienicach" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Bunker Blaster" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Cyborg z laserem Flashlight" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Cyborg z wyrzutniÄ… ostrz" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Transporter" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Pyton Tank Killer na gÄ…sienicach" @@ -9172,38 +9190,38 @@ msgid "HPV Cannon Python Tracks" msgstr "Pyton z dziaÅ‚em HPV na gÄ…sienicach" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Pyton z dziaÅ‚kiem AA Cyklon na pół-gÄ…sienicach" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Pyton z karabinem szturmowym na gÄ…sienicach" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Flashlight" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "Flashlight VTOL" # 'Rotary MG' translated into 'Assault Gun' for better understand #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Bunkier z karabinem szturmowym" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Silos rakietowy" @@ -9220,7 +9238,7 @@ msgstr "Wieża strażnicza uzbrojona w miotacz ognia" #: data/base/messages/strings/resstrings.txt:246 #: data/mp/messages/strings/resstrings.txt:272 msgid "Armored guard tower with Lancer AT Rocket" -msgstr "Wzmocniona wieża strażnicza uzbrojona w rakiety AT Lancer" +msgstr "Wzmocniona wieża strażnicza uzbrojona w rakiety Lancer AT" #: data/base/messages/strings/resstrings.txt:260 #: data/mp/messages/strings/resstrings.txt:286 @@ -9240,7 +9258,7 @@ msgstr "SamoreplikujÄ…ca produkcja Cyborgów" #: data/base/messages/strings/resstrings.txt:374 #: data/mp/messages/strings/resstrings.txt:400 msgid "Self-Replicating Factory Production" -msgstr "SamoreplikujÄ…ca produkcja Fabryki" +msgstr "Samo-powielajÄ…ca produkcja Fabryki" #: data/base/messages/strings/resstrings.txt:444 #: data/mp/messages/resmessagesall.rmsg:356 @@ -9347,7 +9365,7 @@ msgstr "Rafineria jest na razie bezczynna. Zbuduj Generator by zmienić ropÄ™ na #: data/base/script/text/tutorial3.slo:580 #: data/base/script/text/tutorial3.slo:871 msgid "Left click the flashing BUILD icon" -msgstr "Kliknij na mrygajÄ…cy przycisk BUDUJ" +msgstr "Kliknij na mrugajÄ…cy przycisk BUDUJ" #: data/base/script/text/tutorial3.slo:397 msgid "Now left click the power generator in the build menu on the left" @@ -9379,7 +9397,7 @@ msgstr "Użyj ciężarówki żeby znaleźć artefakt zaznaczony na mapie" #: data/base/script/text/tutorial3.slo:523 msgid "Move the pointer over the artifact and left click to recover it" -msgstr "PrzesuÅ„ kursor nad artefaktem i kliknij lewym żeby go podnieść" +msgstr "PrzesuÅ„ kursor nad artefakt i kliknij lewym żeby go podnieść" #: data/base/script/text/tutorial3.slo:566 msgid "A research facility is required to research artifacts" @@ -9443,7 +9461,7 @@ msgstr "Fabryka jest wymagana do wyprodukowania nowego pojazdu" #: data/base/script/text/tutorial3.slo:894 msgid "Now left click the factory icon and position it at your base" -msgstr "Teraz kliknij na ikonÄ™ fabryki i pozycjÄ™ w swojej bazie" +msgstr "Teraz kliknij na ikonÄ™ fabryki i wskaż jej pozycjÄ™ w swojej bazie" #: data/base/script/text/tutorial3.slo:914 msgid "Select a location for your factory" @@ -9485,336 +9503,1173 @@ msgstr "Poczekaj chwilÄ™ aż fabryka wyprodukuje nowe jednostki" msgid "Congratulations commander - you are ready for your first mission" msgstr "Gratulacje dowódco - jesteÅ› gotowy na swojÄ… pierwszÄ… misjÄ™" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "Transmisja przychodzÄ…ca" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "Transmisja z bazy Beta." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "Mayday! Mayday!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "Prosimy o wsparcie!..." + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "KAMPANIA PIERWSZA" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "SEKTOR ZACHODNI" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Åšwit, 4. lipca, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "Kwatera główna Projektu" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Nowa era" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Poranek, 4. lipca, 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "W trakcie lotu do Sektora Zachodniego" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "Drużyna Alfa zbliża siÄ™ do swojego celu" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Cele transportów sÄ… nastÄ™pujÄ…ce:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alfa - Sektor Zachodni...." + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alfa, macie pozwolenie na start." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Powodzenia oraz udanych Å‚owów." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "Zbliżamy siÄ™ do Strefy LÄ…dowania. Rozpoczyna siÄ™ odprawa drużyny Alfa." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Dowódco, przewodzisz drużynie Alfa, jednej z trzech drużyn ekspedycyjnych wysÅ‚anych przez Projekt w celu odzyskania artefaktów sprzed Zniszczenia." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Twój cel znajduje siÄ™ w zachodniej strefie." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Dowódco, odzyskaliÅ›my wieżyczkÄ™ dowodzÄ…cÄ… od New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "Ta wieżyczka umożliwia dowódcom koordynacjÄ™ ataków przypisanych jednostek oraz dziaÅ‚a jako punkt dostaw dla fabryk. Zbadanie i użycie tej technologii ma najwyższy priorytet." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Dowódco, wÅ‚aÅ›nie odbieramy tÄ… transmisjÄ™." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "Wasze ataki na nas nie pozostanÄ… bezkarne." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "Naruszacie zasady New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "Wszystkie grupy szturmowe majÄ… atakować wroga." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "Oni naruszajÄ… zasady New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "MuszÄ… zostać wyeliminowani." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Zabezpiecz SL i przygotuj wysuniÄ™tÄ… bazÄ™." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "NastÄ™pnie zniszcz bazÄ™ New Paradigm." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Otwórzcie dla mnie wasze systemy." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Pozwólcie mi poÅ‚Ä…czyć siÄ™ z waszymi maszynami i cyborgami." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "Stworzymy idealne poÅ‚Ä…czenia czÅ‚owieka i maszyny." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "Razem możemy stworzyć nowy Å›wiat." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "MogÄ™ wam dać moc, o której nawet nie Å›niliÅ›cie." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "Otwórzcie dla mnie wasze systemy a ja uczyniÄ™ was silnymi." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "MogÄ™ uczynić was bogami dla zniszczonej ziemi." + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Kiedy nie udaÅ‚o nam siÄ™ dopowiedzieć staÅ‚ siÄ™ groźny." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "Wasza ingerencja w moje plany dla New Paradigm nie bÄ™dzie bezkarna." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "JesteÅ›cie sÅ‚abymi, cielesnymi istotami. Ja jestem silny i mam wiele części." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Możecie pokonać mnie tutaj, lecz powstanÄ™ na nowo." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "Tak jak już raz zniszczyÅ‚em Å›wiat ogniem, tak zniszczÄ™ ciebie i twój sÅ‚aby Projekt!!" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "NastÄ™pnie Nexus usunÄ…Å‚ siÄ™ z systemu, niszczÄ…c moduÅ‚y pamiÄ™ci oraz usuwajÄ…c wszystkie Å›lady ich zewnÄ™trznych poÅ‚Ä…czeÅ„." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "Nie jesteÅ›my pewni czym jest Nexus lub kto nim kieruje. WstÄ™pne badania Å‚Ä…czÄ… program NEXUS Intruder z Reed Corporation, twórcÄ… technologii poÅ‚Ä…czenia synaptycznego." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "StwierdziliÅ›my, że Nexus dostarczyÅ‚ New Paradigm wiÄ™kszość swoich technologii. Czymkolwiek jest Nexus, to jest czymÅ› wiÄ™cej niż komputerowym pasożytem." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Posiada technologie i uzbrojenie. Wie o nas i nie jest przyjazny." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "Technologia poÅ‚Ä…czenia synaptycznego zostaÅ‚a opracowana przez Reed Corporation oraz wojsko Stanów Zjednoczonych." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "PoÅ‚Ä…czenie synaptyczne umożliwia prawie natychmiastowe przekazywanie myÅ›li operatorów do systemów kontroli i kierowania pojazdów. PoÅ‚Ä…czenie synaptyczne wprowadzane jest do podstawy czaszki." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "PoÅ‚Ä…czenie posiada szybki port przesyÅ‚u danych, który może być podÅ‚Ä…czony do dowolnego systemu komputerowego." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "Co ważniejsze, stworzenie technologii poÅ‚Ä…czenia synaptycznego umożliwiÅ‚o budowÄ™ cyborgów. Wczesne próby z pancerzami bojowymi dla żoÅ‚nierzy nie powiodÅ‚y siÄ™, gdyż okazaÅ‚y siÄ™ być powolne i maÅ‚o responsywne." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "Technologia poÅ‚Ä…czenia synaptycznego umożliwiÅ‚a żoÅ‚nierzom użycie pancerzy bojowych, które mogli kontrolować tak jak wÅ‚asne ciaÅ‚a. Pancerze bojowe umożliwiÅ‚y efektywne skuteczne dziaÅ‚anie piechoty na polach bitewnych XXI wieku." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "Niestety, technologia ta wpadÅ‚a w rÄ™ce New Paradigm. NiezbÄ™dne jest abyÅ› zbadaÅ‚ i rozwinÄ…Å‚ technologie poÅ‚Ä…czenia synaptycznego." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Uwaga!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Wchodzisz do obszaru zastrzeżonego." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Powróć do swojej strefy lub zostaniesz zniszczony." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Powtarzam. Powróć do swojej strefy lub zostaniesz zniszczony." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Koniec wiadomoÅ›ci." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Zostaniecie zniszczeni." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "NEXUS, technologia poÅ‚Ä…czenia synaptycznego której żądaÅ‚eÅ› zostaÅ‚a odzyskana i wysÅ‚ana do odebrania." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Dobrze zrobiliÅ›cie." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "Gdy tylko przeanalizujemy technologiÄ™ i potwierdzimy jej autentyczność, otrzymacie waszÄ… nagrodÄ™." + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "Informacje odkryte w poprzedniej bazie wroga wskazujÄ… na to, że New Paradigm odzyskaÅ‚ dwa artefakty technologii poÅ‚Ä…czenia synaptycznego." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "Program NEXUS Intruder jest samo-mutujÄ…cym pasożytem komputerowym. Czyni to go trudnym do usuniÄ™cia po jego identyfikacji." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "Nie jesteÅ›my w stanie ustalić jego celu lub funkcji. W swojej poczÄ…tkowej formie wyszukuje on i izoluje części pamiÄ™ci zaatakowanego systemu. NastÄ™pnie zaczyna mutować siebie i struktury danych, skutecznie przeprogramowujÄ…c system od wewnÄ…trz." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "Dalsze analizy zostaÅ‚y uniemożliwione przez rÄ™czne zamkniÄ™cie systemu przez naszych techników aby zapobiec dalszemu skażeniu przez program NEXUS Intruder." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "Jednak rozprzestrzenianie siÄ™ programu NEXUS Intruder nie zostaÅ‚o sprawdzone przez New Paradigm. Dla dalszych badaÅ„ i ustalenia jego pochodzenia musimy przejąć systemy podstawowe New Paradigm." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "Dowódco, musisz zdÅ‚awić New Paradigm w tym sektorze i zlokalizować ich głównÄ… bazÄ™." + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "KAMPANIA DRUGA" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "SEKTOR WSCHODNI" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Poranek, 1. wrzeÅ›nia 2100" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "W trakcie lotu do Sektora Wschodniego" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "Drużyna Alfa zbliża siÄ™ do bazy Beta" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Musisz jej bronić i utrzymać jÄ… za wszelkÄ… cenÄ™." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "COLLECTIVE" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Dowódco, wykryto kolejne odpalenie." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "Prawdopodobnie celem jest twoja lokalizacja." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Musisz rozpocząć natychmiastowÄ… ewakuacjÄ™ bazy Beta do bezpiecznego schronienia." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "NASDA to North American Strategic Defense Agency." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "NASDA zostaÅ‚a utworzona w 2076 w celu obrony Ameryki Północnej przed atakami konwencjonalnymi oraz jÄ…drowymi. Budowa systemu satelitów obronnych rozpoczęła siÄ™ w 2081 i zostaÅ‚a zakoÅ„czona w 2082." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "W 2085 satelity NASDA wystrzeliÅ‚y swoje gÅ‚owice nuklearne w kierunku Ziemi." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "IstniaÅ‚y także stanowiska naziemne. Wiele z nich zostaÅ‚o zniszczone przez nuklearne przeciwuderzenie, ale jest z pewnoÅ›ciÄ… część z nich przetrwaÅ‚a." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "Satelity NASDA posiadaÅ‚y także lasery pulsacyjne zaprojektowane do zestrzeliwania pocisków zbliżajÄ…cych siÄ™ do Ameryki Północnej." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "W czasie przeciwuderzenia satelity laserowe zawiodÅ‚y. W przypadku uruchomienia, satelity te mogÄ… spowodować poważne zniszczenia celów naziemnych." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "Wszystkie gÅ‚owice jÄ…drowe skierowane na AmerykÄ™ PółnocnÄ… osiÄ…gnęły swoje cele." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "Wiemy, że Nexus poszukuje centrali NASDA w Sektorze Wschodnim. ByÅ‚o to jedno z naziemnych centrów kontroli satelitów." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "JeÅ›li centrum zostanie odnalezione w stanie nienaruszonym, NEXUS może przejąć kontrolÄ™ na satelitami." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "Nexus twierdzi, że już raz zniszczyÅ‚ Å›wiat." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "Wojownicy Collective, szukam lokalizacji centrali NASDA." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "Znajduje siÄ™ gdzieÅ› na waszym terytorium." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "Znajdźcie je dla mnie a ja przekażę wam dodatkowÄ… broÅ„ do pomocy w wojnie z Projektem." + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "Odprawa NASDA postÄ™puje..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "Musimy mieć pewność, że nie może tego zrobić ponownie." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "Analizy wskazujÄ… na to, że te systemy byÅ‚y częściÄ… systemu sterowania satelitów NASDA." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "Jest już pewne, że to Nexus jest odpowiedzialny za Zniszczenie." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "We wczesnej fazie Zniszczenia technicy NASDA wyÅ‚Ä…czyli zainfekowane systemy w celu ograniczenia rozprzestrzeniania siÄ™ Nexus. WyglÄ…da na to, że uniemożliwiÅ‚o to satelitom laserowym strzelanie w czasie przeciwuderzenia." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "Impulsy magnetyczne po wybuchach atomowych skasowaÅ‚y duże iloÅ›ci modułów pamiÄ™ci NASDA, zniszczyÅ‚y jej procesor główny oraz wysÅ‚aÅ‚y niszczÄ…cÄ… falÄ™ przez Nexus." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "Nexus zostaÅ‚ usmażony, kiedy caÅ‚e części jego Å›wiadomoÅ›ci zostaÅ‚y wymazane w czasie przeciwuderzenia." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Dowódco, wykryto transmisje wysyÅ‚ane z tego terenu docierajÄ…ce na wysokÄ… orbitÄ™." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS poÅ‚Ä…czyÅ‚ siÄ™ ponownie z satelitami NASDA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "Stanowi to poważne zagrożenie dla Projektu i naszego przetrwania." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "Analizy centrali NASDA nie pozostawiajÄ… żadnych wÄ…tpliwoÅ›ci, że Collective wprowadziÅ‚ do niej wirusa NEXUS Intruder." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "Reaktor atomowy miaÅ‚ zostać użyty do zasilania rozlegÅ‚ej sieci systemów komputerowych sprzed Zniszczenia." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Dowódco, przed chwilÄ… wykryto odpalenie rakiety na tych koordynatach." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "Drużyna Gamma wysyÅ‚a drużynÄ™ w celu zbadania wyrzutni i uniemożliwienia kolejnych odpaleÅ„." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "Możemy tylko przypuszczać, że Nexus zyskaÅ‚ kontrolÄ™ nad tÄ… placówkÄ…. Nie możemy okreÅ›lić, czy pocisk posiada gÅ‚owicÄ™ nuklearnÄ… i gdzie jest wycelowany. Zaleca siÄ™ rozpoczÄ™cie przygotowaÅ„ do ewakuacji bazy." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "Wojownicy Collective, kolejni intruzi wdzierajÄ… siÄ™ na nasze terytorium." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "Oni nie sÄ… częściÄ… maszyny." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Wojownicy Collective, atakujcie i zabijajcie wszystkich którzy opierajÄ… siÄ™ maszynie." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "Atakujcie! Wymażcie Å›lady ich obecnoÅ›ci z tego obszaru!" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "Wojownicy Collective, jesteÅ›my gotowi aby zniszczyć intruzów zanieczyszczajÄ…cych nasze ziemie." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "Ci z Projektu nie sÄ… z maszyny. Odmówili jej bÅ‚ogosÅ‚awieÅ„stwa. Naszym przeznaczeniem, tych którzy przyjÄ™liÅ›my moc maszyny, jest zmiatanie takich sÅ‚abych stworzeÅ„." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "UpadnÄ… przed potÄ™gÄ… Collective." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "Zaatakujcie i zniszczcie wszystkich przeciwstawiajÄ…cych siÄ™ maszynie." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Atakujcie!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "Wojownicy Collective, Nexus daÅ‚ nam potÄ™gÄ™ maszyny abyÅ›my mogli zniszczyć wszystkich naszych wrogów." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "Nexus prosi nas abyÅ›my zmiażdżyli Projekt." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "UsuÅ„cie i zniszczcie!!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "Wojownicy Collective. SpisaliÅ›cie siÄ™ znakomicie." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "Wasza nagroda jest już w drodze." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "Projekt ucieka z swojej bazy i kradnie waszÄ… technologiÄ™." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "Musisz ich powstrzymać!" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "Dekodowanie transmisji..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "KAMPANIA TRZECIA" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "SEKTOR PÓÅNOCNY" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Gratulujemy udanej ewakuacji Bazy Beta." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "Zmierzch, 3. grudnia, 2100" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "W trakcie lotu do Sektora Północnego" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "Ostateczna Rozprawa" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "RozpoczÄ™cie odprawy" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "Personel bazy Gamma potwierdziÅ‚, że pociski jÄ…drowe, wycelowane w bazy Alfa oraz Beta, zostaÅ‚y wystrzelone z silosu w ich sektorze." + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "Drużyna Gamma robi rekonesans terenu, na którym znajduje siÄ™ silos i monitoruje aktywność NEXUS." + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "Czas siÄ™ skoÅ„czyÅ‚ dowódco!!" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Dowódco, wykrywamy siÅ‚y NEXUS na tych koordynatach..." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "Dobra robota dowódco, uniemożliwiÅ‚eÅ› wystrzelenie mojego ostatniego pocisku." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "Jaka szkoda. Kwatera główna waszego Projektu byÅ‚aby cudownym celem." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "Ale to dobrze, że doÅ‚Ä…czyÅ‚eÅ› do mnie tutaj." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "Pod tym silosem zakopana jest taktyczna gÅ‚owica nuklearna, która wkrótce wybuchnie." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "Skoro nie mogÄ™ jej wystrzelić, to bÄ™dzie musiaÅ‚a wybuchnąć tam gdzie jest." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "Zauważ, że wszystkie wejÅ›cia do podziemnego kompleksu zostaÅ‚y zasypane. Å»egnaj, dowódco." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Cieszymy siÄ™, że ci siÄ™ udaÅ‚o, dowódco." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "Wrogie jednostki uderzeniowe VTOL przycisnęły nas do muru. UdaÅ‚o nam siÄ™ odeprzeć cyborgi i czoÅ‚gi, ale nie byliÅ›my w stanie dokonać żadnego postÄ™pu w dolinie." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "Czy uda ci siÄ™ do nas dotrzeć z jednostkami przeciwlotniczymi?" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "Tu drużyna Alfa. Powtarzam, tu drużyna Alfa. Potrzebujemy natychmiastowego wsparcia." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "JesteÅ›my silnie atakowani przez cyborgi, czoÅ‚gi laserowe i uderzeniowe jednostki VTOL." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "PróbowaliÅ›my dotrzeć do waszej pozycji, ale zostaliÅ›my otoczeni." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "JesteÅ›my umocnieni w dolinie na tych współrzÄ™dnych." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "Prosimy o wsparcie." + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "Dowódco, siÅ‚y z drużyny Alfa uciekÅ‚y przed atakiem nuklearnym na bazÄ™ Alfa." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "DoÅ›wiadczamy pewnej ingerencji z NEXUS." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "Musisz zniszczyć jego centrum dowodzenia zanim stracimy kontrolÄ™ nad kluczowymi systemami." + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Dowódco, witamy w NEXUS!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "Reed Corporation zostaÅ‚a zaÅ‚ożona przez dr Allana Reeda. W 2080, dr Reed zdobyÅ‚ kontrakt na opracowanie technologii poÅ‚Ä…czenia synaptycznego dla wojska Stanów Zjednoczonych." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "Po opatentowaniu poÅ‚Ä…czenia synaptycznego pięć lat później, dr Reed kontynuowaÅ‚ swoje badania nad cybernetykÄ…." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "Tym razem jego celem byÅ‚o umożliwienie transferu ludzkiej Å›wiadomoÅ›ci do strumieni danych, które mogÅ‚yby być poÅ‚Ä…czone z technologiami komputerowymi. W czasie pobytu w cyberprzestrzeni ciaÅ‚a operatorów byÅ‚y przechowywane zanurzene w zbiornikach." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "Ponownie wspierany przez wojsko, dr Reed zaczÄ…Å‚ pracować nad programem NEXUS Intruder. Po trzech latach niewielkich postÄ™pów, wojsko porzuciÅ‚o projekt Nexus i obcięło finansowanie dr Reeda." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "Raporty z tego okresu twierdzÄ…, że dr Reed byÅ‚ wÅ›ciekÅ‚y i Å›lubowaÅ‚ zemstÄ™ na wszystkich którzy stanÄ™li mu na drodze." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "WyglÄ…da na to, że dr Reed osiÄ…gnÄ…Å‚ swoje cele i ukoÅ„czyÅ‚ program NEXUS Intruder." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "PodobieÅ„stwo pomiÄ™dzy NEXUS i dr Reedem jest uderzajÄ…ce." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "Jaka interesujÄ…ca lekcja historii. Teraz pozwólcie mi uaktualnić waszÄ… wiedzÄ™." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "Program NEXUS Intruder zostaÅ‚ stworzony aby kontrolować gÅ‚upców takich jak wy." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "To dla mnie bardzo proste, przenikanie do waszych systemów i przejmowanie ich. To takie proste, że nawet nie wiedzielibyÅ›cie, że tam jestem - zanim aktywujÄ™ części mnie zakorzenione w waszych systemach podstawowych" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "Zacznijmy od aktywacji NEXUS w waszych systemach podstawowych i zobaczmy co siÄ™ stanie!" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Dowódco, wystÄ™pujÄ… zakłócenia w dziaÅ‚aniu naszego sprzÄ™tu." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "Normalne dziaÅ‚anie zostanie przywrócone tak szybko jak to możliwe." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "Nie zostaÅ‚o ci wiele czasu, dowódco. Nie masz już gdzie uciec." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "Jednakże, jeÅ›li opuÅ›cicie ten oÅ›rodek, wtedy puszczÄ™ was wolno, gdyż nie stanowicie dla mnie zagrożenia." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "Masz pięć minut aby to wykonać lub smażenie czas zacząć!" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "Dowódco, jesteÅ›my atakowani przez cyborgi i czoÅ‚gi NEXUS. Prosimy o pomoc gdyż...." + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "...nie możemy wytrzymać dÅ‚użej. Powtarzam, prosimy o pomoc, nie możemy wytrzymać dÅ‚użej...." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "Ach, dowódco, jak dobrze, że przyÅ‚Ä…czasz do nas tutaj, w bazie Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "ByÅ‚o bardzo przydatne umieÅ›cić drużynÄ™ Gamma w tych górach." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "Ich absorpcja byÅ‚a przyjemnoÅ›ciÄ…." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "DziÄ™kujÄ™ wam za te wszystkie przydatne technologie które odzyskaliÅ›cie." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "Nie jesteÅ›cie takimi gÅ‚upcami jak New Paradigm i Collective." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "AktywujÄ™ wszystkie wasz poÅ‚Ä…czenia synaptyczne dziÄ™ki czemu wasze siÅ‚y bÄ™dÄ… mogÅ‚y poÅ‚Ä…czyć siÄ™ z Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "Twoje siÅ‚y sÄ… teraz moje! Witaj w Nexus." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "Dowódco, udowadniasz, że jesteÅ› bardziej odporny niż myÅ›laÅ‚em." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "Jaka szkoda, że nie chciaÅ‚eÅ› doÅ‚Ä…czyć do mnie wczeÅ›niej." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "Ale nie ważne, skoro nie bÄ™dziesz tu dÅ‚ugo." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "Po wielu poszukiwaniach i przeprogramowaniach, w koÅ„cu uruchomiÅ‚em ponownie wszystkie swoje systemy." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "Po tym jak zniszczyÅ‚em Å›wiat ogniem, aby oczyÅ›cić drogÄ™ dla mojej cybernetycznej przyszÅ‚oÅ›ci." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "Zamierzam teraz dalej ksztaÅ‚tować Å›wiat na moje wÅ‚asne podobieÅ„stwo, chirurgicznie usuwajÄ…c niechciane naroÅ›le, takie jak ty." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "Moje satelity laserowe wÅ‚aÅ›nie siÄ™ Å‚adujÄ…. Zamierzam przetestować je na tobie, dowódco!" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Zmierzch, 3. listopada, 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Ziemia, wysoka orbita" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "Zniszczenie" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19. stycznia, 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Ameryka Północna" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Zima nuklearna" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Północ, 10 kwietnia, 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Góry Skaliste" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "Bezpieczne miejsce" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Åšwit, 4. lipca, 2010" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Nowy PoczÄ…tek" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "System NASDA zostaÅ‚ stworzony aby nas chronić. MiaÅ‚ być ostatecznym straszakiem nuklearnym. Jak siÄ™ okazaÅ‚o, byÅ‚ to nasz kat." + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "WedÅ‚ug raportów powstaÅ‚ bÅ‚Ä…d podczas rutynowej kontroli systemów NASDA. Nie wierzcie w to. KtoÅ› chciaÅ‚ nas usunąć." + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "GÅ‚owice nuklearne zniszczyÅ‚y wszystkie główne miasta Å›wiata. NASDA zostaÅ‚a zaprogramowana aby rozpocząć Zniszczenie. Gdy rozpoczÄ™to przeciwuderzenie, jego lasery i naziemne stanowiska przeciwrakietowe zawiodÅ‚y." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "Åšwiat jaki znaliÅ›my, skoÅ„czyÅ‚ siÄ™..." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "Zima nuklearna uderzyÅ‚a z dużą siÅ‚Ä…. Choroby i głód zabiÅ‚y wiÄ™kszość tych, którzy przetrwali ataki jÄ…drowe. Wojny o puszki z karmÄ… dla psów zabraÅ‚y nawet wiÄ™cej." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "OpuÅ›ciliÅ›my Seattle we wczesnym '86. SÅ‚yszeliÅ›my, że Góry Skaliste sÄ… stosunkowo wolne od promieniowania." + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "Po pokonaniu band maruderów przedostaliÅ›my siÄ™ do bazy. Jej personal byÅ‚ martwy. Zabity przez jednÄ… z chorób zakaźnych." + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "WyÅ‚amaliÅ›my drzwi i usunÄ™liÅ›my z wnÄ™trza zwÅ‚oki." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "WiedzieliÅ›my, że nic nie bÄ™dzie takie jak wczeÅ›niej, ale byliÅ›my zdeterminowani aby zbudować nowy Å›wiat na gruzach. OdbudowaliÅ›my lÄ…dowiska i przywróciliÅ›my dziaÅ‚anie starych systemów." + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "W koÅ„cu byliÅ›my gotowi - rozpoczÄ™liÅ›my Projekt." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Po wielu miesiÄ…cach walki pokonaliÅ›my NEXUS." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "Wojna rozpoczÄ™ta przez doktora Reeda skoÅ„czyÅ‚a siÄ™." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "OdzyskaliÅ›my wiele technologii, których szukaliÅ›my." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "NadszedÅ‚ czas, aby użyć ich do odbudowania Å›wiata." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Powoli, podniesiemy siÄ™ z popiołów..." + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Kobra poduszkowiec ciężka naprawiajÄ…ca" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Å»mija z ciężkim karabinem na koÅ‚ach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" -msgstr "Modliszka poduszkowiec Scourge" +msgstr "Modliszka z rakietami Scourge poduszkowiec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Modliszka ciężarówka poduszkowiec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Kobra z ciężkim karabinem na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Kobra poduszkowiec z ciężkim dziaÅ‚em" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Skorpion Lancer na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Skorpion z ciężkim dziaÅ‚em na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Skorpion Lancer VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Skorpion Bunker Buster VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Å»mija dowodzÄ…ca na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Kobra dowodzÄ…ca na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Skorpion dowodzÄ…cy na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Modliszka dowodzÄ…ca na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Kobra Lancer na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Modliszka z ciężkim dziaÅ‚em na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Modliszka Tank Killier na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" -msgstr "Modliszka Scourge na gÄ…sienicach" +msgstr "Modliszka z rakietami Scourge na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Skorpion z ciężkim karabinem na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Skorpion naprawczy na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Skorpion ciężki naprawczy poduszkowiec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" -msgstr "Kobra ciężarówka-poduszkowiec" +msgstr "Kobra ciężarówka poduszkowiec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" -msgstr "Skorpion ciężarówka-poduszkowiec" +msgstr "Skorpion ciężarówka poduszkowiec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" -msgstr "Modliszka ciężarówka-poduszkowiec" +msgstr "Modliszka ciężarówka poduszkowiec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Kobra Bunker Buster na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Skorpion Bunker Buster na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Modliszka Bunker Buster na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Å»mija Lancer na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Kobra z minirakietami na pól-gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Kobra z minirakietami na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Kobra artyleria minirakiet na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Kobra Inferno na pół-gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Pyton poduszkowiec z dziaÅ‚em HPV" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" -msgstr "Pyton Scourge na gÄ…sienicach" +msgstr "Pyton z rakietami Scourge na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Pyton z dziaÅ‚em gaussa na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Pyton ciężki laser na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tygrys z laserem pulsacyjnym na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tygrys ciężki laser na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Wywerna z dziaÅ‚em gaussa na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Wywerna z laserem pulsacyjnym na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Wywerna ciężki laser na gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Å»mija karabin na pół-gÄ…sienicach" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Å»mija miotacz na pół-gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Kobra poduszkowiec ciężka wieżyczka naprawiajÄ…ca" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Å»mija ciężki karabin na koÅ‚ach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Modliszka poduszkowiec Tank Killer" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Kobra ciężki karabin na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Kobra poduszkowiec z ciężkim dziaÅ‚em" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Kobra ciężki karabin na koÅ‚ach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Kobra poduszkowiec z ciężkim karabinem" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Å»mija karabin na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Å»mija z z podwójnym karabinem na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Kobra poduszkowiec z Å›rednim dziaÅ‚em" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Skorpion poduszkowiec ze Å›rednim dziaÅ‚em" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Skorpion ze Å›rednim dziaÅ‚em na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Pyton poduszkowiec ze Å›rednim dziaÅ‚em" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Pyton poduszkowiec z ciężkim" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Modliszka z Railgunem na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Modliszka z laserem pulsacyjnym na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Pyton Lancer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Modliszka Lancer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Zemsta Tank Killer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Tygrys z ciężkim dziaÅ‚em na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Tygrys z wyrzutniÄ… ostrz na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Odwet z wyrzutniÄ… ostrz na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Zemsta z wyrzutniÄ… ostrz na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Zemsta Rail Gun na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "Zemsta dziaÅ‚o Gaussa na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "Zemsta Gauss Scourge na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" -msgstr "Robal przedziaÅ‚ bomb odÅ‚amkowych" +msgstr "Robal luk bomb odÅ‚amkowych" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "Robal Bunker Buster VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" -msgstr "Skorpion przedziaÅ‚ bomb odÅ‚amkowych VTOL" +msgstr "Skorpion luk bomb odÅ‚amkowych VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Skorpion Bunker Buster VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "Robal Lancer VTOL" @@ -9823,7 +10678,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "VTOL Robal dziaÅ‚o HPV VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "VTOL Skorpion Lancer VTOL" @@ -9832,7 +10687,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "VTOL Skorpion dziaÅ‚o HPV VOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "VTOL Modliszka Lancer VTOL" @@ -9841,127 +10696,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "VTOL Modliszka dziaÅ‚o HPV VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Modliszka naprawiajÄ…ca na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Skorpion Lancer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Skorpion z ciężkim dziaÅ‚em na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "Skorpion Lamcer VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "Skorpion Bunker Buster VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Å»mija dowodzÄ…ca na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Kobra dowodzÄ…ca na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Skorpion dowodzÄ…cy na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Modliszka dowodzÄ…ca na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Kobra Lancer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Modliszka z ciężkim dziaÅ‚em na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Modliszka Tank Killer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" -msgstr "Modliszka Scourge na gÄ…sienicach" +msgstr "Modliszka z rakietami Scourge na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Skorpion ciężki karabin na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Skorpion naprawiajÄ…cy na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Skorpion ciężki naprawczy poduszkowiec" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Kobra ciężarówka poduszkowiec" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Skorpion ciężarówka poduszkowiec" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Modliszka ciężarówka poduszkowiec" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Kobra Bunker Buster na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Skorpion Bunker Buster na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Modliszka Bunker Buster na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Å»mija Lancer na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Kobra minirakiety na pół-gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Kobra minirakiety na gÄ…sienicach" @@ -9970,7 +10825,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Kobra artyleria minirakiet na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Kobra miotacz Inferno na pół-gÄ…sienicach" @@ -9979,55 +10834,155 @@ msgid "HPV Cannon Python Hover" msgstr "Pyton poduszkowiec z dziaÅ‚em HPV" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Pyton z rakietami Scourge na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Pyton z dziaÅ‚em Gaussa na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Pyton z laserem pulsacyjnym na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Tygrys z laserem pulsacyjnym na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Tygrys z ciężkim laserem na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Wiwern z dziaÅ‚em Gaussa na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Wiwern z laserem pulsacyjnym na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Wiwern z ciężkim laserem na gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Å»mija karabin na pół-gÄ…sienicach" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Å»mija miotacz ognia na pół-gÄ…sienicach" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Kobra miotacz Inferno poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Kobra ze Å›rednim dziaÅ‚em na pół-gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Pyton miotacz poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Pyton z karabinem szturmowym poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Pyton z karabinem szturmowym na pół-gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Skorpion ciężki karabin na pół-gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Modliszka z dziaÅ‚em szturmowym poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Leopard z laserem pulsacyjnym poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Pantera z laserem pulsacyjnym poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Tygrys z railgunem poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Tygrys z laserem pulsacyjnym poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Wywerna z dziaÅ‚em plazmowym na gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Wywerna z rakietami Scourge na gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "OdpÅ‚ata z laserem Flashlight poduszkowiec" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Å»mija minirakiety na pół-gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Å»mija artyleria minirakiet na gÄ…sienicach" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Modliszka luk bomb fosforowych VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Modliszka luk bomb HEAP VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Odwet luk bomb HEAP VTOL" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "OdpÅ‚ata z rakietami Scourge VTOL" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "PrÄ™dkość budowania +10%" @@ -10091,7 +11046,7 @@ msgstr "Pancerz +35%, punkty zdrowia +30%" #: data/mp/messages/resmessages1.rmsg:148 msgid "Armored guard tower with Lancer AT rocket" -msgstr "Wzmocniona wieża strażnicza z rakietami AT Lancer" +msgstr "Wzmocniona wieża strażnicza z rakietami Lancer AT" #: data/mp/messages/resmessages1.rmsg:253 #: data/mp/messages/resmessages2.rmsg:331 @@ -10325,7 +11280,7 @@ msgstr "Czas przeÅ‚adowania Railguna -15%" #: data/mp/messages/resmessagesall.rmsg:84 msgid "Sensor Range +25%" -msgstr "ZasiÄ™g sensora +25%" +msgstr "ZasiÄ™g radaru +25%" #: data/mp/messages/resmessagesall.rmsg:96 msgid "Improved Thermal Emissions detection" @@ -10333,7 +11288,7 @@ msgstr "Ulepszone wykrywanie emisji termicznych" #: data/mp/messages/resmessagesall.rmsg:97 msgid "Sensor Range +15%" -msgstr "ZasiÄ™g sensora +15%" +msgstr "ZasiÄ™g radaru +15%" #: data/mp/messages/resmessagesall.rmsg:109 msgid "Advanced Thermal Emissions detection" @@ -10341,19 +11296,19 @@ msgstr "Zaawansowane wykrywanie emisji termicznych" #: data/mp/messages/resmessagesall.rmsg:110 msgid "Sensor Range +10%" -msgstr "ZasiÄ™g sensora +10%" +msgstr "ZasiÄ™g radaru +10%" #: data/mp/messages/resmessagesall.rmsg:135 msgid "Radar detector tower detects enemy sensors" -msgstr "Wykrywacz radarów wykrywa sensory wroga" +msgstr "Wykrywacz radarów wykrywa radary wroga" #: data/mp/messages/resmessagesall.rmsg:136 msgid "Orders assigned indirect fire units to fire at the enemy sensors" -msgstr "Rozkazuje twojej artylerii atak na sensory wroga" +msgstr "Rozkazuje twojej artylerii atak na radary wroga" #: data/mp/messages/resmessagesall.rmsg:137 msgid "Counter-battery fire continues until enemy sensor is suppressed" -msgstr "CB kontynuuje ostrzaÅ‚ dopóki sensor wroga nie zostanie zniszczony" +msgstr "CB kontynuuje ostrzaÅ‚ dopóki radar wroga nie zostanie zniszczony" #: data/mp/messages/resmessagesall.rmsg:225 msgid "Cyborg Transport Available" @@ -10365,7 +11320,7 @@ msgstr "Uzbrojony w karabin maszynowy" #: data/mp/messages/resmessagesall.rmsg:228 msgid "Requires heavy VTOL factory to produce" -msgstr "Wymaga ciężkiej Fabryki VTOL do produkcji" +msgstr "Wymaga Fabryk ciężkich VTOL do produkcji" #: data/mp/messages/resmessagesall.rmsg:239 msgid "Incendiary howitzer emplacement" @@ -10397,7 +11352,7 @@ msgstr "Mechanik z umiejÄ™tnoÅ›ciÄ… naprawy" #: data/mp/messages/resmessagesall.rmsg:330 msgid "Incendiary Howitzer may be assigned to a sensor" -msgstr "Ognista haubica może być przypisana do sensora" +msgstr "Ognista haubica może być przypisana do radaru" #: data/mp/messages/resmessagesall.rmsg:369 msgid "Plasmite Flame-thrower" @@ -10459,12 +11414,12 @@ msgstr "Kompletny widok na pole bitwy" #: data/mp/messages/resmessagesall.rmsg:501 msgid "Does not offer sensor targeting" -msgstr "Nie oferuje celowania z użyciem sensora" +msgstr "Nie oferuje celowania z użyciem radaru" #: data/mp/messages/resmessagesall.rmsg:512 #: data/mp/messages/resmessagesall.rmsg:707 msgid "Combines standard, counter battery and VTOL sensors" -msgstr "ÅÄ…czy standardowe sensory CB i VTOL" +msgstr "ÅÄ…czy standardowe radary CB i VTOL" #: data/mp/messages/resmessagesall.rmsg:524 msgid "New Advanced Weapon Available" @@ -10641,7 +11596,7 @@ msgid "Upgraded battlefield computer system" msgstr "Ulepszony komputer pola bitwy" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Cyborg Transport" @@ -10670,7 +11625,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Kobra artyleria minirakiet na pół-gÄ…sienicach" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Wykrywacz radaru" @@ -10683,638 +11638,651 @@ msgid "Nexus Link" msgstr "NEXUS Link" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Wieżyczka NEXUS Link" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Betonowy mur" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Bunkier z miotaczem Inferno" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Stanowisko AA Tornado" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Stanowisko AA Cyclone" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Umocnienie z laserem pulsacyjnym" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Wieża z laserem pulsacyjnym" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Artyleria rakiet Serafin" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "Artyleria minirakiet" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Przekaźnik satelity laserowego" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" -msgstr "PrzedziaÅ‚ bomb odÅ‚amkowych VTOL" +msgstr "Luk bomb odÅ‚amkowych VTOL" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Narożnik muru Collective" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Mur NEXUS" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Narożnik muru NEXUS" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Plasbeton Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Utwardzona stal" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Utwardzona stal Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Utwardzona stal Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "Umocnienie z dziaÅ‚em HPV" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Bateria rakiet Serafin" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Wieża strażnicza z miotaczem ognia" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Umocnienie z dziaÅ‚em HPV" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Automatyczna produkcja Fabryki" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Automatyczna produkcja Fabryki Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Automatyczna produkcja Fabryki Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Robotyczna produkcja Fabryki" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Robotyczna produkcja Fabryki Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Robotyczna produkcja Fabryki Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Zaawansowana produkcja Fabryki" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Zaawansowana produkcja Fabryki Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "SamoreplikujÄ…ca produkcja Fabryki" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Zaawansowana produkcja Fabryki Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Zautomatyzowana Stacja Naprawcza Mk2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Zautomatyzowana Stacja Naprawcza Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Robotyczna Stacja Naprawcza" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Robotyczna Stacja Naprawcza Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Zaawansowana Stacja Naprawcza" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Robotyczna Stacja Naprawcza Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Zaawansowana Stacja Naprawcza Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Zaawansowana Stacja Naprawcza Mk3" # Translated as 'Self-Repair' for better understand -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Samonaprawa" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Ciężka wieżyczka naprawiajÄ…ca" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" -msgstr "Program intruz NEXUS" +msgstr "Program NEXUS Intruder" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Ochrona elektroniczna NEXUS" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Ochrona elektroniczna NEXUS Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Ochrona elektroniczna NEXUS Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" -msgstr "PrzedziaÅ‚ bomb odÅ‚amkowych" +msgstr "Luk bomb odÅ‚amkowych" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Bomby HE" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Ulepszona gÅ‚owica bomb" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Zaawansowana gÅ‚owica bomb" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Szybkie Å‚adowanie haubicy" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Bardzo szybkostrzelny Chaingun" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Komputer Rail przewidujÄ…cy cel" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "Minirakiety HESH" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "Minirakiety HESH Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "Minirakiety HESH Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Wieża strażnicza z karabinem szturmowym" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Kobra naprawiajÄ…ca na gÄ…sienicach" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "Pyton z dziaÅ‚em HPV na gÄ…sienicach" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Kobra poduszkowiec Bunker Buster" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" -msgstr "Ulepszenie sensora Mk2" +msgstr "Ulepszenie radaru Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" -msgstr "Ulepszenie sensora Mk3" +msgstr "Ulepszenie radaru Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" -msgstr "Turbina oparowa Generatora Mk2" +msgstr "Turbina parowa Generatora Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Turbina gazowa Generatora Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Turbina gazowa Generatora Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Turbina oparowa Generatora Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Cyborg z miotaczem termicznym" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Cyborg z miotaczem termitowym" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Cyborg grenadier" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenadier" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Inżynier bojowy" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Cyborg Mechanik" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Haubica podpalajÄ…ca" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Stanowisko haubicy podpalajÄ…cej" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Plazmowy miotacz ognia" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Bunkier z miotaczem plazmowym" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Moździerz podpalajÄ…cy" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Stanowisko moździerza podpalajÄ…cego" -# I had translated 'Superdense' into 'Hardened' because I can't find better word for this -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Utwardzony pancerz termiczny cyborgów" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Utwardzony pancerz termiczny cyborgów Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Utwardzony pancerz termiczny cyborgów Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Utwardzony pancerz termiczny pojazdów" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Utwardzony pancerz termiczny pojazdów Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Utwardzony pancerz termiczny pojazdów Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super Cyborg z dziaÅ‚em" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Cyborg z dziaÅ‚em automatycznym" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super Cyborg z dziaÅ‚em HPV" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Cyborg Tank Killer" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Ciężki laser" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "VTOL Ciężki laser" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Stanowisko ciężkiego lasera" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Podwójne dziaÅ‚o szturmowe" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Bunkier z podwójnym dziaÅ‚em szturmowym" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Przekaźnik satelitarny" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Radar dużego zasiÄ™gu" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Wieża z radarem dużego zasiÄ™gu" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "DziaÅ‚o plazmowe" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Stanowisko dziaÅ‚a plazmowego" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Cyborg z laserem pulsacyjnym" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Cyborg z Railgunem " -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 -msgid "Super Scourge Cyborg" -msgstr "Super Cyborg z wyrzutniÄ… Scourge" - +#: data/mp/messages/strings/names.txt:1735 #: data/mp/messages/strings/names.txt:1736 #: data/mp/messages/strings/names.txt:1737 +msgid "Super Scourge Cyborg" +msgstr "Super Cyborg z rakietami Scourge" + +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Wieżyczka NEXUS Link" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "DziaÅ‚o EMP" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Wieża z dziaÅ‚em EMP" # Translated as 'Fortress with Gauss Canonn'. Contact me if this causes confusing. -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" -msgstr "Forteca z dziaÅ‚em gaussa" +msgstr "Forteca z dziaÅ‚em Gaussa" # Translated as 'Fortress with Gauss Canonn'. Contact me if this causes confusing. -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Forteca z dziaÅ‚em Gaussa" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Forteca z dziaÅ‚em" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Bastion z ciężkimi rakietami" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Forteca rakietowa" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "Ciężki kadÅ‚ub - Wywerna" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Wywerna" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "KadÅ‚ub z wieloma wieżyczkami - Smok" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Smok" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "SupergorÄ…cy żel Plasmitowy" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "SupergorÄ…cy żel Plasmitowy Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "SupergorÄ…cy żel Plasmitowy Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "Moździerz EMP" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Stanowisko moździerza EMP" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Laser AA Strombringer" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Stanowisko lasera Stormbringer" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Umocnienie z rakietami ObroÅ„ca" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Umocnienie z dziaÅ‚kiem Whirlwind" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Umocnienie z dziaÅ‚kiem Cyclone" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Umocnienie z rakietami MÅ›ciciel" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Podwójny karabin szturmowy" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Umocnienie z podwójnym karabinem szturmowym" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" -msgstr "VTOL PrzedziaÅ‚ bomb plazmowych" +msgstr "VTOL Luk bomb plazmowych" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Bomba Plasmitowa" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "VTOL wyrzutnia rakiet EMP" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Wyrzutnia rakiet EMP" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Wieżyczka dowodzÄ…ca II" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Wieżyczka dowodzÄ…ca III" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Wieżyczka dowodzÄ…ca IV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "VTOL Robal dziaÅ‚o HPV VTOL" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "VTOL Skorpion dziaÅ‚o HPV VOL" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "VTOL Modliszka dziaÅ‚o HPV VTOL" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "Kobra artyleria minirakiet na gÄ…sienicach" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "Pyton poduszkowiec z dziaÅ‚em HPV" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Odwet luk bomb HEAP VTOL" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" -msgstr "JÄ™zyk systemowy" +msgstr "JÄ™zyk systemu" #: lib/framework/i18n.c:56 #: lib/framework/i18n.c:113 @@ -11440,33 +12408,29 @@ msgstr "ChiÅ„ski tradycyjny" msgid "Latin" msgstr "Åacina" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Wpisz hasÅ‚o tutaj" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Nie można rozwinąć nazwy głównego serwera (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Nie można skomunikować siÄ™ z serwerem lobby! Czy port %u TCP jest otwarty dla ruchu wychodzÄ…cego?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", mody: " - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 -#: src/intorder.c:787 +#: src/intorder.c:782 #: src/loadsave.c:256 #: src/multimenu.c:479 #: src/multimenu.c:1357 @@ -11498,15 +12462,15 @@ msgstr "katalog danych" #: src/clparse.c:235 msgid "Show debug for given level" -msgstr "Pokaż debug dla danego poziomu" +msgstr "Pokaż odpluskwianie dla danego poziomu" #: src/clparse.c:235 msgid "debug level" -msgstr "poziom debug" +msgstr "poziom odpluskwiania" #: src/clparse.c:236 msgid "Log debug output to file" -msgstr "Loguj debug do pliku" +msgstr "Loguj odpluskwianie do pliku" #: src/clparse.c:236 msgid "file" @@ -11514,7 +12478,7 @@ msgstr "plik" #: src/clparse.c:237 msgid "Flush all debug output written to stderr" -msgstr "Wrzuć dane debug do stderr" +msgstr "WryÅ›lij dane odpluskwiania do stderr" #: src/clparse.c:238 msgid "Play in fullscreen mode" @@ -11608,21 +12572,21 @@ msgstr "poÅ‚Ä…cz od razu przez IP/nazwÄ™ hosta" #: src/clparse.c:255 msgid "host" -msgstr "gospodarz" +msgstr "host" #: src/clparse.c:256 msgid "go directly to host screen" -msgstr "Idź od razu na ekran gospodarza" +msgstr "Idź od razu na ekran hosta" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Gracz" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Nowy pojazd" @@ -11661,18 +12625,18 @@ msgstr "Moc silnika" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Waga" @@ -11686,127 +12650,127 @@ msgstr "ÅÄ…czna wymagana energia" msgid "Total Body Points" msgstr "ÅÄ…czne punkty zdrowia" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Zużycie energii" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transportowiec" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hydra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" -msgstr "ZasiÄ™g sensora" +msgstr "ZasiÄ™g radaru" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" -msgstr "Moc sensora" +msgstr "Moc radaru" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "Moc ECM" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "PrÄ™dkość budowania" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "ZasiÄ™g" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Obrażenia" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Szybkostrzelność" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "PrÄ™dkość w powietrzu" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "PrÄ™dkość na drogach" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "PrÄ™dkość na bezdrożach" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "PrÄ™dkość na wodzie" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Bronie" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Systemy" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Gracz opuÅ›ciÅ‚ grÄ™" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Gracz odrzucony" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." msgstr "Nie można budować. PÅ‚onie ropa." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Obrażenia %d%% - DoÅ›wiadczenie %d, %s" -#: src/display.c:1857 +#: src/display.c:1875 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Sojusznik - Obrażenia %d%% - DoÅ›wiadczenie %d, %s" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" msgstr "Rozkazano budowniczemu zbudować RafineriÄ™" -#: src/display.c:2048 +#: src/display.c:2078 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Rozkazano budowniczemu zbudować RafineriÄ™" -#: src/display.c:2049 +#: src/display.c:2079 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Rozkazano budowniczemu zbudować RafineriÄ™" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Jednostka utracona!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Struktura odbudowana" -#: src/droid.c:2935 +#: src/droid.c:2956 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" @@ -11814,7 +12778,7 @@ msgstr[0] "Wybrana grupa %u - %u jednostka" msgstr[1] "Wybrana grupa %u - %u jednostki" msgstr[2] "Wybrana grupa %u - %u jednostek" -#: src/droid.c:2948 +#: src/droid.c:2969 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" @@ -11822,7 +12786,7 @@ msgstr[0] "%u jednostka przypisana do Grupy %u" msgstr[1] "%u jednostki przypisane do Grupy %u" msgstr[2] "%u jednostek przypisano do Grupy %u" -#: src/droid.c:2961 +#: src/droid.c:2982 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" @@ -11830,7 +12794,7 @@ msgstr[0] "WyÅ›rodkowano na grupie %u - %u jednostka" msgstr[1] "WyÅ›rodkowano na grupie %u - %u jednostki" msgstr[2] "WyÅ›rodkowano na grupie %u - %u jednostek" -#: src/droid.c:2965 +#: src/droid.c:2986 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" @@ -11839,509 +12803,507 @@ msgstr[1] "Wyrównanie z grupÄ… %u - %u jednostki" msgstr[2] "Wyrównanie z grupÄ… %u - %u jednostek" # I had really trouble with this one. This word has no meaning in Polish so I decided to translate it as 'Newbe' -#: src/droid.c:3249 +#: src/droid.c:3270 msgid "Rookie" msgstr "Nowicjusz" -#: src/droid.c:3250 +#: src/droid.c:3271 msgctxt "rank" msgid "Green" msgstr "Zielony" -#: src/droid.c:3251 +#: src/droid.c:3272 msgid "Trained" msgstr "Wyszkolony" -#: src/droid.c:3252 +#: src/droid.c:3273 msgid "Regular" msgstr "Zawodowy" -#: src/droid.c:3253 +#: src/droid.c:3274 msgid "Professional" msgstr "Profesjonalny" -#: src/droid.c:3254 +#: src/droid.c:3275 msgid "Veteran" msgstr "Weteran" -#: src/droid.c:3255 +#: src/droid.c:3276 msgid "Elite" msgstr "Elita" -#: src/droid.c:3256 +#: src/droid.c:3277 msgid "Special" msgstr "Specjalny" -#: src/droid.c:3257 +#: src/droid.c:3278 msgid "Hero" msgstr "Bohater" -#: src/frontend.c:252 -msgid "Single Player" -msgstr "Kampania dla jednego gracza" - #: src/frontend.c:253 +msgid "Single Player" +msgstr "Gra jednoosobowa" + +#: src/frontend.c:254 msgid "Multi Player" msgstr "Gra wieloosobowa" -#: src/frontend.c:254 -#: src/frontend.c:312 +#: src/frontend.c:255 +#: src/frontend.c:313 msgid "Tutorial" msgstr "Szkolenie" -#: src/frontend.c:255 +#: src/frontend.c:256 msgid "Options" msgstr "Opcje" -#: src/frontend.c:256 +#: src/frontend.c:257 msgid "View Intro" msgstr "Zobacz intro" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" msgstr "Wyjdź z gry" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "MENU GÅÓWNE" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "Szybka rozgrywka" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "SZKOLENIA" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Powrót" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "Nowa kampania" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Rozpocznij potyczkÄ™" -#: src/frontend.c:372 +#: src/frontend.c:373 msgid "Challenges" msgstr "Wyzwania" -#: src/frontend.c:373 +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "ZaÅ‚aduj grÄ™" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "JEDEN GRACZ" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 -#: src/mission.c:2526 -#: src/mission.c:2631 +#: src/mission.c:2534 +#: src/mission.c:2639 msgid "Load Saved Game" msgstr "ZaÅ‚aduj zapisany stan gry" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "WIELU GRACZY" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Utwórz grÄ™" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "DoÅ‚Ä…cz do gry" -#: src/frontend.c:584 +#: src/frontend.c:585 #: src/multiint.c:1254 msgid "OPTIONS" msgstr "OPCJE" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "Ustawienia gry" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "Opcje grafiki" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "Ustawienia obrazu" -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "Ustawienia dźwiÄ™ku" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "Ustawienia myszki" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" -msgstr "Ustawienia klawiszy" +msgstr "Skróty klawiszowe" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "Odtwarzanie filmów" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "1X" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "PeÅ‚ny ekran" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "WstrzÄ…sy ekranu" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "WÅ‚Ä…cz" -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "WyÅ‚Ä…cz" -#: src/frontend.c:686 +#: src/frontend.c:687 #: src/multiint.c:1323 msgid "Fog" msgstr "MgÅ‚a" # 'Mist' and 'Fog' has the same meaning in Polish -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "MgÅ‚a" -#: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:694 +#: src/frontend.c:761 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "MgÅ‚a wojny" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Napisy" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Cienie" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" msgstr "USTAWIENIA GRAFIKI" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" -msgstr "GÅ‚oÅ›ność gÅ‚osu" +msgstr "GÅ‚oÅ›ność mowy" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "GÅ‚oÅ›ność efektów" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "GÅ‚oÅ›ność muzyki" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" msgstr "USTAWIENIA DŹWIĘKU" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "Tryb graficzny*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "W oknie" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Rozdzielczość*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Rozmiar tekstury" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" -msgstr "Synchronizacja pionowa*" +msgstr "Synchron. pionowa*" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" -msgstr "* DziaÅ‚a po ponownym uruchomieniu gry" +msgstr "* Wymaga restartu gry" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" msgstr "USTAWIENIA WIDEO" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" msgstr "Odwróć rotacjÄ™" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "ZÅ‚ap kursor" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" msgstr "Kolorowe kursory*" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" -msgstr "Odwróć przyciski myszki" +msgstr "Odwróć przyciski" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" -msgstr "* Może mieć zÅ‚y wpÅ‚yw na wydajność." +msgstr "* Może zmniejszyć wydajność" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" msgstr "USTAWIENIA MYSZKI" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "Poziom trudnoÅ›ci" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "Åatwy" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "Normalny" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "Trudny" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "Szybkość przewijania" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "JÄ™zyk" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" -msgstr "Kolor jednostki" +msgstr "Kolor jednostek" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "USTAWIENIA GRY" -#: src/frontend.c:1693 +#: src/frontend.c:1706 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Aktywne mody: " +msgid "Mod: " +msgstr "Mod: " -#: src/hci.c:1363 +#: src/hci.c:1360 msgid "MAP SAVED!" msgstr "MAPA ZAPISANA!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 #, fuzzy msgid "GAME SAVED: " msgstr "GRA ZAPISANA :" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" msgstr "Nie udaÅ‚o siÄ™ utworzyć budynku" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." -msgstr "Gracz %u używa kodu (debug menu) by zdobyć nowÄ… budowlÄ™: %s." +msgstr "Gracz %u oszukuje (menu odpluskwiania) by zdobyć nowÄ… budowlÄ™: %s." -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." -msgstr "Gracz %u używa kodu (debug menu) by zdobyć nowy obiekt: %s." +msgstr "Gracz %u oszukuje (menu odpluskwiania) by zdobyć nowy obiekt: %s." -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." -msgstr "Gracz %u używa kodu (debug menu) by zdobyć nowÄ… jednostkÄ™: %s." +msgstr "Gracz %u oszukuje (menu odpluskwiania) by zdobyć nowÄ… jednostkÄ™: %s." -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" msgstr "Dowódcy (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" msgstr "Dane wywiadu (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" msgstr "Produkcja (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" msgstr "Projekt (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" msgstr "Badania (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" msgstr "Buduj (F3)" -#: src/hci.c:3891 +#: src/hci.c:3876 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energia" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" -msgstr "Tekstury" +msgstr "Kafel" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" -msgstr "Umieść tekstury na mapie" +msgstr "Umieść kafel na mapie" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" msgstr "Jednostka" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" msgstr "Umieść jednostkÄ™ na mapie" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" -msgstr "Konstrukcje" +msgstr "Struktura" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" msgstr "Umieść struktury na mapie" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" msgstr "Obiekt" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" msgstr "Umieść obiekty specjalne na mapie" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" -msgstr "Spauzuj lub odpauzuj grÄ™" +msgstr "Spauzuj lub wznów grÄ™" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" msgstr "Wyrównaj wysokość wszystkich obiektów mapy" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Wyjdź" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" msgstr "ZakoÅ„cz grÄ™" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Pasek postÄ™pu" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" msgstr "Punkt dostaw fabryki" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" -msgstr "ZapÄ™tlona produkcja" +msgstr "Cykl produkcji" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "PrzewiÅ„ zakÅ‚adki w lewo" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "PrzewiÅ„ zakÅ‚adki w prawo" @@ -12349,11 +13311,11 @@ msgstr "PrzewiÅ„ zakÅ‚adki w prawo" #: src/ingameop.c:203 #: src/ingameop.c:285 msgid "Resume Game" -msgstr "Powrót do gry" +msgstr "Kontynuuj grÄ™" #: src/ingameop.c:142 msgid "WARNING: You're the host. If you quit, the game ends for everyone!" -msgstr "OSTRZEÅ»ENIE: jesteÅ› gospodarzem. Gdy wyjdziesz, gra zostaje zakoÅ„czona dla wszystkich!" +msgstr "OSTRZEÅ»ENIE: jesteÅ› hostem. Gdy wyjdziesz, gra zostaje zakoÅ„czona dla wszystkich!" #: src/ingameop.c:195 #: src/ingameop.c:548 @@ -12367,23 +13329,34 @@ msgstr "" #: src/ingameop.c:295 #: src/ingameop.c:523 -#: src/mission.c:2513 -#: src/mission.c:2634 +#: src/mission.c:2521 +#: src/mission.c:2642 msgid "Save Game" msgstr "Zapisz grÄ™" #: src/ingameop.c:364 msgid "Host has quit the game!" -msgstr "Gospodarz opuÅ›ciÅ‚ grÄ™!" +msgstr "Host opuÅ›ciÅ‚ grÄ™!" #: src/ingameop.c:370 msgid "The game can't continue without the host." -msgstr "Gra nie może być kontynuowana bez gospodarza." +msgstr "Gra nie może być kontynuowana bez hosta." #: src/ingameop.c:376 msgid "--> QUIT <--" msgstr "--> WYJÅšCIE <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" +"Wymagany mod nie mógÅ‚ zostać zaÅ‚adowany: %s\n" +"\n" +"Warzone spróbuje zaÅ‚adować grÄ™ bez niego." + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12399,9 +13372,9 @@ msgid "Power Accrued" msgstr "Moc zwiÄ™kszona" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1397 msgid "PAUSED" -msgstr "Pauza" +msgstr "PAUZA" #: src/intelmap.c:413 msgid "Research Update" @@ -12417,7 +13390,7 @@ msgstr "Obecny cel" #: src/intelmap.c:1516 msgid "New Intelligence Report" -msgstr "PrzyszÅ‚y dane wywiadu" +msgstr "Nowy raport wywiadu" #: src/intorder.c:161 #: src/keymap.c:390 @@ -12427,7 +13400,7 @@ msgstr "Krótki zasiÄ™g" #: src/intorder.c:162 #: src/keymap.c:397 msgid "Long Range" -msgstr "DÅ‚ugi zasiÄ™g" +msgstr "Daleki zasiÄ™g" #: src/intorder.c:163 #: src/keymap.c:389 @@ -12442,7 +13415,7 @@ msgstr "Wycofaj siÄ™ przy Å›rednich obrażeniach" #: src/intorder.c:165 #: src/keymap.c:410 msgid "Retreat at Heavy Damage" -msgstr "Wycofaj siÄ™ przy cieżkich obrażeniach" +msgstr "Wycofaj siÄ™ przy ciężkich obrażeniach" #: src/intorder.c:166 #: src/keymap.c:411 @@ -12451,7 +13424,7 @@ msgstr "Wykonaj lub giÅ„!" #: src/intorder.c:167 msgid "Fire-At-Will" -msgstr "Strzelać bez rozkazu" +msgstr "Strzelaj bez rozkazu" #: src/intorder.c:168 #: src/keymap.c:385 @@ -12461,12 +13434,12 @@ msgstr "Odpowiadaj ogniem" #: src/intorder.c:169 #: src/keymap.c:383 msgid "Hold Fire" -msgstr "Wstrzymać ogieÅ„" +msgstr "Wstrzymaj ogieÅ„" #: src/intorder.c:170 #: src/keymap.c:392 msgid "Patrol" -msgstr "Patrol" +msgstr "Patroluj" #: src/intorder.c:171 #: src/keymap.c:391 @@ -12476,12 +13449,12 @@ msgstr "Åšcigaj" #: src/intorder.c:172 #: src/keymap.c:387 msgid "Guard Position" -msgstr "Chronić pozycjÄ™" +msgstr "ChroÅ„ pozycjÄ™" #: src/intorder.c:173 #: src/keymap.c:394 msgid "Hold Position" -msgstr "Trzymać pozycjÄ™" +msgstr "Trzymaj pozycjÄ™" #: src/intorder.c:174 #: src/keymap.c:393 @@ -12490,21 +13463,21 @@ msgstr "Wróć do naprawy" #: src/intorder.c:175 msgid "Return To HQ" -msgstr "Wróć do bazy" +msgstr "Wróć do kwatery głównej" #: src/intorder.c:176 #: src/keymap.c:395 msgid "Go to Transport" -msgstr "Idź do transportu." +msgstr "Idź do transportu" #: src/intorder.c:177 #: src/keymap.c:420 msgid "Return for Recycling" -msgstr "Powrót na przetworzenie" +msgstr "Wróć na przetworzenie" #: src/intorder.c:178 msgid "Recycle" -msgstr "Przetworzyć" +msgstr "Przetwórz" #: src/intorder.c:179 msgid "Assign Factory Production" @@ -12526,293 +13499,293 @@ msgstr "Przypisz produkcjÄ™ Fabryki VTOL" msgid "Circle" msgstr "Krąż" -#: src/keybind.c:134 +#: src/keybind.c:136 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Przepraszamy, ten kod jest zablokowany w grze wieloosobowej." -#: src/keybind.c:140 +#: src/keybind.c:142 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Ostrzeżenie! To oszustwo zawiera bÅ‚Ä™dy. Nie zalecamy używania go." -#: src/keybind.c:224 -msgid "Lets us see what you see!" -msgstr "Zobaczmy to co ty widzisz!" - #: src/keybind.c:226 +msgid "Lets us see what you see!" +msgstr "Pozwól nam zobaczyć to co widzisz!" + +#: src/keybind.c:228 msgid "Fine, weapon & sensor display is off!" -msgstr "Dobra, pokazywanie broni i sensorów wyÅ‚Ä…czone!" +msgstr "Dobra, pokazywanie broni i radarów wyÅ‚Ä…czone!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:359 +#, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Gracz %u używa kodu (debug menu) by zdobyć nowÄ… jednostkÄ™: %s." +msgstr "Gracz %u oszukuje by zdobyć armiÄ™ jednostek %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:399 +#: src/keybind.c:429 +#: src/keybind.c:446 +#: src/keybind.c:490 +#: src/keybind.c:598 +#: src/keybind.c:638 +#: src/keybind.c:744 +#: src/keybind.c:1287 +#: src/keybind.c:1344 +#: src/keybind.c:1446 +#: src/keybind.c:1567 +#: src/keybind.c:1918 +#: src/keybind.c:1959 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Gracz %u) używa oszustwa :%s" -#: src/keybind.c:398 +#: src/keybind.c:400 msgid "Hard as nails!!!" msgstr "Twardziele!!!" -#: src/keybind.c:412 +#: src/keybind.c:414 msgid "Takings thing easy!" msgstr "Na luzie!" -#: src/keybind.c:428 +#: src/keybind.c:430 msgid "1000 big ones!!!" msgstr "1000 wielgachnych!!!" -#: src/keybind.c:445 +#: src/keybind.c:447 msgid "Power overwhelming" msgstr "PrzytÅ‚aczajÄ…cy poziom energii" -#: src/keybind.c:460 +#: src/keybind.c:462 msgid "Back to normality!" msgstr "Powrót do normalnoÅ›ci!" -#: src/keybind.c:473 +#: src/keybind.c:475 msgid "Getting tricky!" msgstr "Oszukujemy!" -#: src/keybind.c:489 +#: src/keybind.c:491 msgid "Twice as nice!" msgstr "Dwa razy lepiej!" -#: src/keybind.c:500 +#: src/keybind.c:502 msgid "FPS display is enabled." msgstr "Pokazuj FPS." -#: src/keybind.c:504 +#: src/keybind.c:506 msgid "FPS display is disabled." msgstr "Nie pokazuj FPS." -#: src/keybind.c:525 +#: src/keybind.c:530 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:562 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Gracz %u) używa oszustwa :Liczba droidów: %d Liczba konstrukcji: %d Liczba obiektów: %d" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power disabled" msgstr "NieskoÅ„czona energia wyÅ‚Ä…czona" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power enabled" msgstr "NieskoÅ„czona energia wÅ‚Ä…czona" -#: src/keybind.c:634 +#: src/keybind.c:639 msgid "All items made available" msgstr "Wszystkie przedmioty dostÄ™pne." -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog on" msgstr "MgÅ‚a wÅ‚Ä…czona" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog off" msgstr "MgÅ‚a wyÅ‚Ä…czona" -#: src/keybind.c:1179 +#: src/keybind.c:1176 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Ostrzeżenie! To oszustwo może powodować poważne problemy w przyszÅ‚oÅ›ci! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1176 msgid "Ending Mission." msgstr "ZakoÅ„czenie misji." -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW ENABLED!" msgstr "OSZUKIWANIE JEST TERAZ AKTYWNE!" -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW DISABLED!" msgstr "OSZUKIWANIE JEST TERAZ WYÅÄ„CZONE!" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode ON" msgstr "God Mode WÅÄ„CZONY" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode OFF" msgstr "God Mode WYÅÄ„CZONY" -#: src/keybind.c:1360 +#: src/keybind.c:1357 msgid "View Aligned to North" -msgstr "Widok ustawiony na pólnoc" +msgstr "Widok ustawiony na północ" -#: src/keybind.c:1369 +#: src/keybind.c:1366 #, c-format msgid "Trap cursor %s" msgstr "ZÅ‚ap kursor %s" -#: src/keybind.c:1450 +#: src/keybind.c:1447 msgid "Researched EVERYTHING for you!" msgstr "WSZYSTKIE badania ukoÅ„czone!" -#: src/keybind.c:1481 +#: src/keybind.c:1503 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Gracz %u) używa oszustwa :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1504 msgid "Researched" msgstr "Zbadane" -#: src/keybind.c:1503 +#: src/keybind.c:1525 msgid "Only displaying energy bars when selected" msgstr "WyÅ›wietlaj pasek energii tylko przy zaznaczaniu" -#: src/keybind.c:1506 +#: src/keybind.c:1528 msgid "Always displaying energy bars for units" msgstr "Zawsze wyÅ›wietlaj pasek energii dla jednostek" -#: src/keybind.c:1509 +#: src/keybind.c:1531 msgid "Always displaying energy bars for units and structures" msgstr "Zawsze wyÅ›wietlaj pasek energii dla jednostek oraz struktur" -#: src/keybind.c:1531 +#: src/keybind.c:1553 msgid "Demo mode off - Returning to normal game mode" msgstr "Tryb demo wyÅ‚Ä…czony - Powrót do normalnego trybu gry" -#: src/keybind.c:1546 +#: src/keybind.c:1568 msgid "Debug menu is Open" msgstr "Menu odpluskwiania jest otwarte" -#: src/keybind.c:1577 +#: src/keybind.c:1599 msgid "Unable to locate any resource extractors!" msgstr "Nie można dodać żadnych miejsc z zasobami" -#: src/keybind.c:1798 +#: src/keybind.c:1820 msgid "Oh, the weather outside is frightful... SNOW" -msgstr "Już Å›wiÄ™ta?...ÅšNIEG" +msgstr "Już Å›wiÄ™ta?... ÅšNIEG" -#: src/keybind.c:1804 +#: src/keybind.c:1826 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "ZebraÅ‚y siÄ™ ciemne chmury... DESZCZ" -#: src/keybind.c:1810 +#: src/keybind.c:1832 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Prognoza: Czyste niebo na caÅ‚ym obszarze... BRAK POGODY" -#: src/keybind.c:1895 +#: src/keybind.c:1917 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Ostrzeżenie! Może to mieć drastyczne konsekwencje w przypadku niewÅ‚aÅ›ciwego użycia w misjach." -#: src/keybind.c:1897 +#: src/keybind.c:1919 msgid "All enemies destroyed by cheating!" -msgstr "Wszyscy przeciwnicy zniszczoni przy użyciu kodów!" +msgstr "Wszyscy przeciwnicy zniszczeni przez oszukiwanie!" -#: src/keybind.c:1938 +#: src/keybind.c:1960 msgid "Destroying selected droids and structures!" msgstr "Niszczenie zaznaczonych droidów i struktur!" -#: src/keybind.c:2460 +#: src/keybind.c:2482 msgid "Centered on player HQ, direction NORTH" -msgstr "WyÅ›rodkowano na HQ gracza, kierunek PÓÅNOC" +msgstr "WyÅ›rodkowano na kwaterÄ™ głównÄ… gracza, kierunek PÓÅNOC" -#: src/keybind.c:2472 +#: src/keybind.c:2494 msgid "Unable to locate HQ!" -msgstr "Nie udaÅ‚o siÄ™ zlokalizować kwatery głównej" +msgstr "Nie udaÅ‚o siÄ™ zlokalizować kwatery głównej!" -#: src/keybind.c:2479 +#: src/keybind.c:2501 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "Limit szybkoÅ›ci tworzenia zostaÅ‚ usuniÄ™ty z gry z powodu bÅ‚Ä™dów." -#: src/keybind.c:2528 +#: src/keybind.c:2550 msgid "Vertical rotation direction: Normal" msgstr "Kierunek pionowej rotacji: normalny" -#: src/keybind.c:2533 +#: src/keybind.c:2555 msgid "Vertical rotation direction: Flipped" msgstr "Kierunek pionowej rotacji: odbity" -#: src/keybind.c:2542 +#: src/keybind.c:2564 msgid "Screen shake when things die: Off" msgstr "WstrzÄ…sy ekranu gdy coÅ› ginie: WyÅ‚Ä…czone" -#: src/keybind.c:2547 +#: src/keybind.c:2569 msgid "Screen shake when things die: On" msgstr "WstrzÄ…sy ekranu gdy coÅ› ginie: WÅ‚Ä…czone" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2614 +#: src/keybind.c:2657 msgid "Sorry, but game speed cannot be changed in multiplayer." -msgstr "Przepraszamy,prÄ™dkość gry nie może zostać zmieniona w grze wieloosobowej." +msgstr "Przepraszamy, prÄ™dkość gry nie może zostać zmieniona w grze wieloosobowej." -#: src/keybind.c:2613 -#: src/keybind.c:2656 +#: src/keybind.c:2635 #: src/keybind.c:2678 +#: src/keybind.c:2700 msgid "Game Speed Reset" msgstr "Przywróć normalnÄ… prÄ™dkość gry" -#: src/keybind.c:2617 +#: src/keybind.c:2639 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "PrÄ™dkość gry zwiÄ™kszona do %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2682 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "PrÄ™dkość gry zmniejszona do %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2712 msgid "Build menu will reopen" msgstr "Menu budowania zostanie ponownie otwarte" -#: src/keybind.c:2694 +#: src/keybind.c:2716 msgid "Build menu will not reopen" msgstr "Menu budowania nie zostanie ponownie otwarte" -#: src/keybind.c:2706 +#: src/keybind.c:2728 msgid "Radar showing friend-foe colors" -msgstr "Mapa pokazuje kolory przyjaciel-wróg" +msgstr "Radar pokazuje kolory przyjaciel-wróg" -#: src/keybind.c:2710 +#: src/keybind.c:2732 msgid "Radar showing player colors" -msgstr "Mapa pokazuje kolory graczy" +msgstr "Radar pokazuje kolory graczy" -#: src/keybind.c:2731 +#: src/keybind.c:2753 msgid "Radar showing only objects" -msgstr "Mapa pokazuje tylko obiekty" +msgstr "Radar pokazuje tylko obiekty" -#: src/keybind.c:2734 +#: src/keybind.c:2756 msgid "Radar blending terrain and height" -msgstr "Mapa pokazuje teren i wysokość" +msgstr "Radar pokazuje teren i wysokość" -#: src/keybind.c:2737 +#: src/keybind.c:2759 msgid "Radar showing terrain" -msgstr "Mapa pokazuje teren" +msgstr "Radar pokazuje teren" -#: src/keybind.c:2740 +#: src/keybind.c:2762 msgid "Radar showing revealed terrain" msgstr "Radar pokazuje ujawniony teren" -#: src/keybind.c:2743 +#: src/keybind.c:2765 msgid "Radar showing height" -msgstr "Mapa pokazuje wysokość" +msgstr "Radar pokazuje wysokość" #: src/keyedit.c:347 msgid "KEY MAPPING" -msgstr "Ustawienia klawiszy" +msgstr "SKRÓTY KLAWISZOWE" #: src/keyedit.c:369 #: src/multiint.c:638 @@ -12850,14 +13823,13 @@ msgstr "Dane wywiadu" msgid "Commanders" msgstr "Dowódcy" -# I use 'Map' instead of 'Radar' to not confuse the player #: src/keymap.c:301 msgid "Toggle Radar" -msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz mapÄ™" +msgstr "PrzeÅ‚Ä…cz radar" #: src/keymap.c:302 msgid "Toggle Console Display" -msgstr "Pokaż konsolÄ™" +msgstr "PrzeÅ‚Ä…cz wyÅ›wietlanie konsoli" #: src/keymap.c:303 msgid "Toggle Damage Bars On/Off" @@ -13109,7 +14081,7 @@ msgstr "Konsola wÅ‚/wyÅ‚" #: src/keymap.c:382 msgid "Center View on HQ" -msgstr "Centruj widok na HQ" +msgstr "Centruj widok na kwaterÄ™ głównÄ…" #: src/keymap.c:384 msgid "View Unassigned Units" @@ -13117,7 +14089,7 @@ msgstr "Pokaż nieprzydzielone jednostki" #: src/keymap.c:386 msgid "Fire at Will" -msgstr "Strzelać bez rozkazu" +msgstr "Strzelaj bez rozkazu" #: src/keymap.c:388 msgid "Return to HQ" @@ -13192,42 +14164,42 @@ msgstr "PrzeÅ‚Ä…cz otwieranie menu budowania" msgid "Could not save game!" msgstr "Niemożna zapisać gry!" -#: src/mission.c:2066 +#: src/mission.c:2074 msgid "Load Transport" msgstr "Åaduj transport" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED by cheating!" msgstr "CEL OSIÄ„GNIĘTY przez oszukiwanie!" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED" msgstr "CEL OSIÄ„GNIĘTY" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED--and you cheated!" msgstr "CEL NIE OSIÄ„GNIĘTY--chociaż oszukiwaÅ‚eÅ›!" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED" msgstr "CEL NIE OSIÄ„GNIĘTY" -#: src/mission.c:2492 -#: src/mission.c:2532 -#: src/mission.c:2650 +#: src/mission.c:2500 +#: src/mission.c:2540 +#: src/mission.c:2658 msgid "Quit To Main Menu" msgstr "Wyjdź do menu głównego" -#: src/mission.c:2500 +#: src/mission.c:2508 msgid "Continue Game" msgstr "Kontynuuj grÄ™" -#: src/mission.c:2597 +#: src/mission.c:2605 msgid "GAME SAVED :" msgstr "GRA ZAPISANA :" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2634 +#: src/move.c:2650 #, c-format msgid "You found %u power in an oil drum." msgstr "ZnalazÅ‚eÅ› %u energii w beczce z ropÄ…." @@ -13285,7 +14257,7 @@ msgstr "Odkrywasz plany: %s" #: src/multiint.c:572 #: src/multilimit.c:192 msgid "Accept Settings" -msgstr "Akceptuj ustawienia" +msgstr "Zapisz ustawienia" #: src/multiint.c:574 #: src/multiint.c:1120 @@ -13330,7 +14302,7 @@ msgstr "Masz niekompatybilny mod." #: src/multiint.c:858 msgid "Host couldn't send file?" -msgstr "Gospodarz nie mógÅ‚ przesÅ‚ać pliku?" +msgstr "Host nie mógÅ‚ przesÅ‚ać pliku?" #: src/multiint.c:862 msgid "Incorrect Password!" @@ -13338,7 +14310,7 @@ msgstr "NiewÅ‚aÅ›ciwe hasÅ‚o!" #: src/multiint.c:865 msgid "Host has dropped connection!" -msgstr "Gospodarz zerwaÅ‚ poÅ‚Ä…czenie!" +msgstr "Host zerwaÅ‚ poÅ‚Ä…czenie!" #: src/multiint.c:869 msgid "Connection Error" @@ -13384,11 +14356,11 @@ msgstr "Kliknij by ustawić hasÅ‚o" #: src/multiint.c:1287 #: src/multiint.c:1288 msgid "Scavengers" -msgstr "Padlinożercy" +msgstr "Åšmieciarze" #: src/multiint.c:1290 msgid "No Scavengers" -msgstr "Brak Padlinożerców" +msgstr "Brak Åšmieciarzy" #: src/multiint.c:1320 msgid "Select Player Name" @@ -13523,56 +14495,56 @@ msgstr "WÅ‚Ä…czono 'zablokowane drużyny'" #: src/multiint.c:2824 #, c-format msgid "The host has kicked %s from the game!" -msgstr "Gospodarz wyrzuciÅ‚ %s z gry!" +msgstr "Host wyrzuciÅ‚ %s z gry!" #: src/multiint.c:2899 msgid "Host is Starting Game" -msgstr "Gospodarz rozpoczyna grÄ™" +msgstr "Host rozpoczyna grÄ™" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Gracze" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "PrzesyÅ‚anie mapy: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "Mapa: %d%% pobrane" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" -msgstr "GOSPODARZ" +msgstr "HOST" #: src/multijoin.c:98 #: src/multijoin.c:99 msgid "Players Still Joining" msgstr "Gracze wciąż doÅ‚Ä…czajÄ…" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s opuÅ›ciÅ‚ grÄ™" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "Transfer pliku zostaÅ‚ anulowany dla %d." -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "%s (%u) ma niekompatybilny mod i zostaÅ‚ wyrzucony." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s doÅ‚Ä…cza do gry" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Wiadomość systemowa:" @@ -13658,47 +14630,47 @@ msgstr "PrzesyÅ‚a energiÄ™ graczowi" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Gracz %s wyrzucony z powodu próby pominiÄ™cia sprawdzenia integralnoÅ›ci danych!" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "(sojusznicy" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(prywatny dla" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[nieprawidÅ‚owy]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Zielony" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "PomaraÅ„czowy" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Szary" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Czarny" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Czerwony" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Niebieski" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Różowy" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Turkusowy" @@ -13841,13 +14813,12 @@ msgstr "ZWYCIĘŻYÅEÅš!" msgid "YOU WERE DEFEATED!" msgstr "ZOSTAÅEÅš POKONANY!" -# I used 'Beacon' as 'Signal', IMO it sounds better -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "SygnaÅ‚ otrzymany od %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "SygnaÅ‚ %d" @@ -13871,19 +14842,19 @@ msgstr "Niemożna odnaleźć jednostek budujÄ…cych!" #: src/selection.c:439 msgid "Unable to locate any Sensor Units!" -msgstr "Niemożna odnaleźć jednostek z sensorem!" +msgstr "Niemożna odnaleźć jednostek z radarami!" #: src/selection.c:442 msgid "Unable to locate any Commanders!" msgstr "Niemożna odnaleźć dowódców!" -#: src/structure.c:2838 +#: src/structure.c:2823 #, fuzzy msgid "Command Control Limit Reached - Production Halted" msgstr "Limit kontrolny osiÄ…gniÄ™ty - produkcja wstrzymana" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" @@ -13891,51 +14862,51 @@ msgstr[0] "%s - %u Jednostka przydzielona" msgstr[1] "%s - %u Jednostki przydzielone" msgstr[2] "%s - %u Jednostek przydzielonych" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Uszkodzenia %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - PoÅ‚Ä…czony %u z %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Uszkodzony elektronicznie" # This maybe sound weird, but I translated this as 'stolen technology' -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "Technologia skradziona - raport widocznoÅ›ci" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "Technologia skradziona - NapÄ™d" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" -msgstr "Technologia skradziona - kadÅ‚ub" +msgstr "Technologia skradziona - KadÅ‚ub" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "Technologia skradziona - BroÅ„" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" msgstr "Technologia skradziona - Brak" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "Technologia skradziona - Naprawa" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" msgstr "Technologia skradziona - Brak" @@ -13944,30 +14915,30 @@ msgstr "Technologia skradziona - Brak" msgid "Launch Transport" msgstr "Uruchom transport" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "PosiÅ‚ki lÄ…dujÄ…" #: src/version.c:139 msgid " (modified and switched locally)" -msgstr "(modyfikowany i zamieniony lokalnie)" +msgstr " (zmodyfikowany i zamieniony lokalnie)" #: src/version.c:141 msgid " (modified locally)" -msgstr "(modyfikowany lokalnie)" +msgstr " (zmodyfikowany lokalnie)" #: src/version.c:143 msgid " (switched locally)" -msgstr "(zamieniony lokalnie)" +msgstr " (zamieniony lokalnie)" #: src/version.c:150 msgid " - DEBUG" -msgstr "- DEBUG" +msgstr " - DEBUG" #: src/version.c:159 #, c-format msgid " - Built %s" -msgstr "- Built %s" +msgstr " - Zbudowana %s" #. TRANSLATORS: This string looks as follows when expanded. #. "Version " @@ -13979,282 +14950,8 @@ msgstr "Wersja %s%s%s%s" #~ msgid ": Unknown cheat code." #~ msgstr ": Nieznany kod oszustwa." +#~ msgid "(Player %u) has detected the borg 'legs' bug! Please enter legs in your console and upload the files to us!" +#~ msgstr "(Gracz %u) wykryÅ‚ bÅ‚Ä…d 'legs' (nóg) cyborgów! Wprowadź legs do swojej konsoli i wyÅ›lij do nas pliki!" + #~ msgid "You found %u power in an oil drum" #~ msgstr "ZnalazÅ‚eÅ› %u energii w beczce z ropÄ…" - -#~ msgid "Player %u has the wrong game version. Auto kicking." -#~ msgstr "Gracz %u ma niewÅ‚aÅ›ciwÄ… wersjÄ™ gry. Automatyczne wyrzucenie." - -#~ msgid "Player %u has the wrong game version. Auto kicking." -#~ msgstr "Gracz %u ma niewÅ‚aÅ›ciwÄ… wersjÄ™ gry. Automatyczne wyrzucenie." - -#~ msgid "Player %u has the wrong password. Auto kicking." -#~ msgstr "Gracz %u ma niewÅ‚aÅ›ciwe hasÅ‚o. Automatyczne wyrzucenie." - -#~ msgid "Increases Bombing damage" -#~ msgstr "ZwiÄ™ksza obrażenia bombardowania" - -#~ msgid "The ultimate in sensor technology" -#~ msgstr "Najlepsza technologia radarowa" - -#~ msgid "Formation speed limiting OFF" -#~ msgstr "Limit szybkoÅ›ci oddziałów wyÅ‚Ä…czony" - -#~ msgid "Formation speed limiting ON" -#~ msgstr "Limit szybkoÅ›ci oddziałów wyÅ‚Ä…czony" - -#~ msgid "Wrong data/mod detected by Host." -#~ msgstr "NiewÅ‚aÅ›ciwe dane / mod wykryte przez host." - -#~ msgid "you are unwanted by the host" -#~ msgstr "jesteÅ› niechciany przez host" - -#~ msgid "It is not nice to cheat!" -#~ msgstr "NieÅ‚adnie oszukiwać!" - -#~ msgid "Start Multiplayer Audio" -#~ msgstr "WÅ‚Ä…cz multiplayer audio" - -#~ msgid "Stop Multiplayer Audio" -#~ msgstr "Zatrzymaj multiplayer audio" - -#~ msgid "Game" -#~ msgstr "Gra" - -#~ msgid "Mayhem" -#~ msgstr "Chaos" - -#~ msgid "Skirmish" -#~ msgstr "Potyczka" - -#~ msgid "English" -#~ msgstr "Angielski" - -#~ msgid "Basque" -#~ msgstr "BaskaÅ„ski" - -#~ msgid "Norwegian (Nynorsk)" -#~ msgstr "Norweski(Nynorsk)" - -#~ msgid "Swedish (Sweden)" -#~ msgstr "Szwedzki(Szwecja)" - -#~ msgid "Swedish" -#~ msgstr "Szwedzki" - -#~ msgid "Turkish" -#~ msgstr "Turecki" - -#~ msgid "Uzbek (Cyrillic)" -#~ msgstr "UzbekistaÅ„ski (Cyrylica)" - -#, fuzzy -#~ msgid "Heavy Machinegun Cobra Half-trackS" -#~ msgstr "Kobra z ciężkim karabinem na pół-gÄ…sienicach" - -#~ msgid "Peperpot Emplacement" -#~ msgstr "Stanowisko Pepperpot" - -#~ msgid "Command turret MkII" -#~ msgstr "Wieżyczka dowodzÄ…ca MkII" - -#~ msgid "Command turret MkIV" -#~ msgstr "Wieżyczka dowodzÄ…ca MkIV" - -#, fuzzy -#~ msgid "Cursor Mode" -#~ msgstr "ModuÅ‚ energetyczny" - -#, fuzzy -#~ msgid "Hardware" -#~ msgstr "Beton" - -#~ msgid "Viper Flamer Wheels" -#~ msgstr "Å»mija z miotaczem ognia na koÅ‚ach" - -#~ msgid "Viper Sensor Wheels" -#~ msgstr "Å»mija z sensorem na koÅ‚ach" - -#~ msgid "Cobra Mortar Half-track" -#~ msgstr "Kobra z moździeżem na pół-gÄ…sienicach" - -#~ msgid "Cobra Light Cannon Tracks" -#~ msgstr "Kobra z lekkim dziaÅ‚em na gÄ…sienicach" - -#~ msgid "Viper Repair Wheels" -#~ msgstr "Å»mija naprawcza na koÅ‚ach" - -#~ msgid "Viper Machine Gun Wheels" -#~ msgstr "Å»mija karabin na koÅ‚ach" - -#~ msgid "Viper Twin Machinegun Wheels" -#~ msgstr "Å»mija podwójny karabin na koÅ‚ach" - -#~ msgid "Viper Heavy Machinegun Half-track" -#~ msgstr "Å»mija ciężki karabin na pół-gÄ…sienicach" - -#~ msgid "Viper Lancer Wheels" -#~ msgstr "Å»mija Lancer na koÅ‚ach" - -#~ msgid "Viper Mini-Pod Rockets Wheels" -#~ msgstr "Å»mija z minirakietami na koÅ‚ach" - -#~ msgid "Cobra Sensor Half-track" -#~ msgstr "Kobra z sensorem na pół-gÄ…sienicach" - -#~ msgid "Cobra Bombard Half-track" -#~ msgstr "Kobra Bombard na pół-gÄ…sienicach" - -#~ msgid "Cobra Lancer Half-track" -#~ msgstr "Kobra Lancer na pół-gÄ…sienicach" - -#~ msgid "Python Light Cannon Tracks" -#~ msgstr "Pyton z lekkim dziaÅ‚em na gÄ…sienicach" - -#~ msgid "Python Medium Cannon Tracks" -#~ msgstr "Pyton ze Å›rednim dziaÅ‚em na gÄ…sienicach" - -#~ msgid "Python Commander Tracks" -#~ msgstr "Pyton dowodzÄ…cy na gÄ…sienicach" - -#~ msgid "Mini-Pod" -#~ msgstr "Minirakiety" - -#~ msgid "VTOL Mini-Pod" -#~ msgstr "Minirakiety VTOL" - -#~ msgid "Machine Gunner" -#~ msgstr "Karabinier" - -#~ msgid "Mini-Pod Rockets" -#~ msgstr "Minirakiety" - -#~ msgid "Whirlwind AATurret" -#~ msgstr "DziaÅ‚ko AA Whirlwind" - -#~ msgid "Power Upgrade" -#~ msgstr "Ulepszenie Generatora" - -#~ msgid "NEXUS Link Tower" -#~ msgstr "Wieża NEXUS Link" - -#~ msgid "Viper Wheels Machinegun" -#~ msgstr "Å»mija karabin na koÅ‚ach" - -#~ msgid "Viper Wheels Twin Machinegun" -#~ msgstr "Å»mija podwójny karabin na koÅ‚ach" - -#~ msgid "Viper Wheels Heavy Machinegun" -#~ msgstr "Å»mija ciężki karabin na koÅ‚ach" - -#~ msgid "Cobra Wheels Heavy Machinegun" -#~ msgstr "Kobra ciężki karabin na koÅ‚ach" - -#~ msgid "Cobra Hover Heavy Machinegun" -#~ msgstr "Kobra poduszkowiec z ciężkim karabinem" - -#~ msgid "Viper Tracks Machinegun" -#~ msgstr "Å»mija karabin na gÄ…sienicach" - -#~ msgid "Viper Tracks Twin Machinegun" -#~ msgstr "Å»mija podwójny karabin na gÄ…sienicach" - -#~ msgid "Viper Tracks Heavy Machinegun" -#~ msgstr "Å»mija ciężki karabin na gÄ…sienicach" - -#~ msgid "Cobra Tracks Heavy Machinegun" -#~ msgstr "Kobra ciężki karabin na gÄ…sienicach" - -#~ msgid "Cobra Hover Medium Cannon" -#~ msgstr "Kobra poduszkowiec ze Å›rednim dziaÅ‚em" - -#~ msgid "Scorpion Hover Medium Cannon" -#~ msgstr "Skorpion poduszkowiec ze Å›rednim dziaÅ‚em" - -#~ msgid "Scorpion Tracks Medium Cannon" -#~ msgstr "Skorpion ze Å›rednim dziaÅ‚em na gÄ…sienicach" - -#~ msgid "Python Hover Medium Cannon" -#~ msgstr "Pyton poduszkowiec ze Å›rednim dziaÅ‚em" - -#~ msgid "Python Hover Heavy Cannon" -#~ msgstr "Pyton poduszkowiec z cieżkim dziaÅ‚em" - -#~ msgid "Python Tracks Heavy Cannon" -#~ msgstr "Pyton z ciężkim dziaÅ‚em na gÄ…sienicach" - -#~ msgid "Mantis Tracks Railgun" -#~ msgstr "Modliszka Railgun na gÄ…sienicach" - -#~ msgid "Mantis Tracks Pulse Laser" -#~ msgstr "Modliszka z laserem pulsacyjnym na gÄ…sienicach" - -#~ msgid "Python Tracks Lancer" -#~ msgstr "Pyton Lancer na gÄ…sienicach" - -#~ msgid "Mantis Tracks Lancer" -#~ msgstr "Modliszka Lancer na gÄ…siÄ™nicach" - -#~ msgid "Vengeance Tracks Tank Killer" -#~ msgstr "Zemsta Tank Killer na gÄ…sienicach" - -#~ msgid "Tiger Tracks Heavy Cannon" -#~ msgstr "Tygrys z ciężkim dziaÅ‚em na gÄ…sienicach" - -#~ msgid "Tiger Tracks Needle Gun" -#~ msgstr "Tygrys wyrzutnia kolców na gÄ…sienicach" - -#~ msgid "Vengeance Tracks Needle Gun" -#~ msgstr "Zemsta wyrzutnia kolców na gÄ…sienicach" - -#~ msgid "Bug Cluster Bomb VTOL" -#~ msgstr "Robal z bombami odÅ‚amkowymi VTOL" - -#~ msgid "Scorpion Cluster Bomb VTOL" -#~ msgstr "Skorpion z bombami odÅ‚amkowymi VTOL" - -#~ msgid "Scorpion Bunker Buster VTOL" -#~ msgstr "Skorpion Bunker Buster VTOL" - -#~ msgid "Bug Lancer VTOL" -#~ msgstr "Robal Lancer VTOL" - -#~ msgid "Bug HPV VTOL" -#~ msgstr "Robal HPV VTOL" - -#~ msgid "Scorpion HPV VTOL" -#~ msgstr "Skorpion HPV VTOL" - -#~ msgid "Mantis Lancer VTOL" -#~ msgstr "Modliszka Lancer VTOL" - -#~ msgid "Mantis HPV VTOL" -#~ msgstr "Modliszka HPV VTOL" - -#~ msgid "Cobra Repair Tracks" -#~ msgstr "Kobra naprawcza na gÄ…sienicach" - -#~ msgid "Mantis Repair Tracks" -#~ msgstr "Modliszka naprawcza na gÄ…sienicach" - -#~ msgid "Python Tank Killer Tracks" -#~ msgstr "Pyton Tank Killer na gÄ…sienicach" - -#~ msgid "Load Campaign" -#~ msgstr "Wczytaj kampaniÄ™" - -#~ msgid "Full" -#~ msgstr "PeÅ‚ny ekran" - -#~ msgid "Minimal" -#~ msgstr "Minimalny" - -#~ msgid "Energy bars display toggled" -#~ msgstr "Paski zdrowia przeÅ‚Ä…czone" - -#~ msgid "Played" -#~ msgstr "GraÅ‚" - -#, fuzzy -#~ msgid "Commander" -#~ msgstr "Dowódcy (F6)" diff --git a/po/pt.po b/po/pt.po index 524c37419..763fb524a 100644 --- a/po/pt.po +++ b/po/pt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2009-08-04 22:59+0100\n" "Last-Translator: Pedro Miguel Martins da Silva Caetano \n" "Language-Team: Portugese \n" @@ -1580,7 +1580,7 @@ msgstr "Produção de Cyborgs Melhorada" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Produção de Cyborgs Automatizada" @@ -1612,8 +1612,8 @@ msgstr "Todas as fábricas de Cyborgs melhoradas automaticamente" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Fábrica de Cyborgs" @@ -1774,7 +1774,7 @@ msgstr "Aumente Resistencia ao Dano" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Materiais Reforçados para Estruturas de Base" @@ -1947,7 +1947,7 @@ msgstr "Aperfeiçoamento dos Motores de veículos" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Motor de Injecção" @@ -2104,7 +2104,7 @@ msgstr "Velocidade: Lenta" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Propulsão Rodas" @@ -2967,7 +2967,7 @@ msgstr "Novas técnicas de reparação robótica" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Produção de Cyborgs Robótica" @@ -2989,7 +2989,7 @@ msgstr "Aumenta o ritmo de produção da fábrica" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Análise Dedicada de Dados por Ligação Sináptica" @@ -2998,7 +2998,7 @@ msgstr "Análise Dedicada de Dados por Ligação Sináptica" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Materiais de Estrutura de Base Endurecidos" @@ -3007,7 +3007,7 @@ msgstr "Materiais de Estrutura de Base Endurecidos" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Produção Robótica de VTOL" @@ -3043,7 +3043,7 @@ msgstr "Tempo de rearmamento de VTOL reduzido" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Rearmamento de VTOL Automatizado" @@ -3175,7 +3175,7 @@ msgstr "Custos energéticos elevados e mais lento a produzir que o Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Motor Turbo" @@ -3857,14 +3857,14 @@ msgstr "Turbina a Vapor aumenta a produção de energia" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Cérebro de Investigação de Sinapse Neural" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Materiais de Estrutura de Base Avançados" @@ -3876,14 +3876,14 @@ msgstr "Materiais de Estrutura da Base de Alta Densidade" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Produção Avançada de VTOL" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Rearmamento de VTOL Robótico" @@ -4021,7 +4021,7 @@ msgstr "Muito caro de produzir" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Motor de Turbina a Gás" @@ -4574,14 +4574,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Designador Laser pinta e guia balas até ao alvo" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "OBJECTIVO: Localizar e recuperar a tegnologia de sinapse neural" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Estabeleçe uma base, depois procura por uma estrutura Pré-Colapso." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Esta estrutura contém tecnologia vital para o sucesso do Projecto." @@ -4938,14 +4941,18 @@ msgid "We'll keep you informed of further developments" msgstr "Mantê-lo-emos informado de mais desenvolvimentos" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Comandante, irá assistir a Equipa Beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "MISSÃO BASE BETA: Sector Este" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "À chegada assumirá controlo da base." @@ -4954,16 +4961,19 @@ msgid "You must defend it and hold it." msgstr "Deverá defendê-la e mantê-la." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "MISSÃO BASE BETA: Defender e Fortificar" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Assegure-se que fortifica o perímetro e estabelece defesas anti-aéreas." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Novas tecnologias estão disponíveis." @@ -5260,6 +5270,8 @@ msgid "Good luck, Commander." msgstr "Boa sorte, Comandante." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "MISSÃO DE TRANSPORTE: Sector Norte" @@ -5268,6 +5280,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Parabéns na sua evacuação com sucesso da Base Beta" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS obteve acesso a armas nucleares e está determinado em destruir o Projecto." @@ -5276,10 +5289,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Lece as suas forças para o Sector Norte" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Quando estiver nas montanhas assegure uma ZA. Então estabeleça uma base avançada." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "A Equipa Gama vai contactá-lo lá." @@ -5288,6 +5303,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "MISSÃO DE TRANSPORTE: Estabelecer um Base Avançada." #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Comandante, o sucesso do Projecto repousa nos seus ombros." @@ -5314,6 +5330,7 @@ msgstr "Estamos a transmitir coordenadas de uma ZA parto dos silos." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Download de Coordenadas Completo." @@ -5753,7 +5770,7 @@ msgstr "Transporte" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Camião" @@ -5762,7 +5779,7 @@ msgstr "Camião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Metralhadora Viper Rodas" @@ -5789,7 +5806,7 @@ msgstr "Canhão Ligeiro Viper Lagartas" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Metralhadora Pesada Cobra Meia-Lagarta" @@ -5820,7 +5837,7 @@ msgstr "Torreão de reparação Viper Meia-Lagarta" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Metralhadora Dupla Viper Rodas" @@ -5837,7 +5854,7 @@ msgstr "Metralhadora Pesada Viper Meia-Lagarta" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Metralhadora Pesada Viper Lagartas" @@ -5861,7 +5878,7 @@ msgstr "Bunker Buster Viper Rodas" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Canhão Médio Cobra Lagartas" @@ -5873,7 +5890,7 @@ msgstr "Cobra Canhão Cobra Pesado Lagartas" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Cobra Camião" @@ -5883,7 +5900,7 @@ msgstr "Sensor Cobra Meia-Lagarta" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Lança-chamas Cobra Lagartas" @@ -5900,7 +5917,7 @@ msgstr "Torre de Comando Cobra Meia-Lagarta" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Lancer Cobra Meia-Lagarta" @@ -5914,26 +5931,26 @@ msgid "Light Cannon Python Tracks" msgstr "Canhão Ligeiro Python Lagartas" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Canhão Médio Python Lagartas" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Canhão Pesado Python Lagartas" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Torreão de Comando Python Lagartas" @@ -5997,7 +6014,7 @@ msgstr "Civil" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Metralhador" @@ -6006,9 +6023,9 @@ msgstr "Metralhador" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Lança-Chamas" @@ -6018,8 +6035,8 @@ msgstr "Lança-Chamas" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lancer" @@ -6028,7 +6045,7 @@ msgstr "Lancer" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Artilheiro Pesado" @@ -6122,8 +6139,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Torre de Comando" @@ -6227,14 +6244,14 @@ msgstr "Meia-Lagarta III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Propulsão Cyborg II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Propulsão Cyborg III" @@ -6256,7 +6273,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Propulsão Cyborg" @@ -6284,8 +6301,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Torre de Sensor" @@ -6293,15 +6310,15 @@ msgstr "Torre de Sensor" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Torre de Sensor Endurecida" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Torre de Sensor" @@ -6325,7 +6342,7 @@ msgstr "Torre de Radar CB" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "Torre de Ataque VTOL" @@ -6361,7 +6378,7 @@ msgstr "Fábrica" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Módulo de Fábrica" @@ -6373,7 +6390,7 @@ msgstr "Gerador de Energia" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Módulo de Energia" @@ -6385,7 +6402,7 @@ msgstr "Centro de Investigação" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Módulo de Investigação" @@ -6397,7 +6414,7 @@ msgstr "Demolir Estrutura" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Centro de Reparação" @@ -6418,8 +6435,8 @@ msgstr "Parede de Hardcrete" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Fábrica de VTOL" @@ -6430,30 +6447,30 @@ msgstr "Armação Inferno" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Fortificação Inferno" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Bataria Pepperpot" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Armação Hellstorm" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Posição AA Tornado" @@ -6464,27 +6481,27 @@ msgstr "Posição AA Ciclone" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Posição AA Hurricane" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Posição AA Whirlwind" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Bataria Ripple Rocket" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Torre de guarda de Canhão de Assalto" @@ -6495,29 +6512,29 @@ msgstr "Torre de guarda Metralhadora de Assalto" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Fortificação de Metralhadora de Assalto" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Fortificação de Canhão de Assalto" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "Torre CB" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Torre CB VTOL" @@ -6527,168 +6544,168 @@ msgstr "Torre de Radar VTOL" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Fortificação de Metralhadora Pesada" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Fortificação de Canhão Ligeiro" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Fortificação de Canhão Médio" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Fortificação de Canhão Pesado" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Fortificação de Lança-Chamas" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Fortificação de Lancer" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Torre de guarda de Metralhadora" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Torre de guarda de Metralhadoras Duplas" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Torre de Metralhadora Pesada" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Torre de guarda de Lança-Chamas" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Torre de Lancer" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Torre de Mini-foguetes" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Bunker de Metrelhadora" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Bunker de Metralhadoras Duplas" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Bunker de Metralhadora Pesada" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Bunker de Canhão Ligeiro" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Bunker de Lança-Chamas" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Bunker de Lancer" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Armadilhas de Tanques" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Dentes de Dragão" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Ponto de Rearmamento de VTOL" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Armação de Howitzer" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Armação de Flashlight" @@ -6699,139 +6716,139 @@ msgstr "Fortificação de Flashlight" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Fortificação de Canhão Cinético-Magnético" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Torre de Mísseis Scourge" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Torre de Acelerador Magnético" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Armação de Canhão de Gauss" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Canhão Ligeiro" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Canhão Médio" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Canhão Pesado" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Canhão de Alta Velocidade" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Canhão de Assalto" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Howitzer" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Ground shaker" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Armação Ground Shaker" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Hellstorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Pulse Laser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Metralhadora" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Metralhadoras Duplas" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Metralhadora Pesada" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Metralhadora de Assalto" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Míssil Scourge" @@ -6842,80 +6859,80 @@ msgstr "Míssil Angel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "MTA Vindicator" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Míssil Archangel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "MTA Avenger" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "Míssil Scourge VTOL" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Morteiro" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Armação de Morteiro" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombarda" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Armação de Bombarda" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Pepperpot" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Armação de Pepperpot" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Acelerador Magnético" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Canhão Cinético-Magnético" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Canhão de Gauss" @@ -6925,74 +6942,74 @@ msgid "Mini-Rocket Artillery" msgstr "Artilharia de Mini Rockets" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Bunker Buster" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Mini-Foguetes" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Ripple Rockets" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Tank Killer" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "Bunker Buster VTOL" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "Mini-foguetes VTOL" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "Lancer VTOL" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "Tank Killer VTOL" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Tornado" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Cyclone" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Whirlwind AA" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Hurricane AA" @@ -7001,62 +7018,62 @@ msgid "LasSat" msgstr "Satélite Laser" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "Canhão VTOL" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "Canhão de Alta Velocidade VTOL" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "Canhão de Assalto VTOL" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "Pulse Laser VTOL" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "Metralhadora VTOL" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "Metralhadoras Duplas VTOL" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Metralhadora Pesada VTOL" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "Metralhadora de Assalto VTOL" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "Acelerador Magnético VTOL" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "Canhão Cinético-Magnético VTOL" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Bombas de Proximidade" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Superbombas de Proximidade" @@ -7065,22 +7082,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "Bombas de Fragmentação" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "Bombas HEAP" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "Bombas de Fósforo" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "Bombas de Termite" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Parede da Colectividade" @@ -7097,307 +7114,307 @@ msgid "NEXUS CWall" msgstr "Parede de Canto NEXUS" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "INVESTIGAÇÃO CAM1" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "INVESTIGAÇÃO AVANÇADA" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 VEÃCULOS" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 ARMAS" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SISTEMAS" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DEFESAS" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 ESTRUTURAS" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 INVESTIGAÇÃO" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 VEÃCULOS" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 ARMAS" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SISTEMAS" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 DEFESAS" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 ESTRUTURAS" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 INVESTIGAÇÃO" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Ligação Sináptica" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Códigos de Alvo do Míssil" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Segundo Nível de Códigos de Alvo do Míssil" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Terceiro Nível de Códigos de Alvo do Míssil" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Protecção Térmica Cyborg" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Protecção Térmica Cyborg Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Protecção Térmica Cyborg Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Protecção Térmica de Alta Intensidade Cyborg" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Protecção Térmica de Alta Intensidade Cyborg Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Protecção Térmica de Alta Intensidade Cyborg Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Ligas Compósitas Cyborg" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Ligas Compósitas Cyborg Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Ligas Compósitas Cyborg Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Ligas Compósitas Densas Cyborg" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Ligas Compósitas Densas Cyborg Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Ligas Compósitas Densas Cyborg Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Ligas Compósitas Superdensas Cyborg" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Ligas Compósitas Superdensas Cyborg Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Ligas Compósitas Superdensas Cyborg Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Cyborgue Bunker Blaster" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Cyborgue Artilheiro Pesado" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Cyborgue Lança-Chamas" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Cyborgue Metralhador" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Cyborgue Lancer" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Artilheiro de Assalto" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Cyborg Acelerador Magnético" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Cyborgue Scourge" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Artilheiro Flashlight" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Jump Jet Bunker Blaster" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Jump Jet Artilheiro Pesado" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Jump Jet Lancer" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Jump Jet Artilheiro de Assalto" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Jump Jet Acelerador Magnético" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Jump Jet Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Jump Jet Artilheiro Flashlight" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Jump Pack Cyborg" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Hardcrete" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Hardcrete" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Hardcrete Melhorado" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Hardcrete Melhorado Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Hardcrete Melhorado Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Supercrete" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Supercrete Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Supercrete Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plascrete" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plascrete Mk2" @@ -7412,15 +7429,15 @@ msgstr "Armação de Canhão de Alta Velocidade" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Armação de Tank Killer" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Fosso de Bombarda" @@ -7429,55 +7446,55 @@ msgid "Angel Missile Battery" msgstr "Bataria de Mísseis Angel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Bataria de Mísseis Archangel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Fosso de Morteiro" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Bataria de Mini-foguetes" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Armação de Pulse Laser" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Armação de Canhão Cinético-Magnético" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Armação de Canhão de Assalto" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Armação de Metralhadora de Assalto" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Posição MTA Avenger" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Posição MTA Vindicator" @@ -7495,15 +7512,15 @@ msgstr "Torre de guarda de Mini-Foguetes" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Fortificação Míssil Scourge" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Fortificação Tank Killer" @@ -7514,49 +7531,49 @@ msgstr "Fortificação de Canhão de Alta Velocidade" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Fortificação de Canhão de Gauss" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Posto de Transmissão de Comando" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Produção de Cyborgs Automatizada Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Produção de Cyborgs Automatizada Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Produção de Cyborgs Robótica Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Produção de Cyborgs Robótica Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Produção Avançada de Cyborgs" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Produção Avançada de Cyborgs Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Produção Avançada de Cyborgs Mk3" @@ -7594,54 +7611,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Produção de Fábrica Avançada Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Materiais de Estrutura de Base Reforçados Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Materiais de Estrutura de Base Reforçados Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Materiais de Estrutura de Base Endurecidos Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Materiais de Estrutura de Base Endurecidos Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Materiais de Estrutura de Base Avançados Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Materiais de Estrutura de Base Avançados Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Gerador de Turbina a Gás" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Gerador de Turbina a Vapor" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Instalações de Reparação" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Instalação de Reparações Automatizadas" @@ -7678,172 +7695,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Aperfeiçoamento de Instalações de Reparação Avançadas Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Análise de Dados por Ligação Sináptica" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Análise de Dados por Ligação Sináptica Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Análise de Dados por Ligação Sináptica Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Análise Dedicada de Dados por Ligação Sináptica Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Análise Dedicada de Dados por Ligação Sináptica Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Cérebro de Investigação de Sinapse Neural Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Cérebro de Investigação de Sinapse Neural Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Rearmamento de VTOL Automatizado Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Rearmamento de VTOL Automatizado Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Rearmamento de VTOL Robótico Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Rearmamento de VTOL Robótico Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Rearmamento de VTOL Robótico Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Produção Robótica de VTOL Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Produção Robótica de VTOL Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Produção Avançada de VTOL Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Produção Avançada de VTOL Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Auto-Reparação de cyborgs" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Reparação de Cyborgs Automatizada Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Reparação de Cyborgs Automatizada Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Auto-Reparação de Defesas" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Reparação Automatizada de Defesas Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Reparação Automatizada de Defesas Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Auto-Reparação de Estruturas da Base" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Reparação Automatizada de Estruturas da Base Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Reparação Automatizada de Estruturas da Base Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Auto-Reparação de Veículos" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Reparação Automatizada de Veículos Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Reparação Automatizada de Veículos Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Aperfeiçoamento de Sensor" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Unidade de Construção" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Engenharia" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Engenharia Melhorada" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Engenharia Avançada" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Torreão de Reparação" @@ -7853,84 +7870,84 @@ msgstr "Torreão de Reparação Móvel Pesado" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Aperfeiçoamento de Reparação Móvel" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Aperfeiçoamento de Reparação Móvel Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "Torre CB" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "Aperfeiçoamento de Sensor CB" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "Aperfeiçoamento de Sensor CB 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "Aperfeiçoamento de Sensor CB 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "CB VTOL" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "Aperfeiçoamento dos Sensores CB VTOL" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "Aperfeiçoamento dos Sensores CB VTOL 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "Aperfeiçoamento dos Sensores CB VTOL 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "Aperfeiçoamento ao Sensor de Ataque VTOL" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "Aperfeiçoamento ao Sensor de Ataque VTOL Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "Aperfeiçoamento ao Sensor de Ataque VTOL Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Torre de Ataque VTOL" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Empastelador Avançado" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Empastelador Mk2" @@ -7951,292 +7968,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Circuitos de Resistência a NEXUS Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Fixação de Sensor" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Protecção Térmica" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Protecção Térmica Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Protecção Térmica Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Protecção Térmica de alta Intensidade" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Protecção Térmica de alta Intensidade Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Protecção Térmica de alta Intensidade Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Chassis Ligeiro - Viper" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Chassis Ligeiro - Leopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Chassis Ligeiro - Retaliation" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Chassis Ligeiro - Bug" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Chassis Médio - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Chassis Médio - Panther" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Chassis Médio - Retribution" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Chassis Médio - Scorpion" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Chassis Pesado - Tiger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Chassis Pesado - Vengeance" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Chassis Pesado - Python" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Chassis Pesado - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Motor de Injecção Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Motor de Injecção Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Motor Turbo Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Motor Turbo Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Motor de Turbina a Gás Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Motor de Turbina a Gás Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Ligas Compósitas" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Ligas Compósitas Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Ligas Compósitas Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Ligas Compósitas Densas" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Ligas Compósitas Densas Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Ligas Compósitas Densas Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Ligas Compósitas Superdensas" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Ligas Compósitas Superdensas Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Ligas Compósitas Superdensas Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Propulsão Hovercraft" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Propulsão Hovercraft II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Propulsão Meia-Lagarta" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Propulsão Meia-Lagarta II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Propulsão Lagartas" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Propulsão Lagartas II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "Propulsão VTOL" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "Propulsão VTOL II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Propulsão Rodas II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Sensor AA Inagem Térmica" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "Projécteis AA de Aquisição de Alvo" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Computador AA de Previsão de Alvos" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Flak AA HE" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "Flak AA HE Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "Flak AA HE Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Flak AA HEAP" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "Flak AA HEAP Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "Flak AA HEAP Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Correia de Munição AA" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "Correia de Munição AA Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "Correia de Munição AA Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Alimentador em Cadeia de Munição AA" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "Alimentador em Cadeia de Munição AA Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "Alimentador em Cadeia de Munição AA Mk3" @@ -8245,17 +8262,17 @@ msgid "Cluster Bombs Bay" msgstr "Bombas de Fragmentação" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Bombas HEAP" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Bombas de Fósforo" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Bombas de Termite" @@ -8272,252 +8289,252 @@ msgid "Target Acquisition Bombsight" msgstr "Mira de Bombas de Aquisição de Alvo" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Calculador de Alcance Laser para Canhões" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Designador Laser para Canhões" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Projécteis de Canhão HEAT" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Projécteis de Canhão HEAT Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Projécteis de Canhão HEAT Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Projécteis de Canhão APFSDS" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Projécteis de Canhão APFSDS Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Projécteis de Canhão APFSDS Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Projécteis de Canhão HVAPFSDS" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Projécteis de Canhão HVAPFSDS Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Projécteis de Canhão HVAPFSDS Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Autocarregador de Canhão" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Autocarregador de Canhão Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Autocarregador de Canhão Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Carregador Rápido de Canhão" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Carregador Rápido de Canhão Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Carregador Rápido de Canhão Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Focagem de Laser Melhorada" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Focagem de Laser Melhorada Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Focagem de Laser Melhorada Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Emissor de Laser de Alta Energia" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Emissor de Laser de Alta Energia Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Emissor de Laser de Alta Energia Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Energizador de Termopólos" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Energizador de Termopólos Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Energizador de Termopólos Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Gel Incendiário de Alta Temperatura" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Gel Incendiário de Alta Temperatura Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Gel Incendiário de Alta Temperatura Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Gel Incendiário Superquente" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Gel Incendiário Superquente Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Gel Incendiário Superquente Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Lança-Chamas Auto-Recarregador" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Lança-Chamas Auto-Recarregador Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Lança-Chamas Auto-Recarregador Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Lança-Chamas Pesado - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Howitzer Pesado - Ground Shaker" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Howitzer Rotativo - Hellstorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Projécteis de Artilharia com Aquisição de Alvo" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Projécteis de Artilharia com Aquisição de Alvo Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Projécteis de Artilharia com Predição de Alvo" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Projécteis de Howitzer Altamente ExplosivosHE" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Projécteis de Howitzer HE Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Projécteis de Howitzer HE Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Projécteis de Howitzer HEAP" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Projécteis de Howitzer HEAP Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Projécteis de Howitzer HEAP Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Howitzer Auto-Recarregador" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Howitzer Auto-Recarregador Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Howitzer Auto-Recarregador Mk3" @@ -8526,57 +8543,57 @@ msgid "Fast Loader" msgstr "Carregador Rápido" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - Flashlight" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Balas de Metralhdora Endurecidas" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Balas de Metralhadora APDSB" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Balas de Metralhadora APDSB Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Balas de Metralhadora APDSB Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Balas de Metralhadora com Ponta de Tungsténio" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Balas de Metralhadora com Ponta de Tungsténio Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Balas de Metralhadora com Ponta de Tungsténio Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Balas de Metralhadora de Urânio Empobrecido" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Balas de Metralhadora de Urânio Empobrecido Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Aperfeiçoamento de Chaingun" @@ -8585,142 +8602,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Aperfeiçoamento da Chaingun de Fogo Rápido" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Aperfeiçoamento da Chaingun de Fogo Hiper-Rápido" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Misseis de Predição de Alvo" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Mísseis de Procura e Destruição" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Ogiva de Míssil Avançada" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Ogiva de Míssil Avançada Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Ogiva de Míssil Avançada Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Sistema Avançado de Alocação de Míssil" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Sistema Avançado de Alocação de Míssil Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Sistema Avançado de Alocação de Míssil Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Ogiva de Míssil HEAP" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Ogiva de Míssil HEAP Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Ogiva de Míssil HEAP Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "sistema Melhorado de Carregamento de Míssil" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Computador de Alvo de Morteiro" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Projécteis de Morteiro de Imagem Térmica" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Projécteis de Morteiro com Aquisição de Alvo" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Projécteis de Morteiro HE" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Projécteis de Morteiro HE Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Projécteis de Morteiro HE Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Projécteis de Morteiro HEAP" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Projécteis de Morteiro HEAP Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Projécteis de Morteiro HEAP Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Morteiro Auto-Recarregador" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Morteiro Auto-Recarregador Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Morteiro Auto-Recarregador Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Morteiro de Recarga Rápida" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Morteiro Pesado - Bombarda" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Morteiro Rotativo - Pepperpot" @@ -8729,367 +8746,367 @@ msgid "Target Prediction Computer" msgstr "Computador de Predição de Alvo" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Dardo Endurecido" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Dardo Endurecido Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Dardo Endurecido Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "Razão de Fogo do Acelerador" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "Razão de Fogo do Acelerador Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "Razão de Fogo do Acelerador Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Mini-foguetes Estabilizados" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Mini-foguetes Estabilizados Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Mini-foguetes HE" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Mini-foguetes HE Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Mini-foguetes HE Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Mini-foguetes HEAP" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Mini-foguetes HEAP Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Mini-foguetes HEAP Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Mini-foguetes de Fogo Rápido" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Mini-foguetes de Fogo Rápido Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Mini-foguetes de Fogo Rápido Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Mini-foguetes de Fogo Muito Rápido" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Mini-foguetes de Fogo Muito Rápido Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Mini-foguetes de Fogo Muito Rápido Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Controlo Melhorado de foguetes por Fio" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Designador Laser para foguetes" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Foguetes com Imagem Térmica" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "Ogiva HEAT para foguetes" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "Ogiva HEAT para foguetes Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "Ogiva HEAT para foguetes Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "Ogiva HESH para foguetes" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "Ogiva HESH para foguetes Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "Ogiva HESH para foguetes Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Auto-Recarregador de foguetes" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Auto-Recarregador de foguetes Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Auto-Recarregador de foguetes Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Foguete AT Lancer" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Foguete Bunker Buster" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Foguete Tank Killer" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Artefacto de Metralhadora" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Centro de Comando do Novo Paradigma" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Centro de Comando da Colectividade" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Fábrica dos Saqueadores" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Torre de Metralhadora dos Saqueadores" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Parede Horizontal dos Saqueadores" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Gerador de Energia de Saqueadores" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Bataria de Rocket de Saqueadores" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Bataria de Rocket AT de Saqueadores" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Bunker de Saqueadores" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Parede de Canto de Saqueadores" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Torre Lança-Chamas de Saqueadores" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Muro/Torre de Lança-Chamas de Saqueadores" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Torre de Vigia" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Torre de Canhão" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefacto" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Fonte de Petróleo" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Ponte" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Fábrica Arruinada" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Armazém" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Cabana" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Barril de Petróleo" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Escombros" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Destroços de Tanque" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Ponte em Escombros" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Destroços de Carrinha" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Destroços de Veículo" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Destroços de Cisterna" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratório de Cyborgs" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratório de Guerra Avançada" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Laboratório de Engenharia" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratório de Robótica" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratório de Óptica Laser" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratório de Electrónica" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Laboratório Químico" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Guerra Avançada" @@ -9110,7 +9127,7 @@ msgid "MRL Emplacement" msgstr "Armação de MRL" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Armação de Canhão Cinético-Magnético" @@ -9119,49 +9136,49 @@ msgid "Angel Missile Emplacement" msgstr "Armação de Mísseis Angel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Armação de Mísseis Archangel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Torreão Reparador Cobra Lagartas" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Bunker Blaster" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Artilheiro Flashlight" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Cyborg Acelerador Magnético" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Transporte Abatido" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Tank Killer Pitão Lagartas" @@ -9170,37 +9187,37 @@ msgid "HPV Cannon Python Tracks" msgstr "Canhão de Alta Velocidade Pitão Lagartas" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Cyclone AA Pitão Meia-Lagarta" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Metralhadora de Assalto Pitão Lagartas" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "flashlight" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "Flashlight VTOL" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Bunger de Metralhadora Rotativa" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Silo de Mísseis" @@ -9482,339 +9499,1209 @@ msgstr "Por favor espera enquanto a fábrica produz a(s) nova(s) unidade(s)" msgid "Congratulations commander - you are ready for your first mission" msgstr "Parabéns comandante - estás apto para a tua primeira missão" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "A receber transmissão" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +#, fuzzy +msgid "Transmission from Beta Base" +msgstr "Transmissão da equipa exterior a chegar." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Metas do Projecto" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Equipa Alfa Erradicada" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +#, fuzzy +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Nós descodificamos a mensagem dirigida ao Novo Paradigma..." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "Estamos a receber esta trasmissão." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +#, fuzzy +msgid "You are in contravention of the New Paradigm." +msgstr "Parabéns por derrotar o Novo Paradigma" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "Parabéns por derrotar o Novo Paradigma" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "Eles devem ser impedidos." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +#, fuzzy +msgid "Secure the LZ and establish a forward base." +msgstr "Assegure uma ZA, depois estabeleça uma base avançada." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "Depois destrua o campo." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Quando não respondemos tornou-se ameaçador." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +#, fuzzy +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Nexus tem tecnologia a armas e não é amigável." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +#, fuzzy +msgid "You are entering a restricted area." +msgstr "estás a ser parvo." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +#, fuzzy +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "A tecnologia de Ligação Sináptica foi recuperada!" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +#, fuzzy +msgid "Team Alpha approaches Beta Base" +msgstr "Equipa Alfa Erradicada" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +#, fuzzy +msgid "You must defend and hold it at all costs." +msgstr "Deverá defendê-la e mantê-la." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +#, fuzzy +msgid "Commander, a new launch has been detected." +msgstr "comandante, nós derrotamos Nexus." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +#, fuzzy +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Deverá estabelecer um abrigo seguro para evacuação da Base Beta." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +#, fuzzy +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Estamos a detectar transmissões deste ponto que estão a atingir uma órbita alta." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +#, fuzzy +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS conseguiu reconectar-se com os satélites da NASDA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +#, fuzzy +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "comandante, estão mísseis presentes nos silos." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +#, fuzzy +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Destruam e matem todos os que resistem à Máquina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +#, fuzzy +msgid "Attack and destroy all who resist the machine." +msgstr "Destruam e matem todos os que resistem à Máquina." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Ataquem!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +#, fuzzy +msgid "Cleanse and destroy!!" +msgstr "Procure e destrua .... " + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +#, fuzzy +msgid "Warriors of the Collective. You have performed well." +msgstr "Guerreiros da Colectividade..." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "A receber Transmissão..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Parabéns na sua evacuação com sucesso da Base Beta" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "Início do Briefing:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Ver o próximo Comandante" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +#, fuzzy +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Estamos a detectar forças inimigas nestas localizações." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Boa sorte, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +#, fuzzy +msgid "Commander, welcome to NEXUS!" +msgstr "comandante, nós derrotamos Nexus." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Comandante, estamos a tentar voltar à base." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Reactor Nuclear" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Cobra Hovercraft Reparação pesada" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Viper Metralhadora Pesada Rodas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Scourge Mantis Hovercraft" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Tank Killer Mantis Hovercraft" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Cobra Metralhadora Pesada Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Cobra Hovercraft Canhão Pesado" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Scorpion Lancer Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Scorpion Canhão Pesado Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Scorpion Lancer VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Scorpion Bunker Buster VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Viper Torreão de Comando Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Cobra Torreão de Comando Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Scorpion Torreão de Comando Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Mantis Torreão de Comando Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Cobra Lancer Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Mantis Canhão Pesado Tracks" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Mantis Tank Killer Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Mantis Scourge Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Scorpion Metralhadora Pesada Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Scorpion Reparação Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Scorpion Reparação pesada Hovercraft" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Cobra Hovercraft Camião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Scorpion Hovercraft Camião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Mantis Hovercraft Camião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Cobra Bunker Buster Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Scorpion Bunker Buster Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Mantis Bunker Buster Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Viper Lagartas Lancer" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Cobra Semi-Lagartas Mini-Rockets" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Cobra Lagartas Mini-Rockets" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Cobra Lagartas Artilharia Mini-Rockets" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Cobra Inferno Semi-Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Python Canhão de alta-velocidade Hovercraft" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Python Scourge Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Python Canhão de Gauss Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Python Pulse Laser Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tiger Pulse Laser Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tiger Laser Pesado Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Wyvern Canhão de Gauss Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Wyvern Pulse Laser Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Wyvern Laser Pesado Lagartas" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Viper Metralhadora Meia-Lagarta" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Viper Lança-chamas Meia-Lagarta" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Torreão de Reparação Pesado Cobra Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Metralhadora Pesada Viper Rodas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Tank Killer Mantis Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Metralhadora Pesada Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Canhão Pesado Cobra Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Metralhadora Pesada Viper Rodas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Metralhadora Pesada Cobra Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Metralhadora Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Metralhadoras Duplas Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Canhão Médio Cobra Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Canhão Médio Scorpion Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Canhão Médio Scorpion Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Canhão Médio Python Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Canhão Pesado Python Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Canhão Cinético-Magnético Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr " Pulse Laser Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Lancer Python Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Lancer Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Tank Killer Vengeance Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Canhão Pesado Tiger Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Acelerador Magnético Tiger Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Acelerador Magnético Retribution Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Acelerador Magnético Vengeance Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Vengeance Lagartas Canhão Cinético-Magnético" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 #, fuzzy msgid "Vengeance Tracks Gauss Cannon" msgstr "Vengeance Lagartas Canhão Gauss" # What the hell? #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 #, fuzzy msgid "Vengeance Tracks Gauss Scourge" msgstr "Vengeance Lagartas Guass Scourge" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "Compartimento de Bombas para Bombas de Fragmentação" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "Bunker Buster Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "Compartimento para Bombas de Fragmentação Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "Bunker Buster Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "Lancer Bug VTOL" @@ -9823,7 +10710,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "Canhão de alta velocidade Bug VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "Lancer Scorpion VTOL" @@ -9833,7 +10720,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "Canhão de alta velocidade Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "Lancer Mantis VTOL" @@ -9842,127 +10729,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "Canhão de Alta velocidade Mantis VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Torreão Reparador Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Lancer Scorpion Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Canhão Pesado Cobra Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "Lancer Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "Bunker Buster Scorpion VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Torreão de Comando Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Torreão de Comando Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Torreão de Comando Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Torreão de Comando Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Lancer Cobra Meia-Lagarta" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Canhão Pesado Cobra Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Tank Killer Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "Scourge Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Metralhadora Pesada Scorpion Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Reparador Scorpion Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Reparação pesada Scorpion Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Camião Cobra Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Camião Scorpion Hovercraft " #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Camião Mantis Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Bunker Buster Cobra Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Bunker Buster Scorpion Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Bunker Buster Mantis Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Lancer Viper Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Mini-foguetes Cobra Meia-Lagarta" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Mini-foguetes Cobra Lagartas" @@ -9972,7 +10859,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Artilharia de Mini Rockets Cobra Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Inferno Cobra Meia-Lagarta" @@ -9981,55 +10868,175 @@ msgid "HPV Cannon Python Hover" msgstr "Canhão de Alta Velocidade Python Hovercraft" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Scourge Python Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Canhão Gauss Python Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Pulse Laser Python Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Pulse Laser Tiger Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Laser Pesado Tiger Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Canhão de Gauss Wyvern Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Pulse Laser Wyvern Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Laser Pesado Wyvern Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Metralhadora Viper Meia-Lagartas" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Lancer Cobra Meia-Lagarta" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "Inferno Cobra Meia-Lagarta" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "Canhão Médio Cobra Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "Canhão de Alta Velocidade Python Hovercraft" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "Metralhadora de Assalto Pitão Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "Metralhadora de Assalto Pitão Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Metralhadora Pesada Scorpion Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "Torre de guarda de Canhão de Assalto" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "Torre com Pulse Laser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "Torre com Pulse Laser" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +#, fuzzy +msgid "Rail Gun Tiger Hover" +msgstr "Aperfeiçoamento dos Canhões Cinético-Magnético" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "Pulse Laser Tiger Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Canhão de Gauss Wyvern Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "Torre de Mísseis Scourge" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +#, fuzzy +msgid "Flashlight Retribution Hover" +msgstr "Artilheiro Flashlight" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Mini-foguetes Cobra Meia-Lagarta" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Artilharia de Mini Rockets Cobra Lagartas" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Bombas de Fósforo" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Bombas HEAP" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Chassis Médio - Retribution" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "Retaliation" + #: data/mp/messages/resmessages12.rmsg:58 #, fuzzy msgid "Construction speed +10%" @@ -10702,7 +11709,7 @@ msgid "Upgraded battlefield computer system" msgstr "Sistemas computorizados de campo de batalha melhorados" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Transporte de Cyborgues" @@ -10733,7 +11740,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Artilharia de Mini-Foguetes Cobra Meia-Lagarta" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Detector de Radar" @@ -10746,650 +11753,665 @@ msgid "Nexus Link" msgstr "Ligação NEXUS" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Torreão de Ligação NEXUS" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Parede de Hardcrete" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Bunker de Inferno" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Posição AA Tornado" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Posição AA Cyclone" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Fortificação com Pulse Laser" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Torre com Pulse Laser" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 #, fuzzy msgid "Seraph Missile Array" msgstr "Melhora precisão de mísseis" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Artilharia de Mini Rockets" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Posto de Comando do Satélite Laser" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "Compartimento de Bombas de Fragmentação" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Parede de Canto da Colectividade" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Parede do NEXUS" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Parede de Canto do NEXUS" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Plascrete Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Plasteel" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Plasteel Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Plasteel Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Jogo" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 #, fuzzy msgid "Hyper Velocity Cannon Emplacement" msgstr "Canhão de Alta Velocidade" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 #, fuzzy msgid "Seraph Missile Battery" msgstr "Bataria de Mísseis Angel" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Torre com Lança-Chamas" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 #, fuzzy msgid "Hyper Velocity Cannon Hardpoint" msgstr "Canhão de Alta Velocidade" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Produção Automatizada" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Produção Automatizada Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Produção Automatizada Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Produção Robotizada" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Produção Robotizada Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Produção Robotizada Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Fabrico Avançada" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Fabrico Avançada Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Fabrico Auto-Replicador" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Fabrico Avançada Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Instalação de Reparações Automatizadas Mk2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Instalação de Reparações Automatizadas Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Instalações de Reparação Robóticas" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Instalações de Reparação Robóticas Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Instalações de Reparação Avançadas" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Instalações de Reparação Robóticas Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Instalações de Reparação Avançadas Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Instalações de Reparação Avançadas Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Auto-Reparação" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Torreão de Reparação Pesado" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Programa de Intrusão NEXUS" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Circuitos de Resistência a NEXUS" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Circuitos de Resistência a NEXUS Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Circuitos de Resistência a NEXUS Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Compartimento de Bombas de Fragmentação" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Obuses de bomba HE" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Ogiva de bomba melhorada" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Ogiva de Bomba Avançada" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Carregador rápido para Howitzer" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Chaingun de fogo rápido" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 #, fuzzy msgid "Rail Target Prediction Computer" msgstr "Computador de Predição de Alvo para Canhão Cinético-Magnético" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "Mini-foguetes HE" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "Mini-foguetes HE Mk2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "Mini-foguetes HE Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Torre com Metralhadora de Assalto" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Reparador Cobra Lagartas" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "Canhão Pesado Python Lagartas" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Bunker Buster Cobra Hovercraft" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Aperfeiçoamento do Sensor Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Aperfeiçoamento do Sensor Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Gerador de Turbina a Vapor Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Gerador de Turbina a Gás Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Gerador de Turbina a Gás Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Gerador de Turbina a Vapor Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Cyborgue com Lança-chamas de Térmite" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Lança-chamas de Termite" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Cyborgue Granadeiro" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Granadeiro" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Engenheiro de combate" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Mecânico Cyborgue" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Howitzer Incendiário" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Armação de Howitzer incendiário" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Lança-chamas de Plasmite" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Lança-chamas de Plasmite" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Morteiro Incendiário" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Fosso de Morteiro Incendiário" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Blindagem Térmica Superdensa Cyborgue" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Blindagem Térmica Superdensa Cyborgue Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Blindagem Térmica Superdensa Cyborgue Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Blindagem Térmica Superdensa para Veículos" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Blindagem Térmica Superdensa para Veículos Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Blindagem Térmica Superdensa para Veículos Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super Artilheiro Pesado" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Cyborgue de Canhão Automático" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super Cyborgue com Canhão de Alta Velocidade" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Cyborgue com Tank-killer" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Laser Pesado" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "Laser Pesado para VTOL" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Armação de Laser Pesado" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Canhão de assalto Duplo" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Bunker com Canhão de assalto Duplo" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Centro de Uplink de Satélite" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Sensor de Espectro largo" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Torre de Sensor de Espectro largo" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Canhão Plasma" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Armação de Canhão de Plama" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Cyborgue de Pulse Laser" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Artilheiro de Canhão Cinético-Magnético" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super Cyborgue Scourge" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Torre de Ligação NEXUS" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "Canhão EMP" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Torre de Canhão EMP" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Fortaleza de Catapulta Electromagnética" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Catapulta Electromagnética" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Fortaleza de Canhões" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Bastião de Foguetes Pesado" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Fortaleza de Mísseis" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "Chassis Super-Pesado - Wyvern" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Wyvern" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 #, fuzzy msgid "Multi Turret Body - Dragon" msgstr "Chassis Super-Pesado - Dragon" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragon" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Gel de Plasmite Superquente" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Gel de Plasmite Superquente Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Gel de Plasmite Superquente Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "Morteiro PEM" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Fosso de Morteiro PEM" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Laser AA Stormbringer" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Armação de Stormbringer" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Fortificação Vindicator" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Fortificação Whirlwind" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Fortificação Cyclone" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Fortificação Avenger" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Metralhadoras de Assalto Duplas" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Fortificação de Metralhadoras de Assalto Duplas" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "Compartimento para bombas Plasmite para VTOL" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Bomba de Plasmite" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "Lança-mísseis PEM para VTOL" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Lança-mísseis PEM" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "Torre de Comando" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "Torreão de Comando MkIII" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "Torre de Comando" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "Canhão de Alta Velocidade VTOL" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "Canhão de alta velocidade Scorpion VTOL" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 #, fuzzy msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "Canhão de Alta Velocidade VTOL" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Artilharia de Mini Rockets Cobra Lagartas" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "Canhão Pesado Python Hovercraft" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Chassis Médio - Retribution" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11523,32 +12545,41 @@ msgstr "Chinês Tradicional" msgid "Latin" msgstr "Latim" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 #, fuzzy msgid "Enter password here" msgstr "Insere Primeiro a Palavra-passe" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Não pode ser obtido o nome do masterserver (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Não foi possível comunicar com o servidor de lobby! A porta TCP %u está aberta para tráfego outgoing?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Gravar Jogo" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11699,15 +12730,15 @@ msgstr "Anfitrião" msgid "go directly to host screen" msgstr "ir directamente para o ecrã de anfitrião" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Jogador" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Novo Veículo" @@ -11746,18 +12777,18 @@ msgstr "Potência do Motor" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Peso" @@ -11771,189 +12802,189 @@ msgstr "Total de Energia Necessária" msgid "Total Body Points" msgstr "Total de Pontos de Resistência" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Energia Usada" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transporte" -#: src/design.c:1371 +#: src/design.c:1367 #, fuzzy msgid "Hydra " msgstr "Hydra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Alcance do sensor" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Energia do Sensor" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "Potência do ECM" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Pontos de Construção" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Alcance" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Danos" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Razão de Fogo" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Velocidade aérea" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Velocidade em Estrada" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Velocidade em Corta-Mato" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Velocidade na água" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Armas" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Sistemas" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Jogador Saiu" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Jogador caiu" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Impossível construir. Fonte de petróleo a arder." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Dano %d%% - Experiência %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Dano %d%% - Experiência %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Camião ordenado a construir Extractor de Petróleo" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Camião ordenado a construir Extractor de Petróleo" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Camião ordenado a construir Extractor de Petróleo" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Unidade Destruída!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Estrutura reparada" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Grupo %u seleccionado - %u Unidade" msgstr[1] "Grupo %u seleccionado - %u Unidades" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u unidade atribuída do ao Grupo %u" msgstr[1] "%u unidades designadas ao Grupo %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Centrado no Grupo %u - %u Unidade" msgstr[1] "Centrado no Grupo %u - %u Unidades" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "A Alinhar com o Grupo %u - %u Unidade" msgstr[1] "A Alinhar com o Grupo %u - %u Unidades" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Novato" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Inexperiente" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Treinado" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Regular" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Profissional" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veterano" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Especial" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Herói" @@ -11999,11 +13030,11 @@ msgstr "TUTORIAIS" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Anterior" @@ -12084,19 +13115,19 @@ msgid "Video Playback" msgstr "Playback do Vídeo" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "1X" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "2X" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Ecrã Inteiro" @@ -12105,43 +13136,42 @@ msgid "Screen Shake" msgstr "Abanar Ecrã" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Ligado" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Desligado" @@ -12151,152 +13181,151 @@ msgid "Fog" msgstr "Nevoeiro" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Nevoeiro" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Nevoeiro de guerra" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Legendas" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Sombras" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "OPÇÕES DE JOGO" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Volume de Voz" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Volume dos Efeitos" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Volume da Música" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "OPÇÕES DE JOGO" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Modo de Gráficos" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Em Janela" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "Resolução" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Tamanho das Texturas" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "Vertical sync*" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* Tem efeito quando o jogo for reiniciado" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "OPÇÕES DE JOGO" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "Rotação Invertida" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "Restringir Cursor" -#: src/frontend.c:1157 +#: src/frontend.c:1149 #, fuzzy msgid "Colored Cursors*" msgstr "Cursores Coloridos *" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "Trocar Botões do Rato" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "* Pode afectar negativamente a performance" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "OPÇÕES DE JOGO" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Dificuldade" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Fácil" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Normal" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Difícil" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Velocidade de Scroll" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Língua" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Cor das Unidades" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "OPÇÕES DE JOGO" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12328,106 +13357,106 @@ msgstr "Jogador %u está a fazer batota (menu debug) para obter uma nova caracte msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Jogador %u está a fazer batota (menu debug) para obter um novo droid %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Comandantes (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Ecrã de Informação" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Produção (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "Desenho (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Investigação (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Construir (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "Energia" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "Mosaico" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "Coloca mosaicos no mapa" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Unidade" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "Colocar Unidade no mapa" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Estrutura" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "Colocar Estruturas no mapa" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Característica" -#: src/hci.c:4104 +#: src/hci.c:4106 #, fuzzy msgid "Place Features on map" msgstr "Colocar ?recursos/características? no mapa" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "Pausa ou retira de pausa o jogo" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "Alinhar altura de todos os objectos do mapa" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Sair" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Sair do Jogo" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Barra de Progresso" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Ponto de Destino da Fábrica" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Produção Pontínua" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Tab Scroll esquerda" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Tab Scroll direita" @@ -12471,6 +13500,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 msgid "Build Progress" msgstr "Progresso de Construção" @@ -12484,7 +13521,7 @@ msgid "Power Accrued" msgstr "Energia resultante" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "EM PAUSA" @@ -12612,290 +13649,290 @@ msgstr "Designar produção de Fábrica de VTOLs" msgid "Circle" msgstr "Círculo" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Esta cheat está bloqueada nos jogos multiplayer." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Aviso! Esta batota tem bugs. NÃO recomendamos o seu uso." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Deixa-nos ver o que vês!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "OK, o painel de armas e sensores está desligado!" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "Jogador %u está a fazer batota (menu debug) para obter um novo droid %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Jogador %u) está a usar batotas :%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Rijos como betão!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "A levar as coisas nas calmas!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 dos grandes!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Energia avassaladora" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "De volta à normalidade!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "A ficar matreiro!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Duplamente simpático!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "Mostrar FPS: Activado." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "Mostrar FPS: Desactivado." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; Limite-FPS: %d PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Jogador %u) está a usar uma batota :Num Droids: %d Num Structures: %d Num Features: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Energia infinita desactivada" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Energia infinita activada" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Todos os items estão disponíveis" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Fog ligado" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Fog desligado" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Aviso! Esta batota pode causar graves problemas mais tarde! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "A Terminar Missão" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "AS BATOTAS ESTÃO AGORA ACTIVADAS!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "AS BATOTAS ESTÃO AGORA DESACTIVADAS!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Modo God Activado" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Modo God Desactivado" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Vista alinahada para Norte" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, fuzzy, c-format msgid "Trap cursor %s" msgstr "Restringir Cursor" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "Pesquisei TUDO para ti!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Jogador %u) está a fazer batota :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "Investigado" # energy=health? -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Mostrar barras de saúde apenas quando seleccionadas" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Mostrar sempre barras de saúde das unidades" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Mostrar sempre barras de saúde das unidades e estruturas" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Modo demo desligado - A voltar ao modo de jogo normal" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "Menu de Debug Aberto" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Incapaz de localizar qualquer extractor de recursos!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "E o tempo está tão frio lá fora... NEVE" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Singing in the rain, I'm singing in the rain... CHUVA" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Previsão do Tempo: Céu limpo para todas as áreas... Sem Tempo" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Aviso! Isto pode ter consequências graves se for usado incorrectamente nas missões." -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "Inimigo destruído por batota." -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "A destruir droides e estruturas seleccionadas!" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Centrado no QG dos jogador, direcção NORTE" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Incapaz de localizar o QG!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Esta cheat está bloqueada nos jogos multiplayer." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Velocidade de jogo reposta" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Velocidade de jogo aumentada para %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Velocidade de jogo reduzida para %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Menu de construção vai reabrir" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Menu de construção não vai reabrir" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar a mostrar cores de amigo/inimigo" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar a mostrar cores de jogador" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar a mostrar apenas objectos" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar a misturar terreno e altura" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar a mostrar terreno" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar a mostrar terreno" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar a mostrar altura" @@ -13316,8 +14353,8 @@ msgstr "Continuar Jogo" msgid "GAME SAVED :" msgstr "JOGO GRAVADO :" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "Encontraste %u energia num barril de petróleo" @@ -13626,21 +14663,21 @@ msgstr "O servidor kickou %s do jogo!" msgid "Host is Starting Game" msgstr "O servidor está a começar o jogo" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Jogadores" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13649,27 +14686,27 @@ msgstr "" msgid "Players Still Joining" msgstr "Os jogadores ainda estão a entrar." -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s abandonou o Jogo" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s está a juntar-se ao Jogo" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Mensagem de Sistema:" @@ -13757,48 +14794,48 @@ msgstr "Dar Energia ao Jogador" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "Alianças" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Verde" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Laranja" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Cinzento" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Preto" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Vermelho" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Azul" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Rosa" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Ciano" @@ -13941,12 +14978,12 @@ msgstr "FOSTE VITORIOSO!" msgid "YOU WERE DEFEATED!" msgstr "FOSTE DERROTADO" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Sinalizador recebido de %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Sinalizador %d" @@ -13975,62 +15012,62 @@ msgstr "Incapaz de localizar qualquer unidade de Sensor" msgid "Unable to locate any Commanders!" msgstr "Incapaz de localizar qualquer Comandante!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "Limite de Controlo de Comando Alcançado - Produção Parada" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u unidade atribuída" msgstr[1] "%s - %u unidades atribuídas" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Dano %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Ligado a %u de %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Danificado Electronicamente" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Recompensa Electrónica - Relatório de Visibilidade" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Recompensa de Fábrica - Propulsão" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Recompensa de Fábrica - Corpo" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Recompensa de Fábrica - Arma" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Recompensa de Fábrica - Nada" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Recompensa de Posto de Reparação - Reparações" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Recompensa de Posto de Reparação - Nada" @@ -14039,7 +15076,7 @@ msgstr "Recompensa de Posto de Reparação - Nada" msgid "Launch Transport" msgstr "Descolar Transporte" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Reforços a aterrar" @@ -14071,6 +15108,18 @@ msgstr " - Construído %s" msgid "Version %s%s%s%s" msgstr "Versão %s%s%s%s" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "Bombas de Fósforo" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "Bombas HEAP" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "mod" + #, fuzzy #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Jogador %u tem a versão errada do jogo. A expulsar automaticamente." @@ -14114,9 +15163,6 @@ msgstr "Versão %s%s%s%s" #~ msgid "Software (coloured)" #~ msgstr "Software (cores)" -#~ msgid "you are being a jerk." -#~ msgstr "estás a ser parvo." - #~ msgid "English" #~ msgstr "Inglês" @@ -14151,9 +15197,6 @@ msgstr "Versão %s%s%s%s" #~ msgid "Command turret MkIV" #~ msgstr "Torreão de Comando MkIV" -#~ msgid "Game" -#~ msgstr "Jogo" - #~ msgid "Mayhem" #~ msgstr "Mayhem" @@ -14187,33 +15230,15 @@ msgstr "Versão %s%s%s%s" #~ msgid "Commander" #~ msgstr "Comandante" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "Parabéns por derrotar o Novo Paradigma" - #~ msgid "This sector is now secure." #~ msgstr "Este sector está agora assegurado." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Quando não respondemos tornou-se ameaçador." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Nexus removeu-se sem deixar rasto" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "O Programa de Intrusão Nexus tem ligações com a Reed Corporation." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Nexus tem tecnologia a armas e não é amigável." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Guerreiros da Colectividade..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "Destruam e matem todos os que resistem à Máquina." - -#~ msgid "Attack!" -#~ msgstr "Ataquem!" - #~ msgid "TRANSPORT MISSION: Rescue Civilians from Containment Camp " #~ msgstr "MISSÃO DE TRANSPORTE: Resgatar Civis do Campo de Contenção " @@ -14301,9 +15326,6 @@ msgstr "Versão %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "Ataque Aéreo a Chegar" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Equipa Alfa Erradicada" - #~ msgid "Team Beta Eradicated" #~ msgstr "Equipa Beta Erradicada" diff --git a/po/pt_BR.po b/po/pt_BR.po index 5d3fd9167..8390e1a3a 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -2,10 +2,11 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2010-02-13 14:39-0300\n" +"POT-Creation-Date: 2010-06-09 02:03+0200\n" +"PO-Revision-Date: 2010-05-08 00:46-0300\n" "Last-Translator: Artur Filipe \n" "Language-Team: Brazilian Portugese \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -1577,7 +1578,7 @@ msgstr "Produção Ciborgue Melhorada" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Produção Automatizada de Ciborgues" @@ -1609,8 +1610,8 @@ msgstr "Todas as fábricas de Ciborgues melhoradas automaticamente" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Fábrica de Ciborgue" @@ -1771,7 +1772,7 @@ msgstr "Aumenta a resistência a danos" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Materiais Base de Estruturas Reforçado" @@ -1944,7 +1945,7 @@ msgstr "Melhora no Motor de Veículos" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Motor de Injeção de Combustível" @@ -2101,7 +2102,7 @@ msgstr "Velocidade: Baixa" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Propulsão 4x4" @@ -2961,7 +2962,7 @@ msgstr "Novas técnicas de reparos robóticas" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Produção Robótica de Ciborgues" @@ -2983,7 +2984,7 @@ msgstr "Aumenta a produção das fábricas" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Análise Dedicada de Dados da Conexão Sináptica" @@ -2992,7 +2993,7 @@ msgstr "Análise Dedicada de Dados da Conexão Sináptica" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Materiais Base de Estruturas Melhorado" @@ -3001,7 +3002,7 @@ msgstr "Materiais Base de Estruturas Melhorado" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Produção de VTOL Robótica" @@ -3037,7 +3038,7 @@ msgstr "Tempo de Recarga de VTOL's Diminuído" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Rearmamento de VTOL Automatizado" @@ -3168,7 +3169,7 @@ msgstr "Mais energia necessária e produção mais lerda que o Cobra" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Motor Turbo" @@ -3445,7 +3446,7 @@ msgstr "Alvos: Estruturas" #: data/mp/messages/resmessages2.rmsg:720 #: data/mp/messages/strings/resstrings.txt:737 msgid "Drops High Explosive Armor Piercing bombs" -msgstr "Bombas Altamente Explosivas" +msgstr "Lança Bombas Altamente Explosivas" #: data/base/messages/resmessages2.rmsg:721 #: data/base/messages/strings/resstrings.txt:705 @@ -3628,7 +3629,7 @@ msgstr "Ogivas Altamente Explosivas e Perfurantes" #: data/mp/messages/resmessages2.rmsg:941 #: data/mp/messages/strings/resstrings.txt:1009 msgid "High Explosive Squash Head warhead" -msgstr "Ogiva Altamente Explosiva e Perfurante" +msgstr "Ogiva de Choque Altamente Explosiva" #: data/base/messages/resmessages3.rmsg:18 #: data/mp/messages/resmessages3.rmsg:18 @@ -3846,14 +3847,14 @@ msgstr "Turbina a Vapor aumenta a produção" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Pesquisa das Sinapses Neurais em Cérebros" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Materiais Base de Estruturas Avançado" @@ -3865,14 +3866,14 @@ msgstr "Materiais Estruturais de Alta Densidade" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Produção de VTOL Avançada" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Rearmamento Robótico de VTOL" @@ -4010,7 +4011,7 @@ msgstr "Pródução muito dispendiosa" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Motor à Gás" @@ -4562,14 +4563,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Designador a laser guia o tiro ao alvo" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "OBJETIVO: Localizar e recuperar tecnologia de sinapse neural" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Estabeleça uma base, e então procure por uma estrutura Pré-Colapso." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Essa estrutura contém tecnologia vital para o sucesso do Projeto." @@ -4926,14 +4930,18 @@ msgid "We'll keep you informed of further developments" msgstr "Mante-te-emos informados de quaisquer atualizações." #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Comandante, você foi designado para ajudar o Time Beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "MISSÃO-BASE BETA: Setor Leste" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Ao chegar, você receberá o comando da base." @@ -4942,16 +4950,19 @@ msgid "You must defend it and hold it." msgstr "Você deve defendê-la e repelir ataques." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "MISSÃO-BASE BETA: Defender e Fortificar." #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Fortifique o perímetro e estabeleça defensas anti-aéreas." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Novas tecnologias estão disponíveis." @@ -5248,6 +5259,8 @@ msgid "Good luck, Commander." msgstr "Boa sorte, Comandante." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "MISSÃO-TRANSPORTE: Setor Norte" @@ -5256,6 +5269,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "Congratulações na evacuação bem sucedida da Base Beta." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS ganhou acesso a armamento nuclear e está determinado a destruir o Projeto." @@ -5264,10 +5278,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Leve suas forças para o Setor Norte" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Ao chegar nas montanhas, assegure uma AP. Em seguida, estabeleça uma base avançada." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Time Gamma irá contatá-lo lá." @@ -5276,6 +5292,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "MISSÃO-TRANSPORTE: Estabeleça uma Base Avançada" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Comandante, o sucesso do Projeto depende de você." @@ -5302,6 +5319,7 @@ msgstr "Estamos transmitindo coordenatas de uma AP próxima aos silos de lançam #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Download das coordenadas, Conlduído." @@ -5741,7 +5759,7 @@ msgstr "Transporte" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Caminhão" @@ -5750,7 +5768,7 @@ msgstr "Caminhão" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "4x4 Metralhadora Víbora" @@ -5777,7 +5795,7 @@ msgstr "Tanque Canhão Leve Víbora" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Híbrido Metralhadora Pesada Cobra" @@ -5808,7 +5826,7 @@ msgstr "Híbrido Torrete de Reparo Víbora" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "4x4 Metralhadora Dupla Víbora" @@ -5825,7 +5843,7 @@ msgstr "Híbrido Metralhadora Pesada Víbora" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Tanque Metralhadora Pesada Víbora" @@ -5849,7 +5867,7 @@ msgstr "4x4 Arrasa-Defesas Víbora" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Tanque Canhão Médio Cobra" @@ -5861,7 +5879,7 @@ msgstr "Tanque Canhão Pesado Cobra" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Caminhão Cobra" @@ -5871,7 +5889,7 @@ msgstr "Híbrido Sensor Cobra" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Tanque Incendiário Cobra" @@ -5888,7 +5906,7 @@ msgstr "Híbrido Comandante Cobra" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "Híbrido Lançadeiro Cobra" @@ -5902,26 +5920,26 @@ msgid "Light Cannon Python Tracks" msgstr "Tanque Canhão Leve Píton" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Tanque Canhão Médio Píton" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Tanque Canhão Pesado Píton" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "Tanque Comandante Píton" @@ -5985,7 +6003,7 @@ msgstr "Civil" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Metralhador" @@ -5994,9 +6012,9 @@ msgstr "Metralhador" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Incendiário" @@ -6006,8 +6024,8 @@ msgstr "Incendiário" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Lançadeiro" @@ -6016,7 +6034,7 @@ msgstr "Lançadeiro" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Atirador Pesado" @@ -6110,8 +6128,8 @@ msgstr "Z NULO CÉREBRO" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Torrete de Comando" @@ -6215,14 +6233,14 @@ msgstr "Híbrido III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Propulsão Ciborgue II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Propulsão Ciborgue III" @@ -6244,7 +6262,7 @@ msgstr "BaBaPernas" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Propulsão Ciborgue" @@ -6272,8 +6290,8 @@ msgstr "Z NULO SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Torre de Sensor" @@ -6281,15 +6299,15 @@ msgstr "Torre de Sensor" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Torre de Concreto de Sensor" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Torrete de Sensor" @@ -6313,7 +6331,7 @@ msgstr "Torre Radar AB" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "Torre VTOL" @@ -6349,7 +6367,7 @@ msgstr "Fábrica" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Módulo de Fábrica" @@ -6361,7 +6379,7 @@ msgstr "Gerador de Energia" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Módulo de Energia" @@ -6373,7 +6391,7 @@ msgstr "Centro de Pesquisas" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Módulo de Pesquisas" @@ -6385,7 +6403,7 @@ msgstr "Demolir Estrutura" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Centro de Reparos" @@ -6406,8 +6424,8 @@ msgstr "Muro de Durocreto" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Fábrica de VTOL" @@ -6418,30 +6436,30 @@ msgstr "Defesa Inferno" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Muro Inferno" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Vala de Morteiro de Velocidade" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Defesa Hellstorm" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Defesa AA Tornado Explosivo" @@ -6452,27 +6470,27 @@ msgstr "Defesa AA Cyclone Explosivo" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Defesa AA Hurricane" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Defesa AA Whirlwind" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Bateria de Foguetes Ripple" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Torre de Canhão de Assalto" @@ -6483,29 +6501,29 @@ msgstr "Torre de Metralhadora de Assalto" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Defesa de Metralhadora de Assalto" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Defesa de Canhão de Assalto" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "Torre AB" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Torre AB para VTOL" @@ -6515,168 +6533,168 @@ msgstr "Torre VTOL" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Muro de Metralhadora Pesada" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Muro de Canhão Leve" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Muro de Canhão Médio" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Muro de Canhão Pesado" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Muro Incendiário" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Muro de Lançadeira" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Torre de Metralhadora" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Torre de Metralhadora Dupla" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Torre de Metralhadora Pesada" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Torre de Incendiário" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Torre de Lançadeira" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Torre de Mini Foguetes" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Defesa de Metralhadora" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Defesa de Metralhadora Dupla" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Defesa de Metralhadora Pesada" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Defesa de Canhão Leve" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Defesa Incendiária" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Defesa de Lançadeira" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Armadilhas de Tanques" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Dentes de Dragão" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Ãrea de Rearmamento de VTOL" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Defesa Howitzer" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Defesa Laser Médio" @@ -6687,139 +6705,139 @@ msgstr "Muro Laser Médio" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Muro Acelerador de Partículas" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Torre de Míssil Scourge" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Torre de Perfuratriz" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Defesa de Canhão de Gauss" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Canhão Leve" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Canhão Médio" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Canhão Pesado" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Canhão de Hiper Velocidade" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Canhão de Assalto" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Inferno" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Howitzer" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Treme-Terra" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Defesa de Treme-Terra" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Hellstorm" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Pulso Laser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Metralhadora" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Metralhadora Dupla" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Metralhadora Pesada" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Metralhadora de Assalto" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Míssil Scourge" @@ -6830,80 +6848,80 @@ msgstr "Míssil Angel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "MTA Vindicator" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Míssil Archangel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "MTA Avenger" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "VTOL Míssil Scouge" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Morteiro" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Defesa de Morteiro" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Morteiro Pesado" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Defesa de Morteiro Pesado" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Morteiro de Velocidade" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Defesa de Morteiro de Velocidade" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Perfuratriz" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Acelerador de Partículas" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Canhão Gauss" @@ -6913,74 +6931,74 @@ msgid "Mini-Rocket Artillery" msgstr "Artilharia de Mini-Foguetes" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Arrasa-Defesas" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Lançador de Mini-Foguetes" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Foguetes Ripple" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Destruidor de Tanques" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "Arrasa-Defesas VTOL" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "VTOL Mini-Foguetes" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "Lançadeiro VTOL" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "Destruidor de Tanques VTOL" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Torrete AA Tornado Explosivo" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Torrete AA Cyclone Explosivo" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Torrete AA Whirlwind" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Torrete AA Hurricane" @@ -6989,62 +7007,62 @@ msgid "LasSat" msgstr "SatLas" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "Canhão VTOL" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "Canhão de Hiper-Velocidade VTOL" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "Canhão de Assalto VTOL" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "Pulso Laser VTOL" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "Metralhadora VTOL" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "Metralhadora Dupla VTOL" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Metralhadora Pesada VTOL" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "Metralhadora de Assalto VTOL" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "Perfuratriz VTOL" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "Acelerador de Partículas VTOL" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Torrete de Bomba de Proximiade" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Torrete de Super Bomba de Proximidade" @@ -7053,22 +7071,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "Bombas Fragmentárias VTOL" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "Bombas Explosivas VTOL" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "Bombas de Fósforo VTOL" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "Bombas de Termite VTOL" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Muro da Coletividade" @@ -7085,307 +7103,307 @@ msgid "NEXUS CWall" msgstr "CMuro de NEXUS" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 RESEARCH" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "PESQUISAS AVANÇADAS" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 VEHICLES" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 WEAPONS" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 SYSTEMS" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 DEFENSES" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 STRUCTURES" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 RESEARCH" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 VEHICLES" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 CYBORGS" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 WEAPONS" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 SYSTEMS" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 DEFENSES" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 STRUCTURES" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 RESEARCH" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Conexão Sináptica" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Códigos de Travamento de Alvo do Míssil" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Segundo Nível dos Códigos de Travamento de Alvo dos Mísseis" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Terceiro Nível dos Códigos de Lançamento dos Mísseis" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Armadura Térmica Ciborgue" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Armadura Térmica Ciborgue Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Armadura Térmica Ciborgue Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Armadura Térmica Ciborgue de Alta Intensidade" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Armadura Térmica Ciborgue de Alta Intensidade Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Armadura Térmica Ciborgue de Alta Intensidade Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Ligas Compostas para Ciborgues" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Ligas Compostas para Ciborgues Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Ligas Compostas para Ciborgues Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Ligas Densas Compostas para Ciborgues" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Ligas Densas Compostas para Ciborgues Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Ligas Densas Compostas para Ciborgues Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Ligas Super Densas Compostas para Ciborgues" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Ligas Super Densas Compostas para Ciborgues Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Ligas Super Densas Compostas para Ciborgues Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Arrasa-Defesas" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Atirador Pesado" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Incendiário" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Metralhador" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Lançadeiro" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Atirador de Assalto" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Perfurador" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Super Scourge" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Atirador Laser" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Ciborgue de Pulo Arrasa-Defesas" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Ciborgue de Pulo Atirador Pesado" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Ciborgue de Pulo Lançadeiro" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Ciborgue de Pulo Atirador de Assalto" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Ciborgue de Pulo Perfurador" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Ciborgue de Pulo Atirador Scourge" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Ciborgue de Pulo Laser" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Equipamento de Pulo Ciborgue" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Durocreto" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "Durocreto-NP" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Durocreto Melhorado" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "Durocreto Melhorado Mk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "Durocreto Melhorado Mk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Supercreto" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Supercreto Mk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Supercreto Mk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plascreto" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plascreto Mk2" @@ -7400,15 +7418,15 @@ msgstr "Defesa de Canhão de Alta Velocidade" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Defesa de Destruidor de Tanques" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Vala de Morteiro Pesado" @@ -7417,55 +7435,55 @@ msgid "Angel Missile Battery" msgstr "Bateria de Mísseis Angel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Bateria de Mísseis Archangel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Vala de Morteiro" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Bateria de Mini-Foguetes" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Defesa de Pulso Laser" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Defesa de Acelerador de Partículas" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Defesa de Canhão de Assalto" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Defesa de Metralhadora de Assalto" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Defesa de MTA Avenger" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Defesa de MTA Vindicator" @@ -7483,15 +7501,15 @@ msgstr "Torre Defensiva de Mini Foguetes" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Muro Míssil Scourge" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Muro Destruidor de Tanques" @@ -7502,49 +7520,49 @@ msgstr "Muro Canhão de Alta Velocidade" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Muro Canhão de Gauss" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Posto de Coordenação de Comando" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Produção Automatizada de Ciborgues Mk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Produção Automatizada de Ciborgues Mk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Produção Robótica de Ciborgues Mk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Produção Robótica de Ciborgues Mk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Produção Avançada de Ciborgues" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Produção Avançada de Ciborgues Mk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Produção Avançada de Ciborgues Mk3" @@ -7582,54 +7600,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Produção Avançada da Fábrica Mk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Materiais Base de Estruturas Reforçado Mk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Materiais Base de Estruturas Reforçado Mk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Materiais Base de Estruturas Melhorado Mk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Materiais Base de Estruturas Melhorado Mk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Materiais Base de Estruturas Avançado Mk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Materiais Base de Estruturas Avançado Mk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Turbina Geradora à Gás" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Turbina Geradora à Vapor" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Centro de Reparos" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Centro Automatizado de Reparos" @@ -7666,172 +7684,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Centro de Reparos Automatizado Mk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Análise de Dados da Conexão Sináptica" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Análise de Dados da Conexão Sináptica Mk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Análise de Dados da Conexão Sináptica Mk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Análise Dedicada de Dados da Conexão Sináptica Mk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Análise Dedicada de Dados da Conexão Sináptica Mk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Pesquisa das Sinapses Neurais em Cérebros Mk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Pesquisa das Sinapses Neurais em Cérebros Mk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Rearmamento de VTOL Automatizado Mk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Rearmamento de VTOL Automatizado Mk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Rearmamento Robótico de VTOL Mk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Rearmamento Robótico de VTOL Mk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Rearmamento Robótico de VTOL Mk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Produção de VTOL Robótica Mk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Produção de VTOL Robótica Mk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Produção de VTOL Avançada Mk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Produção de VTOL Avançada Mk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Auto-Reparo Ciborgue" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Auto-Reparo Ciborgue Mk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Auto-Reparo Ciborgue Mk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Auto-Reparo de Defesas" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Auto-Reparo de Defesas Mk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Auto-Reparo de Defesas Mk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Auto-Reparo de Estruturas" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Auto-Reparo de Estruturas Mk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Auto-Reparo de Estruturas Mk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Auto-Reparo de Veículos" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Auto-Reparo de Veículos Mk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Auto-Reparo de Veículos Mk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Melhora do Sensor" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Unidade de Construção" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Engenharia" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Engenharia Melhorada" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Engenharia Avançada" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Torrete de reparos móvel" @@ -7841,84 +7859,84 @@ msgstr "Torrete Móvel de Reparos Pesado" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Melhora no Torrete Móvel de Reparos" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Melhora do Torrete Móvel de Reparos Mk2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "Torrete AB" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "Melhora no Torrete AB" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "Melhora do Torrete AB Mk2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "Melhora do Torrete AB Mk3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "Torrete AB VTOL" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "Melhora do Torrete AB VTOL" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "Melhora do Torrete AB VTOL Mk2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "Melhora do Torrete AB VTOL Mk3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "Melhora de Torre VTOL" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "Melhora de Torre VTOL Mk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "Melhora de Torre VTOL Mk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Torre VTOL" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Gerador de Interferência Melhorado" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Torrete Gerador de Interferência Mk2" @@ -7939,292 +7957,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Circuitos de Resistência a NEXUS Mk3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Trava de Sensor" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Armadura Térmica" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Armadura Térmica Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Armadura Térmica Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Armadura Térmica de Alta Intensidade" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Armadura Térmica de Alta Intensidade Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Armadura Térmica de Alta Intensidade Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Chassis Leve - Víbora" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Chassis Leve - Leopardo" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Chassis Level - Retaliação" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Chassis Leve - Inseto" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Chassis Médio - Cobra" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Chassis Médio - Pantera" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Chassis Médio - Retribuição" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Chassis Médio - Escorpião" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Chassis Pesado - Tigre" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Chassis Pesado - Vingança" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Chassis Pesado - Píton" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Chassis Pesado - Mantis" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Motor de Injeção de Combustível Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Motor de Injeção de Combustível Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Motor Turbo Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Motor Turbo Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Motor à Gás Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Motor à Gás Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Ligas compostas" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Ligas compostas Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Ligas compostas Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Ligas compostas Densas" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Ligas compostas Densas Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Ligas compostas Densas Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Ligas compostas Super Densas" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Ligas compostas Super Densas Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Ligas compostas Super Densas Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Propulsão Hovercraft" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Propulsão Hovercraft II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "Propulsão Híbrida" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "Propulsão Híbrida II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "Propulsão Tanque" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "Propulsão Tanque II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "Propulsão VTOL" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "Propulsão VTOL II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Propulsão 4x4 II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Sensor AA de Imagem Infravermelho" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "Munição AA Aquisidora de Alvo" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Computador AA de Predição" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Munição AA AE" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "Munição AA AE Mk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "Munição AA AE Mk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Munição AA EP" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "Munição AA EP Mk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "Munição AA EP Mk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Correia de Munição AA" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "Correia de Munição AA Mk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "Correia de Munição AA Mk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Correia Automática de Munição" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "Correia Automática de Munição Mk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "Correia Automática de Munição Mk3" @@ -8233,17 +8251,17 @@ msgid "Cluster Bombs Bay" msgstr "Bombas Fragmentárias" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Bombas EP" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Bombas de Fósforo" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Bombas de Termite" @@ -8260,252 +8278,252 @@ msgid "Target Acquisition Bombsight" msgstr "Mira de Bombas Aquisidora de Alvos" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Mira a Laser para Canhões" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Designação de Alvos a Laser para Canhões" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Munição Perfuradora" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Munição Perfuradora Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Munição Perfuradora Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Munição Perfuradora Reforçada" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Munição Perfuradora Reforçada Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Munição Perfuradora Reforçada Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "Munição Pesada Perfuradora Reforçada" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "Munição Pesada Perfuradora Reforçada Mk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "Munição Pesada Perfuradora Reforçada Mk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Carregamento Automático de Canhões" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Carregamento Automático de Canhões Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Carregamento Automático de Canhões Mk3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Recarregamento Rápido de Canhões" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Recarregamento Rápido de Canhões Mk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Recarregamento Rápido de Canhões Mk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Foco de Laser Melhorado" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "Foco de Laser Melhorado Mk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "Foco de Laser Melhorado Mk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Emissor de Laser de Alta Energia" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Emissor de Laser de Alta Energia Mk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Emissor de Laser de Alta Energia Mk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Energizador Termopólico" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Energizador Termopólico Mk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Energizador Termopólico Mk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Gel Incendiário de Alta Temperatura" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Gel Incendiário de Alta Temperatura Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Gel Incendiário de Alta Temperatura Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "Gel Incendiário Super Quente" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "Gel Incendiário Super Quente Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "Gel Incendiário Super Quente Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Recarregamento Automático de Incendiário" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Recarregamento Automático de Incendiário Mk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Recarregamento Automático de Incendiário Mk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Incendiário Pesado - Inferno" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Obus Pesado - Treme-Terra" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Obus Rotatório - Hellstorm" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Munição de Artilharia Aquisidora de Alvos" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Munição de Artilharia Aquisidora de Alvos Mk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "Munição de Artilharia Aquisidora de Alvos Mk3" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Munição de Obus AE" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Munição de Obus AE Mk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Munição de Obus AE Mk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Munição de Obus EP" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Munição de Obus EP Mk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Munição de Obus EP Mk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Carregador Automático de Obus" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Carregador Automático de Obus Mk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Carregador Automático Mk3" @@ -8514,57 +8532,57 @@ msgid "Fast Loader" msgstr "Carregador Rápido" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser Médio" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Munição de Metralhadora Reforçada" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "Munição de Metralhadora Perfuradora" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "Munição de Metralhadora Perfuradora Mk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "Munição de Metralhadora Perfuradora Mk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Balas de Metralhadora com Ponta de Tungstênio" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Balas de Metralhadora com Ponta de Tungstênio Mk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Balas de Metralhadora com Ponta de Tungstênio Mk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Balas de Metralhadora de Urânio Empobrecido" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Balas de Metralhadora de Urânio Empobrecido Mk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Metralhadora de Velocidade" @@ -8573,142 +8591,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Metralhadora de Alta Velocidade" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Metralhadora de Hiper Velocidade" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Mísseis com Predição de Alvos" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Mísseis Procure & Destrua" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Ogiva de Míssil Avançada" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Ogiva de Míssil Avançada Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Ogiva de Míssil Avançada Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Sistema de Alocação de Míssil Avançado" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Sistema de Alocação de Míssil Avançado Mk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Sistema de Alocação de Míssil Avançado Mk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Ogiva de Mìssil EP" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Ogiva de Mìssil EP Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Ogiva de Mìssil EP Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Sistema de Recarregamento de Mísseis Melhorado" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Computador de Alvo para Morteiros" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Munição de Morteiros com Visão Infravermelha" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Munição de Morteiros com Aquisição de Alvos" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Munição de Morteiros AP" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Munição de Morteiros AP Mk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Munição de Morteiros AP Mk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Munição de Morteiros EP" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Munição de Morteiros EP Mk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Munição de Morteiros EP Mk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Carregador de Morteiro Automático" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Carregador de Morteiro Automático Mk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Carregador de Morteiro Automático Mk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Carregador de Morteiro Rápido" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Morteiro Pesado" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Morteiro de Velocidade" @@ -8717,367 +8735,367 @@ msgid "Target Prediction Computer" msgstr "Computador de Predição de Alvos" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Dardo Reforçado" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Dardo Reforçado Mk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Dardo Reforçado Mk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "TDT do Acelerador de Partículas" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "TDT do Acelerador de Partículas Mk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "TDT do Acelerador de Partículas Mk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Mini-Foguetes Estabilizados" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Mini-Foguetes Estabilizados Mk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Mini-Foguetes AP" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Mini-Foguetes AP Mk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Mini-Foguetes AP Mk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Mini-Foguetes EP" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Mini-Foguetes EP Mk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Mini-Foguetes EP Mk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Mini-Foguetes de Alta TDT" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Mini-Foguetes de Alta TDT Mk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Mini-Foguetes de Alta TDT Mk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Mini-Foguetes de Lançamento Rápido" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Mini-Foguetes de Lançamento Rápido Mk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Mini-Foguetes de Lançamento Rápido Mk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Melhora no Direcionamento dos Foguetes" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Deisgnador a Laser de Foguetes" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Foguetes com Visão Infravermelha" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "Ogiva de Foguete AP" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "Ogiva de Foguete AP Mk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "Ogiva de Foguete AP Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "Ogiva de Foguete EP" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "Ogiva de Foguete EP Mk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "Ogiva de Foguete EP Mk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Carregador Automático de Foguetes" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Carregador Automático de Foguetes Mk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Carregador Automático de Foguetes Mk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "Foguete AT" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Foguete Arrasa-Defesas" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Foguete Destruidor de Tanques" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Artefato Metralhadora" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Centro de Comando do Novo Paradigma" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Centro de Comando da Coletividade" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Fábrica dos Catadores" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Torre Armada dos Catadores" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Muro Horizontal dos Catadores" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Gerador de Força dos Catadores" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Vala de Foguete dos Catadores" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Vala de Foguete AT dos Catadores" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Defesa dos Catadores" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Canto de Muro dos Catadores" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Torre Incendiária dos Catadores" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Muro/Torre dos Catadores" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Torre de Vigia" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Torre de Canhão" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefato" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Poço de Petróleo" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Ponte" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Fábrica em Ruínas" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Galpão" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Cabana" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Barril de Óleo" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Ferro-Velho" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Tanque Ferro-Velho" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Ponte Quebrada" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Van Ferro-Velho" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Carro Ferro-Velho" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Caminhão Ferro-Velho" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Laboratório Ciborgue" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Laboratório de Estratégia de Guerra Avançado" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Laboratório de Engenharia" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Laboratório de Robótica" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Laboratório de Pesquisas com Laser" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Laboratório de Eletrônicos" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Laboratório de Química" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Estratégia de Guerra Avançada" @@ -9098,7 +9116,7 @@ msgid "MRL Emplacement" msgstr "Defesa de Artilharia de Mini-Foguetes" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Defesa de Acelerador de Partículas" @@ -9107,49 +9125,49 @@ msgid "Angel Missile Emplacement" msgstr "Defesa de Mísseis Angel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Defesa de Mísseis Archangel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Tanque Torrete de Reparos Cobra" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Scourge" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Arrasa-Defesas" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Atirador Laser" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Perfurador" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Transporte Abatido" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Tanque Destruidor de Tanques Píton" @@ -9158,37 +9176,37 @@ msgid "HPV Cannon Python Tracks" msgstr "Tanque Canhão de Alta Velocidade Píton" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Híbrido AA Cicolne Píton" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Tanque Canhão de Assalto Píton" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Laser Médio" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "Laser Médio VTOL" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Defesa de Metralhadora de Velocidade" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Silo de Míssil" @@ -9470,554 +9488,1485 @@ msgstr "Aguarde enquanto a fábrica produz a(s) nova(s) unidade(s)" msgid "Congratulations commander - you are ready for your first mission" msgstr "Congratulações comandante - você está pronto para sua primeira missão" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "Transimssão chegando" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "Recebendo transmissão da Base Beta." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "Mayday! Mayday!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "Ajude, por favor!..." + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "PRIMEIRA CAMPANHA" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "SETOR OESTE" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "Madrugada, 4 de Julho de 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "QG do Projeto" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "Uma Nova Era" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Manhã, 4 de Julho de 2100" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "Seguindo para o Setor Oeste" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "Time Alfa se aproxima de seu destino" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Destinos dos transportes seguem:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Alfa - Setor Oeste..." + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Alfa, você está liberado para a decolagem." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Boa sorte e boa caçada." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "Aproximando-se da Ãrea de Pouso. Instruções do Time Alfa seguem." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Comandante, você lidera o Time Alfa, uma das três forças expedicionárias enviadas pelo Projeto para recuperar artefatos de antes do Colapso." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Seu destino é a zona oeste." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Comandante, recuperamos um torrete de comando do Novo Paradigma." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "Esse torrete permite comandantes coordenarem ataques entre unidades designadas e atuar como ponto de entrega de fábricas. Pesquisar e utilizar essa tecnologia é de máxima prioridade." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Comandante, estamos recebendo essa transmissão." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "Teus ataques contra nós não ficarão impunes." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "Tu estás de encontro ao Novo Paradigma." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "Todos os grupos de ataque iniciar ataque ao inimigo." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "Eles estão de encontro ao Novo Paradigma." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "Eles devem ser erradicados." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Assegure uma AP e estabeleça uma base avançada." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "Então destrua a base do Novo Paradigma." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Abram seus sistemas para mim." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Deixe-me infundir-me às suas máquinas e ciborgues." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "Criaremos o nexo perfeito do homem com a máquina." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "Juntos podemos criar um novo mundo." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "Eu posso dar-lhes poderes com os quais vocês nunca sonharam." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "Abram seus sistemas para mim e serão fortes." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "Eu posso erguê-los como deuses sobre a terra destruída." + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Quando negamos uma resposta, ele passou a ameaçar-nos." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "Sua interferência nos meus planos para o Novo Paradigma não serão impunes." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "Vocês são fracos pedaços de carne. Eu sou forte e tenho muitos componentes." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Você pode me derrotar aqui, mas eu voltarei." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "Assim como eu já limpei o mundo com fogo, eu destruirei vocês e seu Projeto ínfimo!!" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "Nexus então se removeu do sistema, destruindo seus bancos de memória, e removendo quaisquer traços de suas conexões externas." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "Não estamos certos do que Nexus é ou quem o comanda. Pesquisas iniciais ligam o Programa Intrusivo Nexus à Corporação Reed, que desenvolveu a conexão sináptica." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "Estamos certos de que Nexus supriu o Novo Paradigma com a maior parte de sua tecnologia. O que quer que Nexus seja, é mais que um vírus de computador." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Ele tem tecnologia e armas. Sabe sobre nós, e não é amigável." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "A Conexão Sináptica foi desenvolvida pela Corporação Reed junto com o Exército dos EUA." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "A conexão sináptica permite transferência quase instantânea de pensamentos de operadores humanos a controladores de veículos e sistemas de mira. A conexão é instalada na base do crânio, ao redor da coluna." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "A conexão tem uma saída de transferência de dados de alta velocidade que se conecta em qualquer sistema computadorizado." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "O mais importante é que a conexão permitiu a criação de ciborgues. Tentativas iniciais de armaduras de força para soldados individuais falharam, ao provarem ser lentas e difíceis de controlar." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "A conexão permitiu soldados serem postos em armaduras que eles controlassem como seus próprios corpos. Armaduras de força permitiram a infantaria ser mais efetiva nas zonas de batalha do século 21." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "Infelizmente, essa tecnologia caiu nas mãos do Novo Paradigma. É imprescindível que você pesquise e desenvolva a tecnologia de conexão sináptica." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Atencão!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Tu estás entrando em uma área restrita." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "Retorna à tua zona designada ou serás destruído." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "Repetimos. Retorna à tua zona designada ou serás destruído." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Fim da mensagem." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Serás destruído." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "NEXUS, a tecnologia sináptica que requisitastes foi recuperada e enviada para coleção." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Você fez muito bem." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "Assim que tivermos analisado e autenticado a tecnologia, sua recompensa virá." + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "Informações descobertas na base inimiga prévia indica que o Novo Paradigma recuperou dois artefatos de conexão sináptica." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "O Programa Intrusivo Nexus é um vírus de computador auto-mutante. Isso o torna difícil de ser erradicado de sistemas uma vez identificado." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "Não pudemos identificar sua função ou objetivo principal. Na sua forma inicial, ele procura e isola seções da memória do resto do sistema invadido. Então, passa a mutar-se e mutar estruturas de dados, praticamente reprogramando o sistema de dentro pra fora." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "Análises mais a fundo não foram possíveis devido ao desligamento manual dos sistemas pelos técnicos para impedir contaminação adicional pelo Programa Intrusivo Nexus." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "No entanto, a infecção do Programa Intrusivo Nexus não foi checada pelo Novo Paradigma. Precisamos capturar os sistemas centrais do Novo Paradigma para investigar o Nexus mais a fundo e determinar suas origens." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "Comandante, você deve rastrear as atividades do Novo Paradigma nesse setor e localizar a sua base principal." + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "SEGUNDA CAMPANHA" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "SETOR LESTE" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Manhã, 1 de Setembro de 2100" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "Seguindo para o Setor Leste" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "O Time Alfa se aprovima da Base Beta" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Você deve defendê-la a todo custo." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "A COLETIVIDADE" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Comandante, um novo lançamento foi detectado." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "O alvo provavelmente será sua localização." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Você deve evacuar a Base Beta para o refúgio imediatamente." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "NASDA é a North American Strategic Defense Agency - Agência de Defesa Estratégica Norte Americana." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "A NASDA foi criada em 2076 para defender a América do Norte de ataques convencionais e nucleares. A construção de um sistema de defesa por satélites começou em 2081 e terminou em 2082." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "Em 2085 os satélites da NASDA lançaram suas ogivas na Terra." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "Também haviam locais de lançamento em terra. Muitos desses foram destruídos nos contra-ataques nucleares, mas ainda deve haver algum por aí." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "Os satélites NASDA também continhar pulsos laser desenhados para abater mísseis contra a América do Norte." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "Durante os contra-ataques, os SatLasers falharam ao disparar. Se trazidos de volta à ativa, os SatLasers podem causar danos sérios a alvos em terra." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "Todas as ogivas designadas à America do Norte acertaram seus alvos." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "Sabemos que o Nexus está procurando pela Central da Nasta do Setor Leste. Era um dos centros de controle em terra para os satélites." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "Se a central for encontrada intacta, NEXUS pode obter controle dos satélites." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "Nexus já disse ter já destruído o mundo." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "Guerreiros da Coletividade, eu procuro a localização da Central da NASDA." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "Ela está em algum lugar no seu território." + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "Achem-na, e eu proverei mais armas para te ajudar na sua guerra contra o Projeto." + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "Instruções da NASDA seguem..." + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "Temos de ter certeza que ele não faça isso de novo." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "Análises indicam que esses sistemas eram parte do sistema de controle dos satélites NASDA." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "Agora é certo que o Nexus foi o responsável pelo Colapso." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "Durante os primeiros estágios do Colapso, os técnicos da NASDA desligaram os sistemas infectados para isolar a infecção do Nexus. Isso parece ter impedido o disparo dos SatLasers durante o contra-ataque." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "Os pulsos eletro-magnéticos nucleares limparam grande parte dos bancos de memória da NASDA, destruindo seu processador central, e enviou ondas de choque destruindo Nexus." + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "Nexus foi fritado quando seções inteiras de sua consciência foram erradicadas durante os contra-ataques." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Comandante, estamos detectando transmissões vindas desse local que estão alcançando a órbita superior." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "Nexus se reconectou aos satélites da NASDA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "Isso é uma ameaça primária ao Projeto e à nossa sobrevivência." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "Análises da Central da NASDA não deixa dúvidas de que a Coletividade introduziu o Vírus Nexus nela." + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "O reator nuclear ia ser usado para fornecer energia a uma vasta rede de sistemas de computadores pré-Colapso." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Comandante, acabamos de detectar um lançamento de um missil nessas coordenadas." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "O Time Gama está enviando um esquadrão para investigar o local de lançamento e prevenir próximos lançamentos." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "Podemos apenas assumir que Nexus ganhou controle desse local. Não podemos determinar se o míssil é nuclear ou qual seu alvo. Sugerimos que prepare a evacuação de sua base." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "Guerreiros da Coletividade, mais intrusos estão entrando em nosso território." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "Eles não são parte da máquina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "Guerreiros da Coletividade, ataquem e destruam todos que resistam à maquina." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "Ataquem! Eliminem a presença deles dessa área!" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "Guerreiros da Coletividade, estamos prontos para destruir os intrusos que poluem nossas terras." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "Aqueles do Projeto não são da máquina. A sua bênção foi negada a eles. Nós que abraçamos o poder da máquina estamos destinados a expulsar tais criaturas fracas." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "Eles irão sucumbir sob o poderio da Coletividade." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "Ataquem e destruam todos que resistirem à máquina." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Ataquem!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "Guerreiros da Coletividade, Nexus nos deu o poder da máquina para que possamos destruir todos que se oponham a nós." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "Nexus agora pede que destruamos o Projeto." + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "Erradicar e destruir!!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "Guerreiros da Coletividade. Vocês fizeram bem." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "Sua recompensa está a caminho." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "O Projeto está fugindo de sua base e roubando sua tecnologia." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "Você deve impedi-los!" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "Decodificando Transmissão..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "TERCEIRA CAMPANHA" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "SETOR NORTE" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "Congratulações na evacuação bem sucedida da Base Beta." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "Anoitecer, 3 de Dezembro de 2100" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "Seguindo para o Setor Norte" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "O Encontro Final" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "Insruções Começando:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "O pessoal da Base Gama confirmou que os mísseis nucleares lançandos contra as bases Alfa e Beta foram lançados de um silo no setor deles." + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "O Time Gama está atualmente explorando a região do silo e monitorando a atividade do NEXUS." + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "Acabou seu tempo, comandante!!" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Comandante, estamos detectando forças do NEXUS nessas coordenadas..." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "Muito bem Comandante, você impediu meu último míssil de ser lançado." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "Que pena. Seu QG do Projeto seria um ótimo alvo." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "Mas gostei de você ter se juntado a mim aqui." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "Enterrado sob esse silo está uma ogiva nuclear tática que está programada para explodir daqui a pouco." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "Como eu não tenho como lançá-la, eu terei de explodi-la ali mesmo." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "Por favor note que todas as entradas para o complexo subterrâneo foram selada. Até mais, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Que bom que você conseguiu, Comandante." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "Ataques de VTOL's inimigos nos acuaram. Conseguimos repelir ciborgues e tanques, mas não conseguimos nenhum processo pelo vale." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "Pode tentar nos alcançar com unidades anti-aéreas?" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "Aqui é o Time Alfa. Repito, aqui é o Time Alfa. Precisamos de ajuda imediatamente." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "Estamos sob ataque pesado de ciborgues, tanques laser e VTOL's de ataque." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "Estávamos tentado te alcançar, mas caímos numa armadilha." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "Estamos recuados num vale nessas coordenadas." + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "Favor ajudar." + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "Comandante, forças do Time Alfa escaparam o ataque nuclear na Base Alfa." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "Estamos sofrendo algumas interferências vindas do NEXUS." + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "Você deve destruir o centro de comando dele antes que percamos o contore de sistemas chave." + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Comandante, bem vindo ao NEXUS!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "A Corporação Reed foi fundada pelo Dr. Allan Reed. Em 2080, Dr. Reed assinou um contrato com o Exército dos EUA para desenvolver a tecnologia da conexão sináptica." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "Após patentear a conexão sináptica cinco anos mais tarde, Dr. Reed continuou suas pesquisas com cibernética." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "Seu novo objetivo era transferir a consciência humana em feixes de dados que pudessem infundir-se com tecnologias de computador. Enquanto estavam no Ciberespaço, os corpos dos operadores ficavam em tanques de imersão." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "Patrocinado pelos militares novamente, Dr. Reed começou a trabalhar no Programa Intrusivo NEXUS. Após três anos de pouco progresso, os militares abandonaram o Projeto Nexus e cortaram o patrocínio." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "Jornais da época afirmam que Dr. Reed ficou furioso e jurou ter vingança contra todos que ficaram em seu caminho." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "Parece que Dr. Reed pode ter conseguido alcançar seus objetivos e concluído o Programa Intrusivo Nexus." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "A similaridade entre NEXUS e o Dr. Reed é impressionante." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "Que bela lição de história. Agora, deixe-me te pôr a par de eventos atuais." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "O Programa Intrusivo NEXUS foi criado para controlar tolos como você." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "É muito simples para mim, infiltrar seus sistemas e tomá-los para mim. É tão simples, na verdade, que você nem notaria que eu estou lá. Isto é, até eu ativar as partes de mim escondidas nos seus sistemas centrais." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "Vamos começar ativando o NEXUS nos seus sistemas centrais e ver o que acontece!" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Comandante, estamos sofrento interferência em nossos equipamentos." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "O serviço normal será restaurado assim que possível." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "Não falta muito agora, Comandante. Não tem mais para aonde ir." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "Mas, se você deixar esse complexo, eu o deixarei ir, uma vez que você não é mais uma ameaça para mim." + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "Você tem cinco minutos para obedeçer, ou então vai ficar muito quente aqui!" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "Comandante, estamos sob ataque de ciborgues e tanques NEXUS. Por favor ajude enquanto..." + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "...podemos aguentar maus. Repetindo, por favor ajude, não podemos aguentar por muito tempo..." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "Ah, Comandante, que bom que você pode se juntar a nós aqui na base Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "Foi bem últi ter o Time Gama se estabelecer aqui nas montanhas." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "A absorção deles foi um prazer imenso." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "Obrigado por todas aquelas tecnologias que vocês recuperaram" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "Você, e não aqueles tolos do Novo Paradigma e da Coletividade." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "Agora, estou ativando todas as suas conexões sinápticas para que suas forças se unam ao Nexus." + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "Suas forças agora são minhas! Bem vindo ao Nexus." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "Comandante, você está provando ser mais resiliente que eu pensei." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "Que pena que você negou a se juntar a mim mais cedo." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "Mas não tem importância, já que você não vai ficar por aqui por muito mais tempo." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "Depois de muitas pesquisas e reprogramações, eu finalmente consegui pôr meus sistemas on-line novamente." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "Antes, eu destruí o mundo com fogo nuclear para liberar o caminho para meu futuro cibernético." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "Agora, pretendo moldar o mundo à minha imagem, removendo cirurgicamente ervas daninhas como você." + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "Meus Satélites Laser estão ligando. Eu pretendo testá-los em você para começar, Comandante!" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Anoitecer, 3 de Novembro de 2085" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "Terra, Órbita Superior" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "O Colapso" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19 de Janeiro de 2086" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "América do Norte" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Inverno Nuclear" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Meia Noite, 10 de Abril de 2086" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "Montanhas Rochosas" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "Segurança" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "Madrugada, 4 de Abril de 2100" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Um Novo Começo" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "O sistema NASDA foi desenvolvido para nos proteger. Era para ser a melhor defesa anti-nuclear. Acabou se tornado o nosso carrasco." + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "Relatórios dizem que a NASDA sofreu uma falha durante uma checagem de sistemas de rotina. Não acredite nisso. Alguém nos queria destruídos." + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "Aquelas ogivas estavam miradas em todas as cidades principais ao redor do mundo. A NASDA estava programada para começar o Colapso. Quando os contra-ataques começaram, as defesas a laser e silos anti-mísseis em terra falharam." + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "O mundo como o conhecíamos terminara..." + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "O Inverno Nuclear acertou em cheio. Doenças e fome acabou com muitos de nós que sobreviveram aos ataques nucleares. Guerras por latas de comida de cachorro acabou com muitos mais." + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "Fugimos de Seattle no início de 86. Ouvimos falar que as Rochosas estavam relativamente livres de radiação." + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "Depois de lutar contra bandos de ladrões, encontramos a base. O pessoal estava morto. Morto por uma das inúmeras doenças virulentas." + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "Arrombamos as portas, e tiramos os corpos de dentro." + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "Sabíamos que as coisas não seriam como antes, mas estávamos determinados a construír um novo mundo das ruínas. Reconstruímos os pads de pouso, e trouxemos os sistemas antigos de volta." + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Estávamos, finalmente, prontos para dar início ao Projeto." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "Após vários meses de luta, derrotamos NEXUS." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "A guerra iniciada pelo Dr. Reed chegara ao fim." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Recuperamos muitas das tecnologias que queríamos." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "Agora é hora de usá-las para reconstruir o mundo." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Lentamente, das cinzas, nos ergueremos novamente..." + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Hovercraft Reparo Pesado Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "4x4 Metralhadora Pesada Víbora" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Hovercraft Scourge Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Hovercraft Destruidor de Tanques Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Tanque Metralhadora Pesada Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Hovercraft Canhão Pesado Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Tanque Lançadeiro Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Tanque Canhão Pesado Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "VTOL Lançadeiro Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "VTOL Arrasa-Defesas Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Tanque Comandante Víbora" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Tanque Comandante Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Tanque Comandante Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Tanque Comandante Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Tanque Lançadeiro Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Tanque Canhão Pesado Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Tanque Destruidor de Tanques Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Tanque Scourge Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Tanque Metralhadora Pesada Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Tanque Reparo Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Hovercraft Reparos Pesado Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Hovercraft Caminhão CObra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Hovercraft Caminhão Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Hovercraft Caminhão Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Tanque Arrasa-Defesas Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Tanque Arrasa-Defesas Escorpião" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Tanque Arrasa-Defesas Mantis" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Tanque Lançadeiro Víbora" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "Híbrido Mini-Foguetes Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "Tanque Mini-Foguetes Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "Tanque Mini-Artilharia Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "Híbrido Inferno Cobra" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Hovercraft Canhão de Velocidade Píton" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Tanque Scourge Píton" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Tanque Canhão Gauss Píton" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Tanque Pulso Laser Píton" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tanque Pulso Laser Tigre" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tanque Laser Pesado Tigre" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Tanque Canhão Gauss Dragonete" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Tanque Pulso Laser Dragonete" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Tanque Laser Pesado Dragonete" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Híbrido Metralhadora Víbora" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Híbrido Incendiário Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Hovercraft Torrete de Reparos Pesado Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "4x4 Metralhadora Pesada Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Hovercraft Destruidor de Tanques Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Tanque Metralhadora Pesada Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Hovercraft Canhão Pesado Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "4x4 Metralhadora Pesada Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Hovercraft Metralhadora Pesada Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Tanque Metralhadora Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Tanque Metralhadora Dupla Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Hovercraft Canhão Médio Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Hovercraft Canhão Médio Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Tanque Canhão Médio Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Hovercraft Canhão Médio Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Hovercraft Canhão Pesado Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Tanque Acelerador de Partículas Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Tanque Pulso Laser Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "Tanque Lançadeiro Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "Tanque Lançadeiro Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Tanque Destruidor de Tanques Vingança" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Tanque Canhão Pesado Tigre" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "Tanque Perfuratriz Tigre" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "Tanque Perfuratriz Retribuição" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "Tanque Perfuratriz Vingança" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "Tanque Acelerador de Partículas Vingança" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "Tanque Canhão Gauss Vingança" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "Tanque Gauss-Scourge Vingança" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "Bombas Fragmentárias VTOL" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "VTOL Arrasa-Defesas Inseto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "VTOL Bombas Fragmentárias Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "VTOL Arrasa-Defesas Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "VTOL Lançadeiro Inseto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1874 -#, fuzzy msgid "VTOL HPV Cannon Bug VTOL" msgstr "VTOL Canhão de Hiper Velocidade Inseto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "VTOL Lançadeiro Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1876 -#, fuzzy msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "VTOL Canhão de Hiper Velocidade Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "VTOL Lançadeiro Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1878 -#, fuzzy msgid "VTOL HPV Cannon Mantis VTOL" msgstr "VTOL Canhão de Hiper Velocidade Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Tanque Torrete de Reparos Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "Tanque Lançadeiro Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Tanque Canhão Pesado Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "VTOL Lancçadeiro Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "VTOL Arrasa-Defesas Inseto" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "Tanque Comandante Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "Tanque Comandante Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "Tanque Comandante Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "Tanque Comandante Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "Tanque Lançadeiro Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Tanque Canhão Pesado Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Tanque Destruidor de Tanques Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "Tanque Scourge Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Tanque Metralhadora Pesada Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Tanque Torrete de Reparos Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Hovercraft Reparos Pesado Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Hovercraft Caminhão Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Hovercraft Caminhão Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Hovercraft Caminhão Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "Tanque Arrasa-Defesas Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Tanque Arrasa-Defesas Escorpião" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "Tanque Arrasa-Defesas Mantis" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "Tanque Lançadeiro Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Híbrido Mini-foguetes Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Tanque Mini-Foguetes Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Tanque Artilharia de Mini-Foguetes Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Híbrido Inferno Cobra" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1920 -#, fuzzy msgid "HPV Cannon Python Hover" -msgstr "Hovercraft Canhão Pesado Píton" +msgstr "Hovercraft Canhão Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "Tanque Scourge Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Tanque Canhão de Gauss Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Tanque Pulso Laser Píton" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Tanque Pulso Laser Tigre" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Tanque Laser Pesado Tigre" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Tanque Canhão Gauss Dragonete" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Tanque Pulso Laser Dragonete" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Tanque Laser Pesado Dragonete" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Híbrido Metralhadora Víbora" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Híbrido Incendiário Víbora" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Hovercraft Inferno Cobra" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "Híbrido Canhão Médio Cobra" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Hovercraft Inferno Píton" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Hovercraft Metralhadora de Assalto Píton" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Híbrido Metralhadora de Assalto Píton" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Híbrido Metralhadora Pesada Escorpião" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Hovercraft Canhão de Assalto Mantis" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Hovercraft Pulso Laser Leopardo" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Hovercraft Pulso Laser Pantera" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Hovercraft Acelerador de Partículas Tigre" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Hovercraft Pulso Laser Tigre" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Tanque Canhão de Plasma Dragonete" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Tanque Míssil Scourge Dragonete" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Hovercraft Laser Médio Retribuição " + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Híbrido Mini-foguetes Víbora" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Híbrido Artilharia de Mini-Foguetes Víbora" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "VTOL Bombas de Fósforo Mantis" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "VTOL Bombas Explosivas Mantis" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "VTOL Bombas Explosivas Retribuição" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "VTOL Míssil Scourge Retaliação" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "Velocidade de construção +10%" @@ -10631,7 +11580,7 @@ msgid "Upgraded battlefield computer system" msgstr "Sistema de computador de guerra melhorado" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Transporte Ciborgue" @@ -10660,7 +11609,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Híbrido Artilharia de Mini-Foguetes Cobra" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Radar Detector" @@ -10673,633 +11622,642 @@ msgid "Nexus Link" msgstr "Torrete de Conexão NEXUS" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Torrete de Conexão NEXUS" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "Muro de Durocreto" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Defesa Inferno" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Defesa AA Tornado" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Defesa AA Ciclone" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Muro de Pulso Laser" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Torre de Pulso Laser" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Artilharia de Mísseis Serafim" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "Artilharia de Mini-Foguetes" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Centro de Commando do Satélite Laser" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "Bombas Fragmentárias VTOL" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Canto de Muro da Coletividade" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Muro de NEXUS" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Cantode Muro Nexus" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Plascreto Mk3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Plastaço" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Plastaço Mk2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Plastaço Mk3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "Portão" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "Defesa reforçaca de Canhão de Hiper Velocidade" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Bateria de Mísseis Serafim" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Torre de Incendiário" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Defesa de Canhão de Hiper Velocidade" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Manufatura Automatizada" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Manufatura Automatizada Mk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Manufatura Automatizada Mk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Manufatura Robótica" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Manufatura Robótica Mk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Manufatura Robótica Mk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Estratégia de Guerra Avançada" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Produção Avançada da Fábrica Mk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Manufatura Auto-Replicante" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Produção Avançada da Fábrica Mk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Centro Automatizado de Reparos" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Centro Automatizado de Reparos Mk3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Centro de Reparos Robótico" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Centro de Reparos Robótico Mk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Centro de Reparos Avançado" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Centro de Reparos Robótico Mk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Centro de Reparos Avançado Mk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Centro de Reparos Avançado Mk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Auto-Reparo" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Torrete Móvel de Reparos Pesado" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Programa Intrusivo NEXUS" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Circuitos de Resistência a NEXUS" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Circuitos de Resistência a NEXUS Mk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Circuitos de Resistência a NEXUS Mk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Bombas Fragmentárias" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Munição de Bombas AP" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Ogiva Melhorada" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Ogiva Avançada" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Carregador de Obus Rápido" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Metralhadora de Alta Velocidade" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Computador de Predição de Alvos" -#: data/mp/messages/strings/names.txt:1174 -#, fuzzy +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" -msgstr "Mini-Foguetes AP" +msgstr "Mini-Foguetes OCAE" -#: data/mp/messages/strings/names.txt:1175 -#, fuzzy +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" -msgstr "Mini-Foguetes AP Mk2" +msgstr "Mini-Foguetes OCAE Mk2" -#: data/mp/messages/strings/names.txt:1176 -#, fuzzy +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" -msgstr "Mini-Foguetes AP Mk3" +msgstr "Mini-Foguetes OCAE Mk3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Torre de Metralhadora de Assalto" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Tanque Torrete de Reparos Cobra" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "Tanque Canhão de Hiper Velocidade Píton" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Hovercraft Arrasa-Defesas Cobra" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Melhora do Sensor Mk2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Melhora do Sensor Mk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Turbina Geradora à Vapor Mk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Turbina Geradora à Gás Mk2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Turbina Geradora à Gás Mk3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Turbina Geradora à Vapor Mk3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Incendiário de Termite" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Incendiário de Termite" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Granadeiro" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Granadeiro" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Engenheiro de Combate" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Mecânico Ciborgue" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Obus Incendiário" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Defesa de Obus Incendiário" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Lança-chamas de Plasmite" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Defesa Incendiária de Plasmite" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Morteiro Incendiário" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Vala de Morteiro Incendiário" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Armadura Térmica Ciborgue Superdensa" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Armadura Térmica Ciborgue Superdensa Mk2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Armadura Térmica Ciborgue Superdensa Mk3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Armadura Térmica Veícular Superdensa" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Armadura Térmica Veícular Superdensa Mk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Armadura Térmica Veícular Superdensa Mk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super Canhoneiro" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super Canhão Automático" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super Canhoneiro de Velocidade" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super Destruidor de Tanques" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Laser Pesado" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "VTOL Laser Pesado" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Defesa de Laser Pesado" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Canhão de Assalto Duplo" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Defesa de Canhão de Assalto Duplo" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Centro de Monitoramento Via Satélite" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Sensor de Grande Espectro" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Torre de Sensor de Grande Espectro" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Canhão de Plasma" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Defesa de Canhão de Plasma" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super Pulso Laser" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super Acelerador de Partículas" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super Scourge" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Torrete de Conexão NEXUS" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "Canhão PEM" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Torre de Canhão PEM" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Fortaleza de Acelerador de Massas" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Fortaleza de Acelerador de Massas" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Fortaleza de Canhão" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Bastião de Foguetes Pesados" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "Fortaleza de Mísseis" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "Chassis Pesado - Dragonete" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Dragonete" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "Chassis de Múltiplos Torretes - Dragão" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Dragão" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Gel de Plasmite Superquente" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "Gel de Plasmite Superquente Mk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "Gel de Plasmite Superquente Mk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "Morteiro PEM" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Vala de Morteiro PEM" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Laser AA Stormbringer" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Defesa Stormbringer" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Muro Vindicator" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Muro Whirlwind" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Muro Ciclone" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Muro Avenger" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Metralhadora de Assalto Dupla" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Defesa de Metralhadora de Assalto Dupla" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "Bombas de Plasmite VTOL" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Bomba de Plasmite" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "VTOL Lançador de Mísseis PEM" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Míssil PEM" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Torrete de Comando II" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Torrete de Comando III" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Torrete de Comando IV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "VTOL Canhão de Hiper Velocidade Inseto" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "VTOL Canhão de Hiper Velocidade Escorpião" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "VTOL Canhão de Hiper Velocidade Mantis" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "Tanque Artilharia de Mini-Foguetes Cobra" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "Hovercraft Canhão de Hiper Velocidade Píton" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "VTOL Plasmite Retribuição" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11429,33 +12387,29 @@ msgstr "Chinês Tradicional" msgid "Latin" msgstr "Latim" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Entre a senha aqui" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Não foi possível resolver o nome do servidor mestre (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Não foi possível communicar com o servidor de lobby! A porta TCP %u está aberta para tráfego saindo?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", mods:" - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 -#: src/intorder.c:787 +#: src/intorder.c:782 #: src/loadsave.c:256 #: src/multimenu.c:479 #: src/multimenu.c:1357 @@ -11603,15 +12557,15 @@ msgstr "hospedeiro" msgid "go directly to host screen" msgstr "ir diretamente à tela de hospedeiro" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:446 +#: src/configuration.c:447 +#: src/multistat.c:124 msgid "Player" msgstr "Jogador" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Novo Veículo" @@ -11650,18 +12604,18 @@ msgstr "Potência do Motor" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Peso" @@ -11675,655 +12629,652 @@ msgstr "Energia Total Necessária" msgid "Total Body Points" msgstr "Pontos de Vida Totais" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Uso de Energia" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Transportador" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hidra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Alcance de Sensor" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "Intensidade de Sensor" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "Intensidade de Interferência" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Pontos de Construção" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Alcance" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Dano" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Taxa-de-tiro" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "Velocidade no Ar" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Velocidade Nominal" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Velocidade Off-Road" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Velocidade em Ãgua" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Armas" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Sistemas" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Jogador saiu" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Jogador desconectou-se" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." msgstr "Não pode construir. Recursos petrolíferos queimados." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Danos %d%% - Experiência %d, %s" -#: src/display.c:1857 +#: src/display.c:1875 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Aliado - Danos %d%% - Experiência %d, %s" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" msgstr "O Caminhão ordenou a construção Oil Derrick" -#: src/display.c:2048 -#, fuzzy +#: src/display.c:2078 msgid "2 trucks ordered to build Oil Derrick" -msgstr "O Caminhão ordenou a construção Oil Derrick" +msgstr "2 caminhões designados para a construção do Extrator de Petróleo" -#: src/display.c:2049 -#, fuzzy, c-format +#: src/display.c:2079 +#, c-format msgid "%d trucks ordered to build Oil Derrick" -msgstr "O Caminhão ordenou a construção Oil Derrick" +msgstr "%d caminhões designados para a construção do Extrator de Petróleo" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Unidades Perdidas!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Estrutura Restaurada" -#: src/droid.c:2935 +#: src/droid.c:2956 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Grupo %u selecionado - %u Unidade" msgstr[1] "Grupo %u selecionado - %u Unidades" -#: src/droid.c:2948 +#: src/droid.c:2969 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u unidade atribuída ao Grupo %u" msgstr[1] "%u unidades atribuídas ao Grupo %u" -#: src/droid.c:2961 +#: src/droid.c:2982 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Centrado no Grupo %u - %u Unidade" msgstr[1] "Centrado no Grupo %u - %u Unidades" -#: src/droid.c:2965 +#: src/droid.c:2986 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Alinhamento com o grupo %u - %u Unidade" msgstr[1] "Alinhamento com o grupo %u - %u Unidades" -#: src/droid.c:3249 +#: src/droid.c:3270 msgid "Rookie" msgstr "Recruta" -#: src/droid.c:3250 +#: src/droid.c:3271 msgctxt "rank" msgid "Green" msgstr "Soldado" -#: src/droid.c:3251 +#: src/droid.c:3272 msgid "Trained" msgstr "Treinado" -#: src/droid.c:3252 +#: src/droid.c:3273 msgid "Regular" msgstr "Regular" -#: src/droid.c:3253 +#: src/droid.c:3274 msgid "Professional" msgstr "Tenente" -#: src/droid.c:3254 +#: src/droid.c:3275 msgid "Veteran" msgstr "Veterano" -#: src/droid.c:3255 +#: src/droid.c:3276 msgid "Elite" msgstr "Elite" -#: src/droid.c:3256 +#: src/droid.c:3277 msgid "Special" msgstr "Força Especial" -#: src/droid.c:3257 +#: src/droid.c:3278 msgid "Hero" msgstr "Herói" -#: src/frontend.c:252 +#: src/frontend.c:253 msgid "Single Player" msgstr "Campanha (Um Jogador)" -#: src/frontend.c:253 +#: src/frontend.c:254 msgid "Multi Player" msgstr "Jogo Multiplayer" -#: src/frontend.c:254 -#: src/frontend.c:312 +#: src/frontend.c:255 +#: src/frontend.c:313 msgid "Tutorial" msgstr "Aprendendo a Jogar" -#: src/frontend.c:255 +#: src/frontend.c:256 msgid "Options" msgstr "Opções" -#: src/frontend.c:256 +#: src/frontend.c:257 msgid "View Intro" msgstr "Ver Introdução" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" msgstr "Sair do Jogo" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "MENU PRINCIPAL" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "Início Rápido" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "APRENDENDO A JOGAR" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Voltar" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "Nova Campanha" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Iniciar Jogo vs. Computador" -#: src/frontend.c:372 +#: src/frontend.c:373 msgid "Challenges" msgstr "Desafios" -#: src/frontend.c:373 +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "Carregar Jogo" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "UM JOGADOR" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 -#: src/mission.c:2526 -#: src/mission.c:2631 +#: src/mission.c:2534 +#: src/mission.c:2639 msgid "Load Saved Game" msgstr "Carregar Jogo Salvo" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "MULTIPLAYER" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Hospedar Jogo" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "Conectar-se a um jogo" -#: src/frontend.c:584 -#: src/multiint.c:1254 +#: src/frontend.c:585 +#: src/multiint.c:1144 msgid "OPTIONS" msgstr "OPÇÕES" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "Opções de Jogo" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "Opções de Vídeo" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "Opções de Vídeo" -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "Opções de Ãudio" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "Opções de Mouse" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" msgstr "Configuração das Teclas" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "Tamanho de Vídeo" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "1X" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "Tela Cheia" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "Tremer a Tela" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "Ligado" -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "Desligado" -#: src/frontend.c:686 -#: src/multiint.c:1323 +#: src/frontend.c:687 +#: src/multiint.c:1213 msgid "Fog" msgstr "Nevoeiro" -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "Misto" -#: src/frontend.c:693 -#: src/frontend.c:768 -#: src/multiint.c:1325 +#: src/frontend.c:694 +#: src/frontend.c:761 +#: src/multiint.c:1215 msgid "Fog Of War" msgstr "Nevoeiro da Guerra" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Legendas" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Sombras" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" msgstr "OPÇÕES DE GRÃFICOS" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Volume da Voz" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "Volume dos Sons" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Volume da Música" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" msgstr "OPÇÕES DE ÃUDIO" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "Modo Gráfico*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "Em Janela" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Resolução*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Tamanho da Textura" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" msgstr "V-Sync*" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" msgstr "* Precisa reiniciar o jogo" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" msgstr "OPÇÕES DE VÃDEO" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" msgstr "Reverter Rotação" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "Travar Cursor" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" msgstr "Cursores Coloridos *" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" msgstr "Inverter Botões do Mouse" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" msgstr "* Pode afetar a performance" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" msgstr "OPÇÕES DE MOUSE" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "Dificuldade" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "Fácil" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "Média" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "Difícil" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "Velocidade da Tela" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "Idioma" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" msgstr "Cor das Unidades" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "OPÇÕES DE JOGO" -#: src/frontend.c:1693 -#: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Mods ativos:" +#: src/frontend.c:1706 +#: src/multiint.c:2125 +msgid "Mod: " +msgstr "Mod:" -#: src/hci.c:1363 +#: src/hci.c:1360 msgid "MAP SAVED!" msgstr "MAPA SALVO!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 msgid "GAME SAVED: " msgstr "JOGO SALVO:" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" msgstr "Impossível criar edifício" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." msgstr "Jogador %u é batota (debug menu) ele/ela mesma é uma nova estrutura: %s." -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." msgstr "Jogador %u é batota (debug menu) ele/ela mesma é uma nova característica: %s." -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Jogador %u é batota (debug menu) ele/ela mesma é um novo droid: %s." -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" msgstr "Comandos (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" msgstr "Mostrar Inteligência (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" msgstr "Desenvolvedor (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" msgstr "Padrão (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" msgstr "Pesquisa (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" msgstr "Construir (F3)" -#: src/hci.c:3891 -#: src/multiint.c:1370 +#: src/hci.c:3876 +#: src/multiint.c:1260 #: src/multimenu.c:763 msgid "Power" msgstr "Energia" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" msgstr "Espaço" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" msgstr "Colocar Espaços no mapa" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" msgstr "Unidade" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" msgstr "Colocar Unidade no mapa" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" msgstr "Estrutura" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" msgstr "Colocar estruturas no mapa" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" msgstr "Feito" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" msgstr "Colocar Artefatos no mapa" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" msgstr "Pausar ou resumir o jogo" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" msgstr "Alinhar a altitude dos objetos e do mapa" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Sair" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" msgstr "Sair do Jogo" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Barra de Progresso" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" msgstr "Ponto de Entrega da Fábrica" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" msgstr "Prender Produção" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "Tab mover para esquerda" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "Tab mover para direita" @@ -12349,8 +13300,8 @@ msgstr "Interface de Usuário Tática (Icone de Origem do Alvo): Esconder" #: src/ingameop.c:295 #: src/ingameop.c:523 -#: src/mission.c:2513 -#: src/mission.c:2634 +#: src/mission.c:2521 +#: src/mission.c:2642 msgid "Save Game" msgstr "Salvar" @@ -12366,6 +13317,17 @@ msgstr "O jogo não pode continuar sem o hosp." msgid "--> QUIT <--" msgstr "--> SAIR <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" +"O mod necessário não pôde ser carregado: %s \n" +"\n" +"Warzone tentará carregar o jogo sem ele." + #: src/intdisplay.c:197 msgid "Build Progress" msgstr "Progresso da Construção" @@ -12379,7 +13341,7 @@ msgid "Power Accrued" msgstr "Energia Coletada" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1397 msgid "PAUSED" msgstr "PAUSA" @@ -12506,287 +13468,287 @@ msgstr "Designar Produção de VTOL" msgid "Circle" msgstr "Circular" -#: src/keybind.c:134 +#: src/keybind.c:136 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Desculpe, as trapaças estão desativadas em jogos multiplayer." -#: src/keybind.c:140 +#: src/keybind.c:142 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Atenção! Essa trapaça é instável. Recomendamos contra o seu uso." -#: src/keybind.c:224 +#: src/keybind.c:226 msgid "Lets us see what you see!" msgstr "Permite-nos ver o que você vê!" -#: src/keybind.c:226 +#: src/keybind.c:228 msgid "Fine, weapon & sensor display is off!" msgstr "Está bem! Você não vê mais o alcançe das armas!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:359 +#, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Jogador %u é batota (debug menu) ele/ela mesma é um novo droid: %s." +msgstr "Jogador %u está trapaceando, dando a ele/ela mesma uma nova armada dróide de %s(s)." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:399 +#: src/keybind.c:429 +#: src/keybind.c:446 +#: src/keybind.c:490 +#: src/keybind.c:598 +#: src/keybind.c:638 +#: src/keybind.c:744 +#: src/keybind.c:1287 +#: src/keybind.c:1344 +#: src/keybind.c:1446 +#: src/keybind.c:1567 +#: src/keybind.c:1918 +#: src/keybind.c:1959 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Jogador %u) está trapaceando: %s" -#: src/keybind.c:398 +#: src/keybind.c:400 msgid "Hard as nails!!!" msgstr "Doer as unhas!!!" -#: src/keybind.c:412 +#: src/keybind.c:414 msgid "Takings thing easy!" msgstr "Rendimento, coisas fácil !" -#: src/keybind.c:428 +#: src/keybind.c:430 msgid "1000 big ones!!!" msgstr "1000 grandes!!!" -#: src/keybind.c:445 +#: src/keybind.c:447 msgid "Power overwhelming" msgstr "Poder esmagador" -#: src/keybind.c:460 +#: src/keybind.c:462 msgid "Back to normality!" msgstr "Voltar a normalidade!" -#: src/keybind.c:473 +#: src/keybind.c:475 msgid "Getting tricky!" msgstr "Obtendo complicado!" -#: src/keybind.c:489 +#: src/keybind.c:491 msgid "Twice as nice!" msgstr "Duas vezes mais agradável!" -#: src/keybind.c:500 +#: src/keybind.c:502 msgid "FPS display is enabled." msgstr "mostrar FPS é ativado." -#: src/keybind.c:504 +#: src/keybind.c:506 msgid "FPS display is disabled." msgstr "mostrar FPS é desativado." -#: src/keybind.c:525 +#: src/keybind.c:530 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; Limite de FPS: %d; PIEs %d; polys %d; Terr. polys %d; Membros %d" -#: src/keybind.c:557 +#: src/keybind.c:562 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Jogador %u) está trapaceando - No. Ciborgues: %d No. Estruturas: %d No. Características: %d" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power disabled" msgstr "Poder infinito desativado" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power enabled" msgstr "Poder infinito ativado" -#: src/keybind.c:634 +#: src/keybind.c:639 msgid "All items made available" msgstr "Todos os itens disponibilizados" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog on" msgstr "Nevoeiro ligado" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog off" msgstr "Nevoeiro desligado" -#: src/keybind.c:1179 +#: src/keybind.c:1176 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Atenção! Essa trapaça pode causar problemas no futuro! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1176 msgid "Ending Mission." msgstr "Fim da Missão." -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW ENABLED!" msgstr "TRAPAÇAS ATIVADAS!" -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW DISABLED!" msgstr "TRAPAÇAS DESATIVADAS" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode ON" msgstr "Modo Deus LIGADO" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode OFF" msgstr "Modo Deus DESLIGADO" -#: src/keybind.c:1360 +#: src/keybind.c:1357 msgid "View Aligned to North" msgstr "Ver alinhado com o Norte" -#: src/keybind.c:1369 +#: src/keybind.c:1366 #, c-format msgid "Trap cursor %s" msgstr "Travar Cursor %s" -#: src/keybind.c:1450 +#: src/keybind.c:1447 msgid "Researched EVERYTHING for you!" msgstr "Pesquisou TUDO para você!" -#: src/keybind.c:1481 +#: src/keybind.c:1503 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Jogador %u) está trapaceando :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1504 msgid "Researched" msgstr "Pesquisado" -#: src/keybind.c:1503 +#: src/keybind.c:1525 msgid "Only displaying energy bars when selected" msgstr "Exibindo barras de energia apenas quando selecionado" -#: src/keybind.c:1506 +#: src/keybind.c:1528 msgid "Always displaying energy bars for units" msgstr "Sempre exibindo barras de energia para unidades" -#: src/keybind.c:1509 +#: src/keybind.c:1531 msgid "Always displaying energy bars for units and structures" msgstr "Sempre exibindo barras de energia para unidades e estruturas" -#: src/keybind.c:1531 +#: src/keybind.c:1553 msgid "Demo mode off - Returning to normal game mode" msgstr "Desligando modo demonstração - Voltando ao normal" -#: src/keybind.c:1546 +#: src/keybind.c:1568 msgid "Debug menu is Open" msgstr "Menu de Debug está Aberto" -#: src/keybind.c:1577 +#: src/keybind.c:1599 msgid "Unable to locate any resource extractors!" msgstr "Impossível localizar extratores de petróleo!" -#: src/keybind.c:1798 +#: src/keybind.c:1820 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Branco como a neve... NEVE" -#: src/keybind.c:1804 +#: src/keybind.c:1826 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Garoa Paulista... CHUVA" -#: src/keybind.c:1810 +#: src/keybind.c:1832 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Previsão do tempo : Céu aberto em todas as cidades... TEMPO LIMPO" -#: src/keybind.c:1895 +#: src/keybind.c:1917 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Atenção! Isso pode ter consequências drásticas se usado incorretamente em missões." -#: src/keybind.c:1897 +#: src/keybind.c:1919 msgid "All enemies destroyed by cheating!" msgstr "Inimigos destruido por trapaça!" -#: src/keybind.c:1938 +#: src/keybind.c:1960 msgid "Destroying selected droids and structures!" msgstr "Destruindo ciborgues e estruturas selecionadas!" -#: src/keybind.c:2460 +#: src/keybind.c:2482 msgid "Centered on player HQ, direction NORTH" msgstr "Centralizado no QG, alinhado com o NORTE" -#: src/keybind.c:2472 +#: src/keybind.c:2494 msgid "Unable to locate HQ!" msgstr "Impossível localizar QG!" -#: src/keybind.c:2479 +#: src/keybind.c:2501 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "Limite de velocidade em formação removido devido a falhas." -#: src/keybind.c:2528 +#: src/keybind.c:2550 msgid "Vertical rotation direction: Normal" msgstr "Direção da rotação vertical: Normal" -#: src/keybind.c:2533 +#: src/keybind.c:2555 msgid "Vertical rotation direction: Flipped" msgstr "Direção da rotação vertical: Invertida" -#: src/keybind.c:2542 +#: src/keybind.c:2564 msgid "Screen shake when things die: Off" msgstr "Tremer a tela quando coisas morrem: Não" -#: src/keybind.c:2547 +#: src/keybind.c:2569 msgid "Screen shake when things die: On" msgstr "Tremer a tela quando coisas morrem: Sim" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2614 +#: src/keybind.c:2657 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Desculpe, não se pode mudar a velocidade em jogos multiplayer." -#: src/keybind.c:2613 -#: src/keybind.c:2656 +#: src/keybind.c:2635 #: src/keybind.c:2678 +#: src/keybind.c:2700 msgid "Game Speed Reset" msgstr "Velocidade do Jogo Restaurada" -#: src/keybind.c:2617 +#: src/keybind.c:2639 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Velocidade do Jogo Aumentada para %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2682 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Velocidade do Jogo Diminuída para %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2712 msgid "Build menu will reopen" msgstr "Menu de construção reabrirá" -#: src/keybind.c:2694 +#: src/keybind.c:2716 msgid "Build menu will not reopen" msgstr "Menu de construção não reabrirá" -#: src/keybind.c:2706 +#: src/keybind.c:2728 msgid "Radar showing friend-foe colors" msgstr "Radar exibe cores de aliados-inimigos" -#: src/keybind.c:2710 +#: src/keybind.c:2732 msgid "Radar showing player colors" msgstr "Radar exibe cores dos jogadores" -#: src/keybind.c:2731 +#: src/keybind.c:2753 msgid "Radar showing only objects" msgstr "Radar exibe apenas objetos" -#: src/keybind.c:2734 +#: src/keybind.c:2756 msgid "Radar blending terrain and height" msgstr "Radar exibe terreno e altitudes" -#: src/keybind.c:2737 +#: src/keybind.c:2759 msgid "Radar showing terrain" msgstr "Radar exibe terreno" -#: src/keybind.c:2740 +#: src/keybind.c:2762 msgid "Radar showing revealed terrain" msgstr "Radar exibe terreno revelado" -#: src/keybind.c:2743 +#: src/keybind.c:2765 msgid "Radar showing height" msgstr "Radar exibe altitudes" @@ -12795,10 +13757,10 @@ msgid "KEY MAPPING" msgstr "CONFIGURAÇÃO DAS TECLAS" #: src/keyedit.c:369 -#: src/multiint.c:638 -#: src/multiint.c:681 -#: src/multiint.c:1072 -#: src/multiint.c:1456 +#: src/multiint.c:528 +#: src/multiint.c:571 +#: src/multiint.c:962 +#: src/multiint.c:1346 msgid "Return To Previous Screen" msgstr "Return a Tela Anterior" @@ -13171,42 +14133,42 @@ msgstr "Liga/Desliga a reabertura do menu de construção" msgid "Could not save game!" msgstr "Impossível salvar o jogo!" -#: src/mission.c:2066 +#: src/mission.c:2074 msgid "Load Transport" msgstr "Carregar Transportes" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED by cheating!" msgstr "OBJETIVO ARQUIVADO por trapaça!" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED" msgstr "OBJETIVO ARQUIVADO" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED--and you cheated!" -msgstr "FLAHA NO OBJETIVO--e você trapaçeou!" +msgstr "FALHA NO OBJETIVO--e você trapaçeou!" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED" -msgstr "FLAHA NO OBJETIVO" +msgstr "FALHA NO OBJETIVO" -#: src/mission.c:2492 -#: src/mission.c:2532 -#: src/mission.c:2650 +#: src/mission.c:2500 +#: src/mission.c:2540 +#: src/mission.c:2658 msgid "Quit To Main Menu" msgstr "Sair para o Menu Principal" -#: src/mission.c:2500 +#: src/mission.c:2508 msgid "Continue Game" msgstr "Continuar o Jogo" -#: src/mission.c:2597 +#: src/mission.c:2605 msgid "GAME SAVED :" msgstr "JOGO SALVO :" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2634 +#: src/move.c:2650 #, c-format msgid "You found %u power in an oil drum." msgstr "Você encontrou %u de energia de um tambor de petróleo." @@ -13261,268 +14223,268 @@ msgstr "%s Formar uma alliança com %s" msgid "You Discover Blueprints For %s" msgstr "Você descobre projetos para %s" -#: src/multiint.c:572 +#: src/multiint.c:462 #: src/multilimit.c:192 msgid "Accept Settings" msgstr "Aceitar Configurações" -#: src/multiint.c:574 -#: src/multiint.c:1120 +#: src/multiint.c:464 +#: src/multiint.c:1010 msgid "Cancel" msgstr "Cancelar" -#: src/multiint.c:585 +#: src/multiint.c:475 msgid "IP Address or Machine Name" msgstr "Endereço IP ou Nome da Máquina" -#: src/multiint.c:635 +#: src/multiint.c:525 msgid "CONNECTION" msgstr "CONEXÃO" -#: src/multiint.c:648 +#: src/multiint.c:538 msgid "Lobby" msgstr "Lobby" -#: src/multiint.c:649 +#: src/multiint.c:539 msgid "IP" msgstr "IP" -#: src/multiint.c:841 +#: src/multiint.c:731 msgid "No games are available" msgstr "Não há jogos disponíveis" -#: src/multiint.c:844 +#: src/multiint.c:734 msgid "Game is full" msgstr "A sessão está cheia" -#: src/multiint.c:848 +#: src/multiint.c:738 msgid "You were kicked!" msgstr "Você foi expulso!" -#: src/multiint.c:851 +#: src/multiint.c:741 msgid "Wrong Game Version!" msgstr "Versão do Jogo Errada!" -#: src/multiint.c:854 +#: src/multiint.c:744 msgid "You have an incompatible mod." msgstr "Você tem um mod incompatível" -#: src/multiint.c:858 +#: src/multiint.c:748 msgid "Host couldn't send file?" msgstr "Hosp. não pôde enviar arquvo?" -#: src/multiint.c:862 +#: src/multiint.c:752 msgid "Incorrect Password!" msgstr "Senha Incorreta!" -#: src/multiint.c:865 +#: src/multiint.c:755 msgid "Host has dropped connection!" msgstr "O Hospedeiro terminou a conexão!" -#: src/multiint.c:869 +#: src/multiint.c:759 msgid "Connection Error" msgstr "Erro de conexão" -#: src/multiint.c:1013 +#: src/multiint.c:903 msgid "Searching" msgstr "Pesquisando" -#: src/multiint.c:1069 +#: src/multiint.c:959 msgid "GAMES" msgstr "JOGOS" -#: src/multiint.c:1077 +#: src/multiint.c:967 msgid "Refresh Games List" msgstr "Atualizar Lista de Jogos" -#: src/multiint.c:1097 +#: src/multiint.c:987 msgid "Enter Password:" msgstr "Entre a Senha:" -#: src/multiint.c:1118 +#: src/multiint.c:1008 msgid "OK" msgstr "OK" -#: src/multiint.c:1259 -#: src/multiint.c:1266 +#: src/multiint.c:1149 +#: src/multiint.c:1156 msgid "Select Game Name" msgstr "Selecionar Nome do Jogo" -#: src/multiint.c:1259 +#: src/multiint.c:1149 msgid "One-Player Skirmish" msgstr "Jogador vs. Computador" -#: src/multiint.c:1269 +#: src/multiint.c:1159 msgid "Select Map" msgstr "Selecionar o Mapa" -#: src/multiint.c:1277 +#: src/multiint.c:1167 msgid "Click to set Password" msgstr "Clique para requered uma senha" -#: src/multiint.c:1287 -#: src/multiint.c:1288 +#: src/multiint.c:1177 +#: src/multiint.c:1178 msgid "Scavengers" msgstr "Com Catadores" -#: src/multiint.c:1290 +#: src/multiint.c:1180 msgid "No Scavengers" msgstr "Sem Catadores" -#: src/multiint.c:1320 +#: src/multiint.c:1210 msgid "Select Player Name" msgstr "Selecionar o Nome do Jogador" -#: src/multiint.c:1326 +#: src/multiint.c:1216 msgid "Distance Fog" msgstr "Distância do Nevoeiro" -#: src/multiint.c:1337 +#: src/multiint.c:1227 #: src/multimenu.c:756 msgid "Alliances" msgstr "Alianças" -#: src/multiint.c:1340 +#: src/multiint.c:1230 msgid "No Alliances" msgstr "Sem Alianças" -#: src/multiint.c:1342 +#: src/multiint.c:1232 msgid "Allow Alliances" msgstr "Permitir Alianças" -#: src/multiint.c:1346 +#: src/multiint.c:1236 msgid "Locked Teams" msgstr "Trancar Times" -#: src/multiint.c:1372 +#: src/multiint.c:1262 msgid "Low Power Levels" msgstr "Nível de Energia Baixo" -#: src/multiint.c:1374 +#: src/multiint.c:1264 msgid "Medium Power Levels" msgstr "Nível de Energia Médio" -#: src/multiint.c:1376 +#: src/multiint.c:1266 msgid "High Power Levels" msgstr "Nível de Energia Alto" -#: src/multiint.c:1408 +#: src/multiint.c:1298 msgid "Base" msgstr "Bases" -#: src/multiint.c:1410 +#: src/multiint.c:1300 msgid "Start with No Bases" msgstr "Iniciar sem Bases" -#: src/multiint.c:1412 +#: src/multiint.c:1302 msgid "Start with Bases" msgstr "Iniciar com Bases" -#: src/multiint.c:1414 +#: src/multiint.c:1304 msgid "Start with Advanced Bases" msgstr "Iniciar com Bases Avançadas" -#: src/multiint.c:1446 +#: src/multiint.c:1336 msgid "Map Preview" msgstr "Previsualização do Mapa" -#: src/multiint.c:1448 +#: src/multiint.c:1338 msgid "Click to see Map" msgstr "Clique para ver o Mapa" -#: src/multiint.c:1462 +#: src/multiint.c:1352 msgid "Start Hosting Game" msgstr "Iniciar Hospedagem de Jogo" -#: src/multiint.c:1470 +#: src/multiint.c:1360 msgid "Show Structure Limits" msgstr "Exibir Limites da Estrutura" -#: src/multiint.c:1470 +#: src/multiint.c:1360 msgid "Set Structure Limits" msgstr "Definir Limites da Estrutura" -#: src/multiint.c:1533 +#: src/multiint.c:1423 msgid "Player colour" msgstr "Cor do jogador" -#: src/multiint.c:1549 +#: src/multiint.c:1439 msgid "Kick player" msgstr "Expulsar jogador" -#: src/multiint.c:1560 +#: src/multiint.c:1450 msgid "Player number" msgstr "Número do jogador" -#: src/multiint.c:1922 +#: src/multiint.c:1812 msgid "Team" msgstr "Time" -#: src/multiint.c:1955 +#: src/multiint.c:1845 msgid "Waiting for other players" msgstr "Aguardando outros jogadores" -#: src/multiint.c:1961 +#: src/multiint.c:1851 msgid "Click when ready" msgstr "Clique quando estiver pronto" -#: src/multiint.c:1965 +#: src/multiint.c:1855 msgid "READY?" msgstr "PRONTO?" -#: src/multiint.c:2002 +#: src/multiint.c:1892 msgid "PLAYERS" msgstr "JOGADORES" -#: src/multiint.c:2206 +#: src/multiint.c:2096 msgid "CHAT" msgstr "BATE-PAPO" -#: src/multiint.c:2240 +#: src/multiint.c:2130 msgid "All players need to have the same mods to join your game." msgstr "Todos os jogadores devem ter os mesmos mods para entrar no seu jogo." -#: src/multiint.c:2400 +#: src/multiint.c:2290 msgid "*** password is now required! ***" msgstr "*** a sessão está protegida por senha ***" -#: src/multiint.c:2407 +#: src/multiint.c:2297 msgid "*** password is NOT required! ***" msgstr "*** a sessão NÃO está protegida por senha ***" -#: src/multiint.c:2650 +#: src/multiint.c:2540 msgid "Sorry! Failed to host the game." msgstr "Desculpe! Falha ao hospedar uma sessão." -#: src/multiint.c:2735 +#: src/multiint.c:2625 msgid "'Locked Teams' mode enabled" msgstr "Modo 'Times Fixos' ativado" -#: src/multiint.c:2774 -#: src/multiint.c:2824 +#: src/multiint.c:2664 +#: src/multiint.c:2714 #, c-format msgid "The host has kicked %s from the game!" msgstr "O Host chutou %s do jogo!" -#: src/multiint.c:2899 +#: src/multiint.c:2789 msgid "Host is Starting Game" msgstr "O Host iniciou o Jogo" -#: src/multiint.c:3452 +#: src/multiint.c:3349 msgid "Players" msgstr "Jogadores" -#: src/multiint.c:3569 +#: src/multiint.c:3466 #, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "Enviando mapa: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3474 #, c-format msgid "Map: %d%% downloaded" msgstr "Mapa: %d%% baixado" -#: src/multiint.c:3603 +#: src/multiint.c:3500 msgid "HOST" msgstr "HOSPEDEIRO" @@ -13531,27 +14493,27 @@ msgstr "HOSPEDEIRO" msgid "Players Still Joining" msgstr "Jogadores ainda conectando" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s saiu do jogo" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "Transferência de arquivo foi abortada para %d." -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "%s (%u) possui um mod incompatível e foi expulso." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s está se conectando" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Mensagem do sistema:" @@ -13637,47 +14599,47 @@ msgstr "Fornecer Energia" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Expulsando jogador %s porque tentou evitar a checagem de integridade de dados!" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "(alliados" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(pessoal para" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[inválido]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Verde" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Laranja" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Cinza" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Preto" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Vermelho" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Azul" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Rosa" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Ciano" @@ -13820,12 +14782,12 @@ msgstr "VOCÊ FOI VITORIOSO" msgid "YOU WERE DEFEATED!" msgstr "VOCÊ FOI DERROTADO" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Sinal recebido de %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Sinal %d" @@ -13854,63 +14816,62 @@ msgstr "Impossível localizar Unidades de Sensor!" msgid "Unable to locate any Commanders!" msgstr "Impossível localizar Comandantes!" -#: src/structure.c:2838 -#, fuzzy +#: src/structure.c:2823 msgid "Command Control Limit Reached - Production Halted" -msgstr "Limite de Unidades de Controle Alcancado - Produção Interrompida" +msgstr "Limite de Unidade Alcançado - Produção Interrompida" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Unidade designada" msgstr[1] "%s - %u Unidades designadas" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Dano %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - %u de %u conectados" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Danificado Eletronicamente" -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "Prêmio - Relatório de Visibilidade" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "Prêmio - Propulsão" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" msgstr "Prêmio - Chassis" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "Prêmio - Arma" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" msgstr "Prêmio - Nada" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "Prêmio - Centro de Reparos" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" msgstr "Prêmio - Nada" @@ -13919,7 +14880,7 @@ msgstr "Prêmio - Nada" msgid "Launch Transport" msgstr "Lançar Transportes" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Reforços de aterragem" @@ -13951,6 +14912,29 @@ msgstr " - Finalizado em %s" msgid "Version %s%s%s%s" msgstr "Versão %s%s%s%s" +#~ msgid "Warzone 2100" +#~ msgstr "Warzone 2100" + +#~ msgid "Strategy Game" +#~ msgstr "Jogo de Estratégia" + +#~ msgid "Postnuclear realtime strategy" +#~ msgstr "Estratégia Realtime Pós-Nuclear" + +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "VTOL Bombas de Fósforo Mantis" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "VTOL Bombas Explosivas Mantis" + +#~ msgid ", mod: " +#~ msgstr ", mod:" + +#~ msgid "Active mods: " +#~ msgstr "Mods ativos:" + #~ msgid ": Unknown cheat code." #~ msgstr ": Código não reconhecido." @@ -14007,6 +14991,3 @@ msgstr "Versão %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "Desligar Ãudio no Multiplayer" - -#~ msgid "you are being a jerk." -#~ msgstr "você está sendo um idiota." diff --git a/po/ro.po b/po/ro.po index 5ba44e384..1323455d4 100644 --- a/po/ro.po +++ b/po/ro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2008-04-30 20:40+0000\n" "Last-Translator: Bogdan Ivanov \n" "Language-Team: Romanian \n" @@ -1580,7 +1580,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1612,8 +1612,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1947,7 +1947,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2964,7 +2964,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2986,7 +2986,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2995,7 +2995,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3004,7 +3004,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3040,7 +3040,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3171,7 +3171,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "" @@ -3849,14 +3849,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3868,14 +3868,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4013,7 +4013,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "" @@ -4565,14 +4565,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "" @@ -4929,14 +4932,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4945,16 +4952,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5251,6 +5261,8 @@ msgid "Good luck, Commander." msgstr "" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5259,6 +5271,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5267,10 +5280,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5279,6 +5294,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5305,6 +5321,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5744,7 +5761,7 @@ msgstr "" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "" @@ -5753,7 +5770,7 @@ msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "" @@ -5780,7 +5797,7 @@ msgstr "" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "" @@ -5811,7 +5828,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "" @@ -5828,7 +5845,7 @@ msgstr "" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "" @@ -5852,7 +5869,7 @@ msgstr "" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "" @@ -5864,7 +5881,7 @@ msgstr "" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5874,7 +5891,7 @@ msgstr "" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5891,7 +5908,7 @@ msgstr "" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5905,26 +5922,26 @@ msgid "Light Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "" @@ -5988,7 +6005,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -5997,9 +6014,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6009,8 +6026,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6019,7 +6036,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6113,8 +6130,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "" @@ -6218,14 +6235,14 @@ msgstr "" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "" @@ -6247,7 +6264,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "" @@ -6275,8 +6292,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6284,15 +6301,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6316,7 +6333,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6352,7 +6369,7 @@ msgstr "" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "" @@ -6364,7 +6381,7 @@ msgstr "" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "" @@ -6376,7 +6393,7 @@ msgstr "" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "" @@ -6388,7 +6405,7 @@ msgstr "" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "" @@ -6409,8 +6426,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6421,30 +6438,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6455,27 +6472,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6486,29 +6503,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6518,168 +6535,168 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6690,139 +6707,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "" @@ -6833,80 +6850,80 @@ msgstr "" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6916,74 +6933,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -6992,62 +7009,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7056,22 +7073,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7088,307 +7105,307 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7403,15 +7420,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7420,55 +7437,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7486,15 +7503,15 @@ msgstr "" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7505,49 +7522,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7585,54 +7602,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7669,172 +7686,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7844,84 +7861,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7942,292 +7959,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8236,17 +8253,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8263,252 +8280,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8517,57 +8534,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "" @@ -8576,142 +8593,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8720,367 +8737,367 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9101,7 +9118,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9110,49 +9127,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9161,37 +9178,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9473,336 +9490,1172 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +msgid "Time's up commander!!" +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9811,7 +10664,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9820,7 +10673,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9829,127 +10682,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -9958,7 +10811,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -9967,55 +10820,155 @@ msgid "HPV Cannon Python Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10629,7 +11582,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10658,7 +11611,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10671,630 +11624,642 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "" +#: data/mp/messages/strings/names.txt:1960 +msgid "Plasmite Retribution VTOL" +msgstr "" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 #, fuzzy @@ -11431,31 +12396,39 @@ msgstr "" msgid "Latin" msgstr "Latină" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +msgid "Strategy Game" +msgstr "" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11605,15 +12578,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Jucător" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "" @@ -11652,18 +12625,18 @@ msgstr "" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "" @@ -11677,190 +12650,190 @@ msgstr "" msgid "Total Body Points" msgstr "" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "Jucător" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "Jucător" -#: src/display.c:1661 +#: src/display.c:1660 #, fuzzy msgid "Cannot Build. Oil Resource Burning." msgstr "Nu pot construi. Resursa de petrol arde." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:1857 +#: src/display.c:1856 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "" -#: src/display.c:2048 +#: src/display.c:2047 msgid "2 trucks ordered to build Oil Derrick" msgstr "" -#: src/display.c:2049 +#: src/display.c:2048 #, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "" @@ -11908,11 +12881,11 @@ msgstr "" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "" @@ -11992,19 +12965,19 @@ msgid "Video Playback" msgstr "" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "" @@ -12013,43 +12986,42 @@ msgid "Screen Shake" msgstr "" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "" @@ -12059,147 +13031,146 @@ msgid "Fog" msgstr "" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "" -#: src/frontend.c:729 +#: src/frontend.c:721 msgid "GRAPHICS OPTIONS" msgstr "" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "" -#: src/frontend.c:875 +#: src/frontend.c:867 msgid "AUDIO OPTIONS" msgstr "" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "" -#: src/frontend.c:976 +#: src/frontend.c:968 msgid "VIDEO OPTIONS" msgstr "" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 msgid "MOUSE OPTIONS" msgstr "" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12231,106 +13202,106 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "Gazda a părăsit jocul!" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12374,6 +13345,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 msgid "Build Progress" msgstr "" @@ -12387,7 +13366,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "" @@ -12514,287 +13493,287 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13213,8 +14192,8 @@ msgstr "" msgid "GAME SAVED :" msgstr "" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13520,21 +14499,21 @@ msgstr "" msgid "Host is Starting Game" msgstr "" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13543,27 +14522,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "Localizarea sistemului" @@ -13650,47 +14629,47 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Verde" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Portocaliu" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Gri" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Negru" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "RoÅŸu" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Albastru" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Roz" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Azuriu" @@ -13833,12 +14812,12 @@ msgstr "" msgid "YOU WERE DEFEATED!" msgstr "" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -13867,62 +14846,62 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "" msgstr[1] "" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -13931,7 +14910,7 @@ msgstr "" msgid "Launch Transport" msgstr "" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "" diff --git a/po/ru.po b/po/ru.po index 05377d0e9..bae866542 100644 --- a/po/ru.po +++ b/po/ru.po @@ -10,10 +10,11 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" -"PO-Revision-Date: 2010-01-28 19:50+0600\n" -"Last-Translator: Maxim \n" +"POT-Creation-Date: 2010-06-10 18:14+0200\n" +"PO-Revision-Date: 2010-06-10 02:04+0300\n" +"Last-Translator: Filipp Chertiev \n" "Language-Team: Russian <>\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -30,7 +31,7 @@ msgstr "ИÑÑледование поÑтройки завершено" #: data/base/messages/messages.rmsg:14 msgid "Power Research Completed" -msgstr "иÑÑледование генератора завершено" +msgstr "ИÑÑледование генератора завершено" #: data/base/messages/messages.rmsg:24 msgid "Computer Research Completed" @@ -722,7 +723,7 @@ msgstr "ДоÑтупно новое оружие" #: data/base/messages/resmessages12.rmsg:122 #: data/mp/messages/resmessages12.rmsg:122 msgid ".50-calibre heavy machinegun" -msgstr "ТÑжелый пулемет 0,5 калибра" +msgstr "ТÑжелый пулемет калибра .50" #: data/base/messages/resmessages12.rmsg:123 #: data/base/messages/resmessages1.rmsg:617 @@ -863,7 +864,7 @@ msgstr "Улучшение пулемёта" #: data/base/messages/resmessages12.rmsg:135 #: data/mp/messages/resmessages12.rmsg:135 msgid "Chaingun mechanism replaces belt-feed" -msgstr "цепной механизм подачи патронов пулемета заменÑетÑÑ Ð¿ÑƒÐ»ÐµÐ¼ÐµÑ‚Ð½Ð¾Ð¹ лентой" +msgstr "Цепной механизм подачи патронов заменил пулеметную ленту" #: data/base/messages/resmessages12.rmsg:136 #: data/base/messages/resmessages23.rmsg:175 @@ -1062,7 +1063,7 @@ msgstr "Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð°Ñ€Ñ‚Ð¸Ð»Ð»ÐµÑ€Ð¸Ñ, можно привÑзать к #: data/base/messages/resmessages12.rmsg:188 #: data/mp/messages/resmessages12.rmsg:188 msgid "Best Targets: Vehicles and Emplacements" -msgstr "лучшие цели: наземный транÑпорт и орудийные уÑтановки" +msgstr "Лучшие цели: наземный транÑпорт и орудийные уÑтановки" #: data/base/messages/resmessages12.rmsg:199 #: data/base/messages/resmessages12.rmsg:238 @@ -1084,7 +1085,7 @@ msgstr "Улучшение ракет" #: data/base/messages/resmessages12.rmsg:200 #: data/mp/messages/resmessages12.rmsg:200 msgid "Autoloader increases reload rate" -msgstr "Ðвтомат зарÑÐ¶Ð°Ð½Ð¸Ñ ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ð²Ð°ÐµÑ‚ ÑкороÑÑ‚ÑŒ перезарÑдки" +msgstr "ÐвтозарÑдник увеличивает ÑкороÑÑ‚ÑŒ перезарÑдки" #: data/base/messages/resmessages12.rmsg:201 msgid "Increases Rocket ROF" @@ -1585,7 +1586,7 @@ msgstr "улучшает производÑтво киборгов" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Ðвтоматизированное киберпроизводÑтво" @@ -1617,8 +1618,8 @@ msgstr "вÑе киберзаводы улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ðµ #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Завод киборгов" @@ -1779,7 +1780,7 @@ msgstr "Увеличивает прочноÑÑ‚ÑŒ" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Улучшенные Ñтройматериалы" @@ -1828,7 +1829,7 @@ msgstr "Хороший разведывательный транÑпорт" #: data/base/messages/resmessages1.rmsg:384 #: data/mp/messages/resmessages1.rmsg:385 msgid "Low power cost and low production times" -msgstr "ÐÐ¸Ð·ÐºÐ°Ñ Ñтоимоть и быÑтро производитÑÑ." +msgstr "ÐÐ¸Ð·ÐºÐ°Ñ ÑтоимоÑÑ‚ÑŒ и быÑтро производитÑÑ" #: data/base/messages/resmessages1.rmsg:394 #: data/mp/messages/resmessages1.rmsg:395 @@ -1850,7 +1851,7 @@ msgstr "БыÑтрее Гадюки" #: data/base/messages/resmessages1.rmsg:397 #: data/mp/messages/resmessages1.rmsg:398 msgid "Power cost and production time similar to Viper" -msgstr "СтоимоÑÑ‚ÑŒ и короÑÑ‚ÑŒ производÑтва как у Гадюки" +msgstr "СтоимоÑÑ‚ÑŒ и ÑкороÑÑ‚ÑŒ производÑтва как у Гадюки" #: data/base/messages/resmessages1.rmsg:407 #: data/mp/messages/resmessages1.rmsg:408 @@ -1952,7 +1953,7 @@ msgstr "Улучшение двигателÑ" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Инжекторный двигатель" @@ -2109,7 +2110,7 @@ msgstr "СкороÑÑ‚ÑŒ: низкаÑ" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Движитель - колеÑа" @@ -2969,7 +2970,7 @@ msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "РоботопроизводÑтво киборгов" @@ -2991,7 +2992,7 @@ msgstr "Увеличивает производительноÑÑ‚ÑŒ заводо #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Углубленный анализ ÑинаптичеÑкой ÑвÑзи" @@ -3000,7 +3001,7 @@ msgstr "Углубленный анализ ÑинаптичеÑкой ÑвÑз #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Укрепленные Ñтройматериалы" @@ -3009,7 +3010,7 @@ msgstr "Укрепленные Ñтройматериалы" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "РоботопроизводÑтво ВВС" @@ -3045,7 +3046,7 @@ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ñ€Ñдки ВВС уменьшено" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "ÐÐ²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ñ€Ñдка ВВС" @@ -3176,7 +3177,7 @@ msgstr "дороже и дольше производить, чем Кобру" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Двигатель Ñ Ñ‚ÑƒÑ€Ð±Ð¾Ð½Ð°Ð´Ð´ÑƒÐ²Ð¾Ð¼" @@ -3246,7 +3247,7 @@ msgstr "Улучшен движитель машин" #: data/mp/messages/resmessages3.rmsg:735 #: data/mp/messages/strings/resstrings.txt:627 msgid "All half-tracks upgraded automatically" -msgstr "Ð’Ñе полугуÑеницы автоматичеÑки улучшены" +msgstr "Ð’Ñе полугуÑеницы улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" #: data/base/messages/resmessages2.rmsg:553 #: data/base/messages/resmessages3.rmsg:748 @@ -3255,7 +3256,7 @@ msgstr "Ð’Ñе полугуÑеницы автоматичеÑки улучше #: data/mp/messages/resmessages3.rmsg:748 #: data/mp/messages/strings/resstrings.txt:637 msgid "All hovers upgraded automatically" -msgstr "Ð’Ñе машины на воздушной подушке (Ховеры) улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" +msgstr "Ð’Ñе ховеры улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" #: data/base/messages/resmessages2.rmsg:566 #: data/base/messages/resmessages3.rmsg:761 @@ -3264,7 +3265,7 @@ msgstr "Ð’Ñе машины на воздушной подушке (Ховеры #: data/mp/messages/resmessages3.rmsg:761 #: data/mp/messages/strings/resstrings.txt:647 msgid "All tracks upgraded automatically" -msgstr "Ð’Ñе гуÑеничные движители улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" +msgstr "Ð’Ñе гуÑеницы улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" #: data/base/messages/resmessages2.rmsg:579 #: data/base/messages/resmessages3.rmsg:774 @@ -3273,7 +3274,7 @@ msgstr "Ð’Ñе гуÑеничные движители улучшаютÑÑ Ð°Ð² #: data/mp/messages/resmessages3.rmsg:774 #: data/mp/messages/strings/resstrings.txt:657 msgid "All wheels upgraded automatically" -msgstr "Ð’Ñе колеÑные движители улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" +msgstr "Ð’Ñе колеÑа улучшаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" #: data/base/messages/resmessages2.rmsg:589 #: data/base/messages/resmessages2.rmsg:602 @@ -3723,7 +3724,7 @@ msgstr "Вооружен противотанковой ракетой Бич" #: data/base/messages/resmessages3.rmsg:135 #: data/mp/messages/resmessages3.rmsg:135 msgid "Armed with flashlight laser" -msgstr "Вооружен лазером вÑпышкой" +msgstr "Вооружен лазером Ð’Ñпышка" #: data/base/messages/resmessages3.rmsg:147 #: data/base/messages/resmessages3.rmsg:160 @@ -3755,7 +3756,7 @@ msgstr "Вооружен Штурмовой пушкой" #: data/base/messages/resmessages3.rmsg:200 #: data/mp/messages/resmessages3.rmsg:200 msgid "Armed with Flashlight Laser" -msgstr "вооружен лазером-вÑпышкой" +msgstr "Вооружен лазером Ð’Ñпышка" #: data/base/messages/resmessages3.rmsg:202 #: data/mp/messages/resmessages3.rmsg:202 @@ -3795,7 +3796,7 @@ msgstr "Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð°Ñ‚Ð°Ñ€ÐµÑ ÑтрелÑет ракетами Ðов #: data/base/messages/resmessages3.rmsg:291 #: data/mp/messages/resmessages3.rmsg:291 msgid "Armored strongpoint with Flashlight laser" -msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð»Ð°Ð¼Ð¿Ð¾Ð¹ вÑпышкой" +msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼ Ð’Ñпышка" #: data/base/messages/resmessages3.rmsg:304 msgid "Armored strongpoint with Pulse Laser" @@ -3829,7 +3830,7 @@ msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»Ñ‘Ð½Ð½Ð°Ñ Ð¾Ð±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¿Ñ€Ð¾ #: data/base/messages/resmessages3.rmsg:382 #: data/mp/messages/resmessages3.rmsg:382 msgid "Armored hardpoint with Flashlight laser" -msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»Ñ‘Ð½Ð½Ð°Ñ Ð¾Ð±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼ \"Ð’Ñпышка\"" +msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»Ñ‘Ð½Ð½Ð°Ñ Ð¾Ð±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼ Ð’Ñпышка" #: data/base/messages/resmessages3.rmsg:395 #: data/mp/messages/resmessages3.rmsg:395 @@ -3854,14 +3855,14 @@ msgstr "ÐŸÐ°Ñ€Ð¾Ð²Ð°Ñ Ñ‚ÑƒÑ€Ð±Ð¸Ð½Ð° повышает выход генера #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "ИÑÑледование нейроÑинапÑа" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Продвинутые Ñтройматериалы" @@ -3873,14 +3874,14 @@ msgstr "Строительные материалы выÑокой плотно #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Продвинутое производÑтво ВВС" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Роботоперевооружение ВВС" @@ -3989,7 +3990,7 @@ msgstr "Дорог Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ñтва" #: data/base/messages/resmessages3.rmsg:641 #: data/mp/messages/resmessages3.rmsg:641 msgid "NEXUS Medium Body" -msgstr "Средний ÐºÐ¾Ñ€Ð¿ÑƒÑ ÐЕСУС" +msgstr "Средний ÐºÐ¾Ñ€Ð¿ÑƒÑ ÐЕКСУС" #: data/base/messages/resmessages3.rmsg:644 #: data/mp/messages/resmessages3.rmsg:644 @@ -4018,7 +4019,7 @@ msgstr "Очень дорого производить" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Газотурбинный двигатель" @@ -4570,14 +4571,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Лазерный целеуказатель наводит ÑнарÑд на цель" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "ЦЕЛЬ: Обнаружить и заполучить технологию нейроÑинапÑа" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "ОÑновать базу, затем найти ДоÑдерные ÑооружениÑ." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Это Ñооружение Ñодержит жизненно важную технологию Ð´Ð»Ñ ÑƒÑпеха Проекта." @@ -4596,7 +4600,7 @@ msgstr "Защитите базу, затем уничтожьте Ð»Ð°Ð³ÐµÑ€Ñ #: data/base/messages/strings/cam1strings.txt:11 #: data/base/messages/strings/cam1strings.txt:65 msgid "ALPHA BASE MISSION: Power Surge Detected" -msgstr "МИССИЯ ÐРБÐЗЕ ÐЛЬФÐ: Обнаружен Ð²Ñ‹Ð±Ñ€Ð¾Ñ Ñнергии." +msgstr "МИССИЯ ÐРБÐЗЕ ÐЛЬФÐ: Обнаружен Ð²Ñ‹Ð±Ñ€Ð¾Ñ Ñнергии" #: data/base/messages/strings/cam1strings.txt:12 msgid "A power surge has been detected to the south of our position." @@ -4616,7 +4620,7 @@ msgstr "ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° владеет более Ñовершен #: data/base/messages/strings/cam1strings.txt:17 msgid "They may have the synaptic link technology, it's vital we retrieve it." -msgstr "Они имеют технологию ÑинаптичеÑкой ÑвÑзи, жизненно важно заполучить ее." +msgstr "Они имеют технологию нейроÑвÑзи, жизненно важно заполучить её." #: data/base/messages/strings/cam1strings.txt:19 msgid "TRANSPORT MISSION: Locate and Recover Artifacts" @@ -4673,11 +4677,11 @@ msgstr "МИССИЯ ÐРВЫЛЕТЕ: РаÑположение нейроÑв #: data/base/messages/strings/cam1strings.txt:36 msgid "The New Paradigm are analyzing synaptic link technology at this location." -msgstr "ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° занимаетÑÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¾Ð¼ технологии ÑинаптичеÑкой ÑвÑзи в данной зоне." +msgstr "ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° занимаетÑÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¾Ð¼ технологии нейроÑвÑзи в данной зоне." #: data/base/messages/strings/cam1strings.txt:37 msgid "Assemble an attack team and recover the synaptic link technology." -msgstr "Соберите атакующую команду и заполучите технологию ÑинаптичеÑкой ÑвÑзи." +msgstr "Соберите атакующую команду и заполучите технологию нейроÑвÑзи." #: data/base/messages/strings/cam1strings.txt:39 msgid "TRANSPORT MISSION: New Objectives" @@ -4839,11 +4843,11 @@ msgstr "Дополнительно" #: data/base/messages/strings/cam1strings.txt:109 msgid "The synaptic link technology was at this location but was removed." -msgstr "Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ ÑинаптичеÑкой ÑвÑзи находилаÑÑŒ здеÑÑŒ, однако была ÑÐµÐ¹Ñ‡Ð°Ñ ÐµÑ‘ здеÑÑŒ нет" +msgstr "Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð½ÐµÐ¹Ñ€Ð¾ÑвÑзи находилаÑÑŒ здеÑÑŒ, однако была ÑÐµÐ¹Ñ‡Ð°Ñ ÐµÑ‘ здеÑÑŒ нет." #: data/base/messages/strings/cam1strings.txt:111 msgid "Establish a forward base then continue the search for the synaptic link." -msgstr "ПоÑтройте передовую базу и продолжите поиÑк технологии ÑинаптичеÑкой ÑвÑзи" +msgstr "ПоÑтройте передовую базу и продолжите поиÑк технологии нейроÑвÑзи." #: data/base/messages/strings/cam1strings.txt:114 msgid "INCOMING TRANSMISSION" @@ -4883,11 +4887,11 @@ msgstr "Первые иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÑŽÑ‚, что #: data/base/messages/strings/cam1strings.txt:132 msgid "Base Beta is under heavy attack, they may need assistance." -msgstr "База бета подвергаетÑÑ Ñ‚Ñжелым атакам, базе нужна ваша помощь" +msgstr "База бета подвергаетÑÑ Ñ‚Ñжелым атакам, базе нужна ваша помощь." #: data/base/messages/strings/cam1strings.txt:133 msgid "We will send further updates as they arrive." -msgstr "Мы будем информировать Ð²Ð°Ñ Ð¿Ð¾ мере поÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…" +msgstr "Мы будем информировать Ð²Ð°Ñ Ð¿Ð¾ мере поÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…." #: data/base/messages/strings/cam1strings.txt:136 msgid "This transmission was intercepted a few minutes ago." @@ -4895,7 +4899,7 @@ msgstr "Эта передача была перехвачена неÑкольк #: data/base/messages/strings/cam1strings.txt:137 msgid "It originates from the east." -msgstr "Это проиÑходит Ñ Ð²Ð¾Ñточной Ñтороны" +msgstr "Это проиÑходит Ñ Ð²Ð¾Ñточной Ñтороны." #: data/base/messages/strings/cam1strings.txt:140 msgid "POWER MODULE ARTIFACT" @@ -4919,53 +4923,60 @@ msgstr "Разгромите муÑорщиков и захватите вÑе #: data/base/messages/strings/cam1strings.txt:150 msgid "Congratulations on defeating the New Paradigm, this sector is now secure." -msgstr "ПоздравлÑем! ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° повержена. Сектор безопаÑен" +msgstr "ПоздравлÑем! ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° повержена. Сектор безопаÑен." #: data/base/messages/strings/cam1strings.txt:151 msgid "The Nexus Intruder Program was in the New Paradigm system." -msgstr "Ð’ СиÑтеме новой Парадигмы была обнаружена программа Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ ÐЕКСУС" +msgstr "Ð’ СиÑтеме новой Парадигмы была обнаружена программа Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ ÐЕКСУС." #: data/base/messages/strings/cam1strings.txt:152 msgid "We recorded two conversations with it, extracts follow..." -msgstr "Мы зделали запиÑÑŒ двух переговоров Ñ Ð½Ð¸Ð¼, из которых Ñледует..." +msgstr "Мы Ñделали запиÑÑŒ двух переговоров Ñ Ð½Ð¸Ð¼, из которых Ñледует..." #: data/base/messages/strings/cam1strings.txt:155 msgid "We'll keep you informed of further developments" msgstr "Мы будем держать Ð²Ð°Ñ Ð² курÑе дальнейших Ñобытий" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Командир, вы должны помочь команде Бета" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "МИССИЯ ÐРБÐЗЕ БЕТÐ: ВоÑточный Ñектор" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." -msgstr "По прибытию вы должны принÑÑ‚ÑŒ командование базой" +msgstr "По прибытию вы должны принÑÑ‚ÑŒ командование базой." #: data/base/messages/strings/cam2strings.txt:6 msgid "You must defend it and hold it." -msgstr "Ð’Ñ‹ должны защитить и отÑтоÑÑ‚ÑŒ её" +msgstr "Ð’Ñ‹ должны защитить и отÑтоÑÑ‚ÑŒ её." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "МИССИЯ ÐРБÐЗЕ БЕТÐ: Защита и укрепление" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." -msgstr "Ðадежно укрепите периметр и поÑтройте ÑÐ¾Ð¾Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ ÐŸÐ’Ðž" +msgstr "Ðадежно укрепите периметр и поÑтройте ÑÐ¾Ð¾Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ ÐŸÐ’Ðž." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." -msgstr "ДоÑтупны новые технологии" +msgstr "ДоÑтупны новые технологии." #: data/base/messages/strings/cam2strings.txt:14 msgid "We are currently detecting coded bitstream signals." -msgstr "Мы обнаружили закодированные пооковые Ñигналы" +msgstr "Мы обнаружили закодированные пооковые Ñигналы." #: data/base/messages/strings/cam2strings.txt:15 #: data/base/messages/strings/cam2strings.txt:39 @@ -5019,11 +5030,11 @@ msgstr "МИССИЯ ÐРБÐЗЕ БЕТÐ: Удержать любой цен #: data/base/messages/strings/cam2strings.txt:43 msgid "We are detecting ground and aerial forces from the north." -msgstr "Обнаружены наземные и воздушные Ñиды противника на Ñевере" +msgstr "Обнаружены наземные и воздушные Ñилы противника на Ñевере." #: data/base/messages/strings/cam2strings.txt:44 msgid "Hold your position and repulse these attacks, then eradicate the enemy's northern base." -msgstr "Удерживайте позицию и отразите их атаки, затем уничтожте Ñеверную базу противника" +msgstr "Удерживайте позицию и отразите их атаки, затем уничтожьте Ñеверную базу противника." #: data/base/messages/strings/cam2strings.txt:47 msgid "TRANSPORT MISSION: Intercept convoy." @@ -5031,19 +5042,19 @@ msgstr "МИССИЯ ÐРВЫЛЕТЕ: Перехват конвоÑ." #: data/base/messages/strings/cam2strings.txt:48 msgid "Data from the Collective's base indicates the presence of the NEXUS intruder program." -msgstr "Данные Ñ Ð±Ð°Ð·Ñ‹ ÐльÑнÑа указывают на приÑутÑтвие программы Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ ÐЕКСУС" +msgstr "Данные Ñ Ð±Ð°Ð·Ñ‹ ÐльÑнÑа указывают на приÑутÑтвие программы Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ ÐЕКСУС." #: data/base/messages/strings/cam2strings.txt:49 msgid "Before NEXUS switched itself off-line we accessed the following." -msgstr "перед тем как ÑвÑзь Ñ ÐЕКСУСом пропала нам удалоÑÑŒ выÑÑнить Ñледующее." +msgstr "Перед тем как ÑвÑзь Ñ ÐЕКСУС пропала нам удалоÑÑŒ выÑÑнить Ñледующее." #: data/base/messages/strings/cam2strings.txt:51 msgid "An enemy commander is collecting a shipment from NEXUS at this location." -msgstr "Ð’ Ñтом меÑте один из командиров противника получал транÑпортные поÑтавки от ÐЕКСУСа." +msgstr "Ð’ Ñтом меÑте один из командиров противника получал транÑпортные поÑтавки от ÐЕКСУС." #: data/base/messages/strings/cam2strings.txt:52 msgid "Once at the LZ, eradicate the enemy commander and recover the shipment." -msgstr "Укрепите ЗВ, уничтожте вражеÑкого командира и захватите груз" +msgstr "Укрепите зону выÑадки, уничтожьте вражеÑкого командира и захватите груз." #: data/base/messages/strings/cam2strings.txt:53 msgid "Then return to the LZ." @@ -5051,7 +5062,7 @@ msgstr "Затем вернитеÑÑŒ к зоне выÑадки." #: data/base/messages/strings/cam2strings.txt:55 msgid "Disturbing news regarding NASDA." -msgstr "Тревожные новоÑти отноÑительно NASDA" +msgstr "Тревожные новоÑти отноÑительно NASDA." #: data/base/messages/strings/cam2strings.txt:58 #: data/base/messages/strings/cam2strings.txt:63 @@ -5060,15 +5071,15 @@ msgstr "МИССИЯ ÐРВЫЛЕТЕ: Ðайти и уничтожить ко #: data/base/messages/strings/cam2strings.txt:59 msgid "The shipment you recovered was a decoy." -msgstr "Захваченный вами груз оказалÑÑ Ð¿Ñ€Ð¸Ð¼Ð°Ð½ÐºÐ¾Ð¹" +msgstr "Захваченный вами груз оказалÑÑ Ð¿Ñ€Ð¸Ð¼Ð°Ð½ÐºÐ¾Ð¹." #: data/base/messages/strings/cam2strings.txt:60 msgid "We have detected another convoy proceeding along the river." -msgstr "Мы заÑекли другой конвой, переÑекающий реку" +msgstr "Мы заÑекли другой конвой, переÑекающий реку." #: data/base/messages/strings/cam2strings.txt:64 msgid "You are to intercept the convoy and recover its cargo." -msgstr "Перехватите конвой и захватите их груз" +msgstr "Перехватите конвой и захватите их груз." #: data/base/messages/strings/cam2strings.txt:65 msgid "Enemy VTOLs are likely to be flying close escort." @@ -5085,7 +5096,7 @@ msgstr "Коллектив обрабатывает и уничтожает гр #: data/base/messages/strings/cam2strings.txt:73 msgid "You are to rescue the civilians." -msgstr "СпаÑите гражданÑких" +msgstr "СпаÑите гражданÑких." #: data/base/messages/strings/cam2strings.txt:74 msgid "Then destroy the camp." @@ -5151,7 +5162,7 @@ msgstr "ПроÑледуйте из зоны выÑадки к реактору #: data/base/messages/strings/cam2strings.txt:103 msgid "Do not allow the Collective to bring the reactor on-line." -msgstr "Ðе позвольте Коллективу включить реактор." +msgstr "Ðе позвольте ÐльÑнÑу включить реактор." #: data/base/messages/strings/cam2strings.txt:106 msgid "BETA BASE MISSION: Capture NASDA Central" @@ -5256,6 +5267,8 @@ msgid "Good luck, Commander." msgstr "Удачи, Командующий." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "МИССИЯ ÐРВЫЛЕТЕ: Северные Ñектор" @@ -5264,6 +5277,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "ПоздравлÑем, Ð’Ñ‹ уÑпешно Ñвакуировали базу Бета." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "ÐЕКСУС получил доÑтуп к Ñдерным ракетам и Ñ Ð¸Ñ… помощью хочет уничтожить Проект." @@ -5272,10 +5286,12 @@ msgid "Take your forces to the Northern Sector" msgstr "отправте ваши войÑка в Северный Ñектор." #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." -msgstr "УÑтановите и защитите ЗВ в горах. ПоÑтройте передовую базу." +msgstr "УÑтановите и защитите зону выÑадки в горах. ПоÑтройте передовую базу." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Там команда Гамма ÑвÑжетÑÑ Ñ Ð’Ð°Ð¼Ð¸." @@ -5284,12 +5300,13 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "ТРÐÐСПОРТÐÐЯ МИССИЯ: ПоÑтройте передовую базу." #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Командир, уÑпех Проекта завиÑит от ваÑ." #: data/base/messages/strings/cam3strings.txt:16 msgid "Secure an LZ, then establish a forward base." -msgstr "Защитите ЗВ и уÑтановите передовую базу." +msgstr "Защитите зону выÑадки и уÑтановите передовую базу." #: data/base/messages/strings/cam3strings.txt:19 #: data/base/messages/strings/cam3strings.txt:28 @@ -5306,16 +5323,17 @@ msgstr "Это были одна или неÑколько ракет NASDA." #: data/base/messages/strings/cam3strings.txt:24 msgid "We are transmitting coordinates of an LZ near the silos." -msgstr "Передаем координаты ЗВ вблизи хранилищ." +msgstr "Передаем координаты зоны выÑадки вблизи хранилищ." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Загрузка координат завершена." #: data/base/messages/strings/cam3strings.txt:29 msgid "Secure your LZ, then head overland to destroy the missile silo." -msgstr "Защитите ЗВ и наземными Ñилами уничтожте хранилище ракет." +msgstr "Защитите зону выÑадки и наземными Ñилами уничтожьте хранилище ракет." #: data/base/messages/strings/cam3strings.txt:33 #: data/base/messages/strings/cam3strings.txt:38 @@ -5340,7 +5358,7 @@ msgstr "Долина - Ваш единÑтвенный ÑˆÐ°Ð½Ñ ÑпаÑтиÑÑŒ #: data/base/messages/strings/cam3strings.txt:43 msgid "AWAY TEAM UPDATE" -msgstr "ОБÐОВЛЕÐИЕ КОМÐÐДЫ." +msgstr "ОБÐОВЛЕÐИЕ КОМÐÐДЫ" #: data/base/messages/strings/cam3strings.txt:44 msgid "All communication with the away team was lost after the nuclear explosions." @@ -5360,11 +5378,11 @@ msgstr "Помогите команде Гамма." #: data/base/messages/strings/cam3strings.txt:50 msgid "On reaching Gamma Base, help secure the area from further NEXUS attacks." -msgstr "Как тольоко доÑтигните базы Гамма, помогите команде отÑтоÑÑ‚ÑŒ её и отразить атаки ÐЕКСУСа." +msgstr "Как тольоко доÑтигните базы Гамма, помогите команде отÑтоÑÑ‚ÑŒ её и отразить атаки ÐЕКСУС." #: data/base/messages/strings/cam3strings.txt:53 msgid "NEXUS DEFEATED" -msgstr "ÐЕКСУС УÐИЧТОЖЕÐ." +msgstr "ÐЕКСУС УÐИЧТОЖЕÐ" #: data/base/messages/strings/cam3strings.txt:54 msgid "Commander, we have defeated NEXUS." @@ -5372,7 +5390,7 @@ msgstr "Командир, мы победили ÐЕКСУС." #: data/base/messages/strings/cam3strings.txt:55 msgid "Unfortunately, our systems' performance has been affected by NEXUS. We are trying to rectify this." -msgstr "К Ñожалению работа наших ÑиÑтем была затронута ÐЕКСУСом. Мы пытаемÑÑ Ð¸Ñправить Ñто." +msgstr "К Ñожалению, ÐЕКСУС затронул работу наших ÑиÑтем. Мы пытаемÑÑ Ð¸Ñправить Ñто." #: data/base/messages/strings/cam3strings.txt:58 msgid "We are currently receiving this transmission." @@ -5388,11 +5406,11 @@ msgstr "Отправте группу разведки по Ñтим коорд #: data/base/messages/strings/cam3strings.txt:66 msgid "Determine whether they are Team Alpha. If so, rescue and escort them back to the LZ." -msgstr "Ð’Ñ‹ÑÑните, дейÑтвительно-ли Ñто команда Ðльфа, еÑли да, то ÑпаÑите их и Ñопроводите в ЗВ." +msgstr "Ð’Ñ‹ÑÑните, дейÑтвительно-ли Ñто команда Ðльфа, еÑли да, то ÑпаÑите их и Ñопроводите в зону выÑадки." #: data/base/messages/strings/cam3strings.txt:68 msgid "This group are part of Team Alpha, Rescue them and escort them to the LZ." -msgstr "Эта группа - чаÑÑ‚ÑŒ команды Ðльфа, ÑпаÑите их и Ñопроводите в ЗВ." +msgstr "Эта группа - чаÑÑ‚ÑŒ команды Ðльфа, ÑпаÑите их и Ñопроводите в зону выÑадки." #: data/base/messages/strings/cam3strings.txt:71 msgid "NORTHERN SECTOR MISSION: Team Alpha Debrief" @@ -5400,7 +5418,7 @@ msgstr "МИССИЯ Ð’ СЕВЕРÐОМ СЕКТОРЕ: Ð—Ð°Ð¿Ñ€Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½ #: data/base/messages/strings/cam3strings.txt:72 msgid "Team Alpha power transfer in progress." -msgstr "Подача Ñнергии команде Ðльфа." +msgstr "Передача Ñнергии команде Ðльфа." #: data/base/messages/strings/cam3strings.txt:75 msgid "Commander, after you left the Western Sector we recovered this artifact." @@ -5412,27 +5430,27 @@ msgstr "Их иÑÑледование может оказатьÑÑ Ð¾Ñ‡ÐµÐ½ÑŒ #: data/base/messages/strings/cam3strings.txt:79 msgid "Enemy forces are ....... from these coordinates." -msgstr "Враги пришли..... отÑюда." +msgstr "Враги пришли ..... отÑюда." #: data/base/messages/strings/cam3strings.txt:80 msgid "Defend the base and ........ the ......." -msgstr "Защитите базу и..... Ñто......." +msgstr "Защитите базу и ..... Ñто ......." #: data/base/messages/strings/cam3strings.txt:81 msgid "Search and destroy ...." -msgstr "Ðайти и уничтожить..." +msgstr "Ðайдите и уничтожьте ......" #: data/base/messages/strings/cam3strings.txt:84 msgid "TRANSPORT MISSION: Ambush NEXUS Forces" -msgstr "ТРÐÐСПОРТÐÐЯ МИССИЯ: ЗаÑада войÑк ÐЕКСУСа" +msgstr "ТРÐÐСПОРТÐÐЯ МИССИЯ: ЗаÑада войÑк ÐЕКСУС" #: data/base/messages/strings/cam3strings.txt:85 msgid "Commander, your decisive actions halted the spread of NEXUS." -msgstr "Командир, ваши решительные дейÑÑ‚Ð²Ð¸Ñ Ð¾Ñтановили раÑпроÑтранение ÐЕКСУСа." +msgstr "Командир, ваши решительные дейÑÑ‚Ð²Ð¸Ñ Ð¾Ñтановили раÑпроÑтранение ÐЕКСУС." #: data/base/messages/strings/cam3strings.txt:86 msgid "Before NEXUS was expelled, we intercepted this message - Decoding completed." -msgstr "Прежде чем ÐЕКСУС был удален, мы перехватилиÑто Ñообщение - раÑшифровка закончена." +msgstr "Прежде чем ÐЕКСУС был удален, мы перехватили Ñто Ñообщение - раÑшифровка закончена." #: data/base/messages/strings/cam3strings.txt:89 msgid "A NEXUS task force is heading for these coordinates." @@ -5444,7 +5462,7 @@ msgstr "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ возможноÑÑ‚ÑŒ уничтожить ÐЕКС #: data/base/messages/strings/cam3strings.txt:91 msgid "Take an attack force and ambush NEXUS task force at ....... the ......." -msgstr "Ðтакуйте войÑка ÐЕКСУС и уÑтройте заÑаду в ..... Ñтот......" +msgstr "Ðтакуйте войÑка ÐЕКСУС и уÑтройте заÑаду в ..... Ñтот ......" #: data/base/messages/strings/cam3strings.txt:94 msgid "TRANSPORT MISSION: Away Team" @@ -5452,7 +5470,7 @@ msgstr "ТРÐÐСПОРТÐÐЯ МИССИЯ: Ð£Ð´Ð°Ð»ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° #: data/base/messages/strings/cam3strings.txt:95 msgid "Commander, your attack on ...." -msgstr "Командир, ваша атака на......" +msgstr "Командир, ваша атака на ...." #: data/base/messages/strings/cam3strings.txt:98 msgid "NEXUS exiting system." @@ -5492,7 +5510,7 @@ msgstr "ЧаÑти команды Гамма ÑвÑзалиÑÑŒ Ñ Ð½Ð°Ð¼Ð¸." #: data/base/messages/strings/cam3strings.txt:117 msgid "They claim to be free of NEXUS, and offer their base as a site of operations." -msgstr "Они утверждают, что не заражены ÐЕКСУС и предложили Ñвою базу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼Ð¸ÑÑий." +msgstr "Они утверждают, что не заражены ÐЕКСУС и предлагают Ñвою базу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼Ð¸ÑÑий." #: data/base/messages/strings/cam3strings.txt:118 msgid "Base coordinates download in progress." @@ -5500,7 +5518,7 @@ msgstr "Координаты базы загружены." #: data/base/messages/strings/cam3strings.txt:121 msgid "NORTHERN SECTOR MISSION: Laser Satellites" -msgstr "МИССИЯ Ð’ СЕВЕРÐОМ СЕКТОРЕ: Лазерные Ñпутники." +msgstr "МИССИЯ Ð’ СЕВЕРÐОМ СЕКТОРЕ: Лазерные Ñпутники" #: data/base/messages/strings/cam3strings.txt:122 msgid "We are detecting strong energy surges from orbit." @@ -5528,11 +5546,11 @@ msgstr "Они нацеливаютÑÑ Ð½Ð° ваÑ." #: data/base/messages/strings/cam3strings.txt:132 msgid "We will need to evacuate this base shortly." -msgstr "мы должны как можно быÑтрее Ñвакуировать Ñту базу." +msgstr "Мы должны как можно быÑтрее Ñвакуировать Ñту базу." #: data/base/messages/strings/cam3strings.txt:135 msgid "Team Gamma reports a missile silo at this location." -msgstr "Команда \"Гамма\" Ñообщает о ракетных шахтах в Ñтой зоне." +msgstr "Команда Гамма Ñообщает о ракетных шахтах в Ñтой зоне." #: data/base/messages/strings/cam3strings.txt:136 msgid "They believe that the silo contains missiles capable of reaching high orbit." @@ -5573,11 +5591,11 @@ msgstr "ПриÑтупайте к иÑÑледованию." #: data/base/messages/strings/cam3strings.txt:153 msgid "NEXUS forces detected at these locations." -msgstr "Силы ÐЕКСУСРобнаружены в Ñтом районе." +msgstr "Силы ÐЕКСУС обнаружены в Ñтом районе." #: data/base/messages/strings/cam3strings.txt:157 msgid "NEXUS has been eradicated from all Project systems." -msgstr "ÐЕКСУС уже удален Ñо вÑех ÑиÑтем Проекта" +msgstr "ÐЕКСУС уже удален Ñо вÑех ÑиÑтем Проекта." #: data/base/messages/strings/cam3strings.txt:158 msgid "We are attempting to access the missile control codes." @@ -5589,7 +5607,7 @@ msgstr "Ð”Ð»Ñ Ð²Ð·Ð»Ð¾Ð¼Ð° кодов требуетÑÑ Ð¸ÑÑледовате #: data/base/messages/strings/cam3strings.txt:163 msgid "Protect the missile silos from NEXUS attacks." -msgstr "Защитите шахты ракет от атак ÐЕКСУСа" +msgstr "Защитите шахты ракет от атак ÐЕКСУС." #: data/base/messages/strings/cam3strings.txt:166 msgid "PROJECT UPDATE: 1st Level Missile Code Cracked." @@ -5601,7 +5619,7 @@ msgstr "Ракеты приводÑÑ‚ÑÑ Ð² боевую готовноÑÑ‚ÑŒ." #: data/base/messages/strings/cam3strings.txt:168 msgid "More research is required to proceed further." -msgstr "Ð´Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐ¸Ñ… деÑтвий требуютÑÑ Ð¸ÑÑледованиÑ." +msgstr "Ð”Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐ¸Ñ… деÑтвий требуютÑÑ Ð¸ÑÑледованиÑ." #: data/base/messages/strings/cam3strings.txt:171 msgid "PROJECT UPDATE: 2nd Level Missile Code Cracked." @@ -5629,11 +5647,11 @@ msgstr "ТРÐÐСПОРТÐÐЯ МИССИЯ: Ðтакуйте главную #: data/base/messages/strings/cam3strings.txt:181 msgid "We have located NEXUS' base at this location." -msgstr "Мы обнаружили базу ÐЕКСУСа в Ñтих координатах." +msgstr "Мы обнаружили базу ÐЕКСУС в Ñтих координатах." #: data/base/messages/strings/cam3strings.txt:184 msgid "This area contains numerous NEXUS structures." -msgstr "в Ñтом районе приÑутÑтвуют многочиÑленные поÑтройки ÐЕКСУС" +msgstr "Ð’ Ñтом районе приÑутÑтвуют многочиÑленные поÑтройки ÐЕКСУС" #: data/base/messages/strings/cam3strings.txt:185 msgid "We are certain that NEXUS's core systems are located here." @@ -5641,7 +5659,7 @@ msgstr "Мы уверены, что оÑновные ÑиÑтемы ÐЕКСУС #: data/base/messages/strings/cam3strings.txt:188 msgid "Establish an LZ." -msgstr "УÑтановите ЗВ." +msgstr "УÑтановите зону выÑадки." #: data/base/messages/strings/cam3strings.txt:189 msgid "Begin your attacks on NEXUS. You must destroy his core systems." @@ -5749,7 +5767,7 @@ msgstr "ТранÑпорт" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Грузовик" @@ -5758,180 +5776,180 @@ msgstr "Грузовик" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" -msgstr "Пулемёт Гадюка на колёÑах" +msgstr "Пулемёт Гадюка КолёÑа" #: data/base/messages/strings/names.txt:143 #: data/mp/messages/strings/names.txt:143 msgid "Light Cannon Viper Wheels" -msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° пушка Гадюка колеÑа" +msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Гадюка КолеÑа" #: data/base/messages/strings/names.txt:144 #: data/mp/messages/strings/names.txt:145 msgid "Flamer Viper Wheels" -msgstr "Огнемет Гадюка на колёÑах" +msgstr "Огнемет Гадюка КолёÑа" #: data/base/messages/strings/names.txt:145 #: data/mp/messages/strings/names.txt:146 msgid "Sensor Turret Viper Wheels" -msgstr "Датчик Гадюка колёÑа" +msgstr "Датчик Гадюка КолёÑа" #: data/base/messages/strings/names.txt:146 #: data/mp/messages/strings/names.txt:147 msgid "Light Cannon Viper Tracks" -msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° \"Гадюка\" на гуÑеничном ходу" +msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Гадюка ГуÑеницы" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" -msgstr "ТÑжелый пулемёт Кобра на полугуÑеничном ходу" +msgstr "ТÑжелый пулемёт Кобра ПолугуÑеницы" #: data/base/messages/strings/names.txt:149 #: data/mp/messages/strings/names.txt:150 msgid "Mortar Cobra Half-tracks" -msgstr "Миномёт Кобра на полугуÑеничном ходу" +msgstr "Миномёт Кобра ПолугуÑеницы" #: data/base/messages/strings/names.txt:150 #: data/mp/messages/strings/names.txt:151 msgid "Light Cannon Cobra Tracks" -msgstr "Ð»ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Кобра на гуÑеничном ходу" +msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Кобра ГуÑеницы" #: data/base/messages/strings/names.txt:170 #: data/mp/messages/strings/names.txt:173 msgid "Medium Cannon Viper Tracks" -msgstr "ÑреднÑÑ Ð¿ÑƒÑˆÐºÐ° Гадюка на гуÑеничном ходу" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Гадюка ГуÑеницы" #: data/base/messages/strings/names.txt:171 #: data/mp/messages/strings/names.txt:174 msgid "Repair Turret Viper Wheels" -msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ \"Гадюка\" на колёÑах" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° КолёÑа" #: data/base/messages/strings/names.txt:172 msgid "Repair Turret Viper Half-tracks" -msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° на полугуÑеничном ходу" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° ПолугуÑеницы" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" -msgstr "Двойной Пулемёт \"Гадюка\" на колёÑах" +msgstr "Двойной пулемёт Гадюка КолёÑа" #: data/base/messages/strings/names.txt:175 #: data/mp/messages/strings/names.txt:178 msgid "Twin Machinegun Viper Half-tracks" -msgstr "двойной пулемёт \"Гадюка\" на полугуÑеничном ходу" +msgstr "Двойной пулемёт Гадюка ПолугуÑеницы" #: data/base/messages/strings/names.txt:176 #: data/mp/messages/strings/names.txt:179 msgid "Heavy Machinegun Viper Half-tracks" -msgstr "ТÑжелый пулемёт \"Кобра\" на полугуÑеничном ходу" +msgstr "ТÑжелый пулемёт Гадюка ПолугуÑеницы" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" -msgstr "ТÑжелый пулемет \"Гадюка\" на гуÑеничном ходу" +msgstr "ТÑжелый пулемет Гадюка ГуÑеницы" #: data/base/messages/strings/names.txt:178 #: data/mp/messages/strings/names.txt:181 msgid "Lancer Viper Wheels" -msgstr "ЛанÑер \"Гадюка\" на колёÑах" +msgstr "ЛанÑер Гадюка КолёÑа" #: data/base/messages/strings/names.txt:179 #: data/mp/messages/strings/names.txt:182 msgid "Mini-Rocket Viper Wheels" -msgstr "Миниракеты \"Гадюка\" на колёÑах" +msgstr "Миниракеты Гадюка КолёÑа" #: data/base/messages/strings/names.txt:180 msgid "Mini-Rocket Artillery Viper Wheels" -msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚ \"Гадюка\" на колёÑах" +msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚ Гадюка КолёÑа" #: data/base/messages/strings/names.txt:181 msgid "Bunker Buster Viper Wheels" -msgstr "Ðнтибункер \"Гадюка\" на колёÑах" +msgstr "Ðнтибункер Гадюка КолёÑа" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" -msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Кобра на гуÑеничном ходу" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Кобра ГуÑеницы" #: data/base/messages/strings/names.txt:184 #: data/mp/messages/strings/names.txt:187 msgid "Heavy Cannon Cobra Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Кобра на гуÑеничном ходу" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Кобра ГуÑеницы" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" -msgstr "Грузовик \"Кобра\"" +msgstr "Кобра Грузовик" #: data/base/messages/strings/names.txt:186 msgid "Sensor Cobra Half-tracks" -msgstr "Датчик Кобра на полугуÑеничном ходу" +msgstr "Датчик Кобра на ПолугуÑеницы" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" -msgstr "Огнемёт Кобра на гуÑеничном ходу" +msgstr "Огнемёт Кобра ГуÑеницы" #: data/base/messages/strings/names.txt:188 #: data/mp/messages/strings/names.txt:191 msgid "Bombard Cobra Half-tracks" -msgstr "Бомбард \"Кобра\" на полугуÑеничном ходу" +msgstr "Бомбард Кобра ПолугуÑеницы" #: data/base/messages/strings/names.txt:189 #: data/mp/messages/strings/names.txt:192 msgid "Command Turret Cobra Half-tracks" -msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ \"Кобра\" на полугуÑеничном ходу" +msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÐšÐ¾Ð±Ñ€Ð° ПолугуÑеницы" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "ЛанÑер Кобра ПолугуÑеницы" #: data/base/messages/strings/names.txt:191 msgid "Mini-Rocket Artillery Cobra Half-tracks" -msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚ \"Кобра\" на полугуÑеничном ходу" +msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚ Кобра ПолугуÑеницы" #: data/base/messages/strings/names.txt:193 #: data/mp/messages/strings/names.txt:196 msgid "Light Cannon Python Tracks" -msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° \"Гадюка\" на гуÑеничном ходу" +msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Гадюка полугуÑеницы" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" -msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Питон на гуÑеничном ходу" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Питон ГуÑеницы" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° пушка Кобра на гуÑеницы" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Питон ГуÑеницы" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" -msgstr "ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÐŸÐ¸Ñ‚Ð¾Ð½ ГуÑеницы" +msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÐŸÐ¸Ñ‚Ð¾Ð½ ГуÑеницы" #: data/base/messages/strings/names.txt:199 #: data/mp/messages/strings/names.txt:202 @@ -5946,7 +5964,7 @@ msgstr "Джип" #: data/base/messages/strings/names.txt:201 #: data/mp/messages/strings/names.txt:204 msgid "Trike" -msgstr "мотоцикл" +msgstr "Мотоцикл" #: data/base/messages/strings/names.txt:202 #: data/mp/messages/strings/names.txt:205 @@ -5971,7 +5989,7 @@ msgstr "ÐŸÐ¾Ð¶Ð°Ñ€Ð½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°" #: data/base/messages/strings/names.txt:206 #: data/mp/messages/strings/names.txt:209 msgid "Pick-Up Truck" -msgstr "ТранÑпортный Грузовик " +msgstr "ТранÑпортный грузовик" #: data/base/messages/strings/names.txt:207 #: data/mp/messages/strings/names.txt:210 @@ -5993,7 +6011,7 @@ msgstr "ГражданÑкий" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Пулеметчик" @@ -6002,9 +6020,9 @@ msgstr "Пулеметчик" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Огнемёт" @@ -6014,8 +6032,8 @@ msgstr "Огнемёт" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "ЛанÑер" @@ -6024,7 +6042,7 @@ msgstr "ЛанÑер" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "ТÑжелый артиллериÑÑ‚" @@ -6057,7 +6075,7 @@ msgstr "Леопард" #: data/base/messages/strings/names.txt:236 #: data/mp/messages/strings/names.txt:239 msgid "Retaliation" -msgstr "возмездие" +msgstr "Возмездие" #: data/base/messages/strings/names.txt:237 #: data/mp/messages/strings/names.txt:240 @@ -6102,7 +6120,7 @@ msgstr "Питон" #: data/base/messages/strings/names.txt:245 #: data/mp/messages/strings/names.txt:248 msgid "Mantis" -msgstr "МантиÑ" +msgstr "Богомол" #: data/base/messages/strings/names.txt:247 #: data/mp/messages/strings/names.txt:250 @@ -6112,16 +6130,16 @@ msgstr "ÐšÐ¾Ñ€Ð¿ÑƒÑ Ñ‚Ñ€Ð°Ð½Ñпорта" #: data/base/messages/strings/names.txt:297 #: data/mp/messages/strings/names.txt:300 msgid "Z NULL BRAIN" -msgstr "Z Ðулевой мозг" +msgstr "Z ПУСТОЙ МОЗГ" #: data/base/messages/strings/names.txt:300 #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" -msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð¢ÑƒÑ€Ñ€ÐµÐ»ÑŒ" +msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñ‚ÑƒÑ€Ñ€ÐµÐ»ÑŒ" #: data/base/messages/strings/names.txt:303 #: data/mp/messages/strings/names.txt:306 @@ -6148,32 +6166,32 @@ msgstr "Z ПУСТÐЯ ОПОРÐ" #: data/base/messages/strings/names.txt:315 #: data/mp/messages/strings/names.txt:318 msgid "Wheels" -msgstr "на колёÑах" +msgstr "КолёÑа" #: data/base/messages/strings/names.txt:316 #: data/mp/messages/strings/names.txt:319 msgid "Wheels II" -msgstr "на колёÑах II" +msgstr "КолёÑа II" #: data/base/messages/strings/names.txt:317 #: data/mp/messages/strings/names.txt:320 msgid "Wheels III" -msgstr "на колёÑах III" +msgstr "КолёÑах III" #: data/base/messages/strings/names.txt:318 #: data/mp/messages/strings/names.txt:321 msgid "Tracks" -msgstr "на гуÑеничном ходу" +msgstr "ГуÑеницы" #: data/base/messages/strings/names.txt:319 #: data/mp/messages/strings/names.txt:322 msgid "Tracks II" -msgstr "на гуÑеничном ходу II" +msgstr "ГуÑеницы II" #: data/base/messages/strings/names.txt:320 #: data/mp/messages/strings/names.txt:323 msgid "Tracks III" -msgstr "на гуÑеничном ходу III" +msgstr "ГуÑеницы III" #: data/base/messages/strings/names.txt:321 #: data/mp/messages/strings/names.txt:324 @@ -6193,46 +6211,46 @@ msgstr "Ховер III" #: data/base/messages/strings/names.txt:324 #: data/mp/messages/strings/names.txt:327 msgid "VTOL" -msgstr "ВВП" +msgstr "ВВС" #: data/base/messages/strings/names.txt:325 #: data/mp/messages/strings/names.txt:328 msgid "VTOL II" -msgstr "ВВП II" +msgstr "ВВС II" #: data/base/messages/strings/names.txt:326 #: data/mp/messages/strings/names.txt:329 msgid "VTOL III" -msgstr "ВВП III" +msgstr "ВВС III" #: data/base/messages/strings/names.txt:327 #: data/mp/messages/strings/names.txt:330 msgid "Half-tracks" -msgstr "на полугуÑеничном ходу" +msgstr "ПолугуÑеницы" #: data/base/messages/strings/names.txt:328 #: data/mp/messages/strings/names.txt:331 msgid "Half-tracks II" -msgstr "на полугуÑеничном ходу II" +msgstr "ПолугуÑеницы II" #: data/base/messages/strings/names.txt:329 #: data/mp/messages/strings/names.txt:332 msgid "Half-tracks III" -msgstr "на полугуÑеничном ходу III" +msgstr "ПолугуÑеницы III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" -msgstr "Кибердвижитель 2" +msgstr "Кибердвижитель II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" -msgstr "Кибердвижитель 2" +msgstr "Кибердвижитель III" #: data/base/messages/strings/names.txt:334 #: data/mp/messages/strings/names.txt:337 @@ -6242,7 +6260,7 @@ msgstr "ВМС" #: data/base/messages/strings/names.txt:337 #: data/mp/messages/strings/names.txt:340 msgid "BaBaProp" -msgstr "ББ ОПОРÐ" +msgstr "ББ Опора" #: data/base/messages/strings/names.txt:338 #: data/mp/messages/strings/names.txt:341 @@ -6252,7 +6270,7 @@ msgstr "ББ Плечи" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Кибердвижитель" @@ -6280,8 +6298,8 @@ msgstr "Z ÐУЛЕВОЙ ДÐТЧИК" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "СенÑÐ¾Ñ€Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ" @@ -6289,15 +6307,15 @@ msgstr "СенÑÐ¾Ñ€Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»Ñ‘Ð½Ð½Ð°Ñ ÑенÑÐ¾Ñ€Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ¾Ð¼" @@ -6311,7 +6329,7 @@ msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡ КБ" #: data/base/messages/strings/names.txt:373 #: data/mp/messages/strings/names.txt:379 msgid "Uplink Sensor" -msgstr "Датчик СвÑзи" +msgstr "Датчик ÑвÑзи" #: data/base/messages/strings/names.txt:375 #: data/mp/messages/strings/names.txt:382 @@ -6321,9 +6339,9 @@ msgstr "Ð‘Ð°ÑˆÐ½Ñ ÐšÐ‘ радара" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" -msgstr "Ð‘Ð¾ÐµÐ²Ð°Ñ Ð‘Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡" +msgstr "Ð‘Ð¾ÐµÐ²Ð°Ñ Ð±Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡" #: data/base/messages/strings/names.txt:377 #: data/mp/messages/strings/names.txt:384 @@ -6332,7 +6350,7 @@ msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡ КБ" #: data/base/messages/strings/names.txt:378 msgid "NEXUS Link" -msgstr "ÑвÑзь Ñ ÐЕКСУС" +msgstr "СвÑзь Ñ ÐЕКСУС" #: data/base/messages/strings/names.txt:380 #: data/base/messages/strings/names.txt:909 @@ -6357,9 +6375,9 @@ msgstr "Завод" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" -msgstr "ЗаводÑкой Модуль" +msgstr "ЗаводÑкой модуль" #: data/base/messages/strings/names.txt:387 #: data/mp/messages/strings/names.txt:394 @@ -6369,7 +6387,7 @@ msgstr "Генератор Ñнергии" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "ЭнегертичеÑкий блок" @@ -6381,7 +6399,7 @@ msgstr "ИÑÑледовательÑÐºÐ°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "ИÑÑледовательÑкий модуль" @@ -6393,7 +6411,7 @@ msgstr "СнеÑти Ñооружение" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Ремонтный центр" @@ -6405,7 +6423,7 @@ msgstr "Комендный поÑÑ‚" #: data/base/messages/strings/names.txt:395 #: data/mp/messages/strings/names.txt:402 msgid "Hardcrete Corner Wall" -msgstr "Ð‘ÐµÑ‚Ð¾Ð½Ð½Ð°Ñ Ð£Ð³Ð»Ð¾Ð²Ð°Ñ Ð¡Ñ‚ÐµÐ½Ð°" +msgstr "Ð‘ÐµÑ‚Ð¾Ð½Ð½Ð°Ñ ÑƒÐ³Ð»Ð¾Ð²Ð°Ñ Ñтена" #: data/base/messages/strings/names.txt:396 #: data/mp/messages/strings/names.txt:403 @@ -6414,8 +6432,8 @@ msgstr "Ð‘ÐµÑ‚Ð¾Ð½Ð½Ð°Ñ Ñтена" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Ðвиазавод" @@ -6426,61 +6444,61 @@ msgstr "УÑтановка Инферно" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Инферно" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Пепперпот" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "УÑтановка Шторм Ðда" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "Зенитка Торнадо" #: data/base/messages/strings/names.txt:410 #: data/base/messages/strings/names.txt:712 msgid "Cyclone AA Flak Site" -msgstr "Зенитка Цмклон" +msgstr "Зенитка Циклон" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "Зенитка Ураган" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "Зенитка Вихрь" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð°Ñ‚Ð°Ñ€ÐµÑ" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Ð¡Ñ‚Ð¾Ñ€Ð¾Ð¶ÐµÐ²Ð°Ñ Ð²Ñ‹ÑˆÐºÐ° Ñо Штурмовой пушкой" @@ -6491,29 +6509,29 @@ msgstr "Ð¾Ñ…Ñ€Ð°Ð½Ð½Ð°Ñ Ð²Ñ‹ÑˆÐºÐ° Ñо Штурмовым орудием" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñо Штурмовым орудием" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" -msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñо Штурмовой Пушкой" +msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñо Штурмовой пушкой" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "КБ БашнÑ" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡ КБ" @@ -6523,311 +6541,311 @@ msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ ÐºÑ€ÑƒÐ¿Ð½Ð¾ÐºÐ°Ð»Ð¸Ð±ÐµÑ€Ð½Ñ‹Ð¼ пулемётом" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¼ÐµÐ»ÐºÐ¾ÐºÐ°Ð»Ð¸Ð±ÐµÑ€Ð½Ð¾Ð¹ пушкой" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñо Ñреднекалиберной пушкой" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" -msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¢Ñжелой Пушкой" +msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ñ‚Ñжелой пушкой" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¾Ð³Ð½ÐµÐ¼Ñ‘Ñ‚Ð¾Ð¼" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° ЛанÑера" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "ÐŸÑƒÐ»ÐµÐ¼ÐµÑ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð´Ð²Ð¾Ð¹Ð½Ñ‹Ð¼ пулеметом" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" -msgstr "Ð‘Ð°ÑˆÐ½Ñ ÑТÑжелым пулемётом" +msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ñ‚Ñжелым пулемётом" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð¾Ð³Ð½ÐµÐ¼ÐµÑ‚Ð¾Ð¼" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð›Ð°Ð½Ñера" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Бункер Ñ Ð¿ÑƒÐ»ÐµÐ¼Ñ‘Ñ‚Ð¾Ð¼" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Бункер Ñо Ñпаренным пулемётом" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Бункер Ñ ÐºÑ€ÑƒÐ¿Ð½Ð¾ÐºÐ°Ð»Ð¸Ð±ÐµÑ€Ð½Ñ‹Ð¼ пулемётом" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Бункер Ñ Ð¼ÐµÐ»ÐºÐ¾ÐºÐ°Ð»Ð¸Ð±ÐµÑ€Ð½Ð¾Ð¹ пушкой" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Огнемётный бункер" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Бункер ЛанÑера" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Ð¢Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ð»Ð¾Ð²ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Клыки Дракона" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "ПоÑÐ°Ð´Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÐºÐ° ВВС" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" -msgstr "УÑтановка Гаубицы" +msgstr "УÑтановка гаубицы" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" -msgstr "УÑтановка Ð’Ñпышки" +msgstr "УÑтановка вÑпышки" #: data/base/messages/strings/names.txt:466 #: data/base/messages/strings/names.txt:776 msgid "Flashlight Hardpoint" -msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ð’Ñпышки" +msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° вÑпышки" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ñ€ÐµÐ»ÑŒÑовой пушкой" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ñ€Ð°ÐºÐµÑ‚Ð¾Ð¹ Бич" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð¸Ð³Ð»Ð¾Ð¼ÐµÑ‚Ð¾Ð¼" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" -msgstr "УÑтановка Пушки ГауÑÑа" +msgstr "УÑтановка пушки ГауÑÑа" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" -msgstr "СреднÑÑ ÐŸÑƒÑˆÐºÐ°" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ ÐŸÑƒÑˆÐºÐ°" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" -msgstr "Гипер СкороÑÑ‚Ð½Ð°Ñ ÐŸÑƒÑˆÐºÐ°" +msgstr "ГиперÑкороÑÑ‚Ð½Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Ð¨Ñ‚ÑƒÑ€Ð¼Ð¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Инферно" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Гаубица" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "СотрÑÑатель" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" -msgstr "УÑтановка СотрÑÑателÑ" +msgstr "УÑтановка ÑотрÑÑателÑ" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "ÐдÑкий шторм" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "ИмпульÑный лазер" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Пулемёт" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Спаренный пулемёт" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "ТÑжелый пулемёт" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Штурмовое орудие" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Ракета Бич" @@ -6838,80 +6856,80 @@ msgstr "Ракета Ðнгел" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "Защитник ЗВ" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Ракета Ðрхангел" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "ÐœÑтитель ЗВ" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "Ракета Бич ВВС" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Миномёт" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "УÑтановка миномета" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Бомбард" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "УÑтановка Бомбарда" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Пепперпот" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "УÑтановка Пепперпот" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Игломет" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "РельÑÐ¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Пушка ГауÑÑа" @@ -6921,74 +6939,74 @@ msgid "Mini-Rocket Artillery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Ðнтибункер" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Блок миниракет" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" -msgstr " Ракеты" +msgstr "Ракеты" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" -msgstr "Танк Киллер" +msgstr "Танк-Киллер" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "ВВС Ðнтибункер" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" -msgstr "миниракеты ВВС" +msgstr "Миниракеты ВВС" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "ВВС ЛанÑер" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "ВВС Танк-Киллер" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Туррель Торнадо" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Туррель Циклон" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Туррель Вихрь" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Туррель Ураган" @@ -6997,62 +7015,62 @@ msgid "LasSat" msgstr "Лазерный Спутник" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "ВВП Пушка" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "ÐÐ²Ð¸Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð³Ð¸Ð¿ÐµÑ€ÑкороÑÑ‚Ð½Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "Ð¨Ñ‚ÑƒÑ€Ð¼Ð¾Ð²Ð°Ñ Ð°Ð²Ð¸Ð°Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "Ðвиационный импульÑный лазер" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "Ðвиационный пулемёт" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "Ðвиационный Ñпаренный пулемёт" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "Ðвиационный Ñ‚Ñжёлый пулемёт" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "Ðвиационное штурмовое орудие" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" -msgstr "ВВС Игломет" +msgstr "ВВС игломет" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "ÐÐ²Ð¸Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ñ€ÐµÐ»ÑŒÑÐ¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "ОтÑек Ð´Ð»Ñ Ð±Ð¾Ð¼Ð±" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "ОтÑек Ð´Ð»Ñ Ñупербомб" @@ -7061,22 +7079,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "КлаÑтерные бомбы" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "Бронебойные взрывчатые бомбы" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "ФоÑфорные бомбы" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "Термитные бомбы" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Стена ÐльÑнÑа" @@ -7093,330 +7111,330 @@ msgid "NEXUS CWall" msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ Ñтена ÐЕКСУС" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "КÐМП1 ИÑÑледованиÑ" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "Продвинутое иÑÑледование" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "КÐМП1 Машины" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "КÐÐœ1 Оружие" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "КÐÐœ1 СиÑтемы" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "КÐÐœ1 Защита" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "КÐÐœ1 поÑтройки" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "КÐÐœ2 ИÑÑледованиÑ" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "КÐÐœ2 Машины" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "КÐÐœ2 Киборги" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "КÐÐœ2 Оружие" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "КÐÐœ2 СиÑтемы" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "КÐÐœ2 Защита" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "КÐÐœ2 ПоÑтройки" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "КÐÐœ3 ИÑÑледованиÑ" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "СинаптичеÑÐºÐ°Ñ ÑвÑзь" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Коды Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ€Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Второй уровень кодов наведениÑ" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Третий Уровень - коды запуÑка ракет" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Ð¢ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð²" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Ð¢ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð² Mk2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Ð¢ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð² Mk3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð²" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð² Mk2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð² Mk3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Композитный Ñплав киборгов" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Композитный Ñплав киборгов Mk2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Композитный Ñплав киборгов Mk3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Плотный композитный Ñплав киборгов" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Плотный композитный Ñплав киборгов Mk2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Плотный композитный Ñплав киборгов Mk3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Сверхплотный композитный Ñплав киборгов" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Сверхплотный композитный Ñплав киборгов Mk2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Сверхплотный композитный Ñплав киборгов Mk3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" -msgstr "Киборг - Ðнтибункер" +msgstr "Киборг-антибункер" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Киборг Ñ Ñ‚Ñжелым орудием" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Огнемётчик" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" -msgstr "Пулеметчик" +msgstr "Пулемётчик" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Киборг-ЛанÑер" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Штурмовик" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" -msgstr "Иглометчик" +msgstr "Игломётчик" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Бич" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" -msgstr "Киборг Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼" +msgstr "Киборг-вÑпышка" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" -msgstr "прыгун Ðнтибункер" +msgstr "Прыгун Ðнтибункер" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" -msgstr "прыгун Ñ Ñ‚Ñжелым орудием" +msgstr "Прыгун Ñ Ñ‚Ñжелым орудием" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" -msgstr "Прыгун - ЛанÑер" +msgstr "Прыгун-ЛанÑер" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" -msgstr "Прыгун-Штурмовик" +msgstr "Прыгун-штурмовик" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" -msgstr "Прыгун иглометчик" +msgstr "Прыгун-игломётчик" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Прыгун Бич" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" -msgstr "прыгун Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼" +msgstr "Прыгун-вÑпышка" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" -msgstr "комплект Ð´Ð»Ñ Ð¿Ñ€Ñ‹Ð¶ÐºÐ° киборгов" +msgstr "Комплект Ð´Ð»Ñ Ð¿Ñ€Ñ‹Ð¶ÐºÐ° киборгов" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Хардкрит" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Хардкрит" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "Улучшенный хардкрит" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" -msgstr "Улучшенный хардкрит МК2" +msgstr "Улучшенный хардкрит Ðœk2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" -msgstr "Улучшенный хардкрит МК3" +msgstr "Улучшенный хардкрит Ðœk3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Суперкрит" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" -msgstr "Суперкрит МК2" +msgstr "Суперкрит Ðœk2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" -msgstr "Суперкрит МК3" +msgstr "Суперкрит Ðœk3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "ПлаÑткрит" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" -msgstr "ПлаÑткрит МК2" +msgstr "ПлаÑткрит Ðœk2" #: data/base/messages/strings/names.txt:709 msgid "Plascrete MK3" -msgstr "ПлаÑткрит МК3" +msgstr "ПлаÑткрит Ðœk3" #: data/base/messages/strings/names.txt:717 #: data/base/messages/strings/names.txt:1373 msgid "HPV Cannon Emplacement" -msgstr "УÑтановка ГС Пушки" +msgstr "УÑтановка ГС пушки" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" -msgstr "УÑтановка Танка Киллера" +msgstr "УÑтановка Танк-Киллера" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Бомбардный окоп" @@ -7425,55 +7443,55 @@ msgid "Angel Missile Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ñ€Ð°ÐºÐµÑ‚ Ðнгел" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ñ€Ð°ÐºÐµÑ‚ Ðрхангел" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Минометный окоп" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "УÑтановка импульÑного лазера" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" -msgstr "УÑтановка РельÑопушки" +msgstr "УÑтановка РельÑовой пушки" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" -msgstr "УÑтановка Штурмовой пушки" +msgstr "УÑтановка штурмовой пушки" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "УÑтановка штурмового орудиÑ" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ ÐœÑÑ‚Ð¸Ñ‚ÐµÐ»Ñ Ð—Ð’" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð—Ð°Ñ‰Ð¸Ñ‚Ð½Ð¸ÐºÐ° ЗВ" @@ -7491,78 +7509,78 @@ msgstr "Ð¡Ñ‚Ð¾Ñ€Ð¾Ð¶ÐµÐ²Ð°Ñ Ð±Ð°ÑˆÐ½Ñ Ð¼Ð¸Ð½Ð¸Ñ€Ð¾ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ñ€Ð°ÐºÐµÑ‚Ð¾Ð¹ Бич" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" -msgstr "Укрепточка Танк Киллера" +msgstr "Укрепточка Танк-Киллера" #: data/base/messages/strings/names.txt:775 #: data/base/messages/strings/names.txt:1381 msgid "HPV Cannon Hardpoint" -msgstr "Укрепточка ГС Пушки" +msgstr "Укрепточка ГС пушки" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" -msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¿ÑƒÑˆÐºÐ¾Ð¹ ГауÑÑа" +msgstr "Укрепточка Ñ Ð¿ÑƒÑˆÐºÐ¾Ð¹ ГауÑÑа" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Командный ПоÑÑ‚" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" -msgstr "ÐвтопроизводÑтво Киборгов МК2" +msgstr "ÐвтопроизводÑтво Киборгов Ðœk2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" -msgstr "ÐвтопроизводÑтво Киборгов МК3" +msgstr "ÐвтопроизводÑтво Киборгов Ðœk3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" -msgstr "РоботопроизводÑтво Киборгов МК2" +msgstr "РоботопроизводÑтво Киборгов Ðœk2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" -msgstr "РоботопроизводÑтво Киборгов МК3" +msgstr "РоботопроизводÑтво Киборгов Ðœk3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Продвинутое производÑтво киборгов" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" -msgstr "Продвинутое производÑтво киборгов МК2" +msgstr "Продвинутое производÑтво киборгов Ðœk2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" -msgstr "Продвинутое производÑтво киборгов МК3" +msgstr "Продвинутое производÑтво киборгов Ðœk3" #: data/base/messages/strings/names.txt:795 msgid "Automated Factory Production Mk2" -msgstr "Ðвтоматизированное производÑтво МК2" +msgstr "Ðвтоматизированное производÑтво Ðœk2" #: data/base/messages/strings/names.txt:796 msgid "Automated Factory Production Mk3" -msgstr "Ðвтоматизированное производÑтво МК3" +msgstr "Ðвтоматизированное производÑтво Ðœk3" #: data/base/messages/strings/names.txt:797 msgid "Robotic Factory Production" @@ -7570,96 +7588,96 @@ msgstr "Роботизированное производÑтво" #: data/base/messages/strings/names.txt:798 msgid "Robotic Factory Production Mk2" -msgstr "роботизированное производÑтво МК2" +msgstr "Роботизированное производÑтво Ðœk2" #: data/base/messages/strings/names.txt:799 msgid "Robotic Factory Production Mk3" -msgstr "роботизированное производÑтво МК3" +msgstr "Роботизированное производÑтво Ðœk3" #: data/base/messages/strings/names.txt:800 #: data/mp/messages/resmessagesall.rmsg:785 msgid "Advanced Factory Production" -msgstr "продвинутое производÑтво" +msgstr "Продвинутое производÑтво" #: data/base/messages/strings/names.txt:801 msgid "Advanced Factory Production Mk2" -msgstr "продвинутое производÑтво МК2" +msgstr "Продвинутое производÑтво Ðœk2" #: data/base/messages/strings/names.txt:802 msgid "Advanced Factory Production Mk3" -msgstr "продвинутое производÑтво МК3" +msgstr "Продвинутое производÑтво Ðœk3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" -msgstr "прочные Ñтройматериалы МК2" +msgstr "Прочные Ñтройматериалы Ðœk2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" -msgstr "Прочные Ñтройматериалы МК3" +msgstr "Прочные Ñтройматериалы Ðœk3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" -msgstr "УÑиленные Ñтройматериалы МК2" +msgstr "УÑиленные Ñтройматериалы Ðœk2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" -msgstr "УÑиленные Ñтройматериалы МК3" +msgstr "УÑиленные Ñтройматериалы Ðœk3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" -msgstr "Продвинутые Ñтройматериалы МК2" +msgstr "Продвинутые Ñтройматериалы Ðœk2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" -msgstr "Продвинутые Ñтройматериалы МК3" +msgstr "Продвинутые Ñтройматериалы Ðœk3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Газотурбинный генератор" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Паротурбинный генератор" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" -msgstr "Ремонтный блок" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" -msgstr "Ðвтоматизированный ремонтный блок" +msgstr "ÐÐ²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑÑ‚Ñ€ÑкаÑ" #: data/base/messages/strings/names.txt:822 msgid "Automated Repair Facility Upgrade Mk2" -msgstr "ÐÐ²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš2" +msgstr "ÐÐ²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk2" #: data/base/messages/strings/names.txt:823 msgid "Automated Repair Facility Upgrade Mk3" -msgstr "ÐÐ²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš3" +msgstr "ÐÐ²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk3" #: data/base/messages/strings/names.txt:824 msgid "Robotic Repair Facility Upgrade" -msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" +msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" #: data/base/messages/strings/names.txt:825 msgid "Robotic Repair Facility Upgrade Mk2" -msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš2" +msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk2" #: data/base/messages/strings/names.txt:826 msgid "Robotic Repair Facility Upgrade Mk3" -msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš3" +msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk3" #: data/base/messages/strings/names.txt:827 msgid "Advanced Repair Facility Upgrade" @@ -7667,181 +7685,181 @@ msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" #: data/base/messages/strings/names.txt:828 msgid "Advanced Repair Facility Upgrade Mk2" -msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš2" +msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk2" #: data/base/messages/strings/names.txt:829 msgid "Advanced Repair Facility Upgrade Mk3" -msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš3" +msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" -msgstr "Ðнализ ÑинаптичеÑкой ÑвÑзи" +msgstr "Ðнализ нейроÑвÑзи" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" -msgstr "Ðнализ ÑинаптичеÑкой ÑвÑзи МК2" +msgstr "Ðнализ нейроÑвÑзи Ðœk2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" -msgstr "Ðнализ ÑинаптичеÑкой ÑвÑзи МК3" +msgstr "Ðнализ нейроÑвÑзи Ðœk3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" -msgstr "Углубленный Ðнализ ÑинаптичеÑкой ÑвÑзи МК2" +msgstr "Углубленный анализ нейроÑвÑзи Ðœk2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" -msgstr "Углубленный Ðнализ ÑинаптичеÑкой ÑвÑзи МК3" +msgstr "Углубленный анализ нейроÑвÑзи Ðœk3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" -msgstr "ИÑÑледование ÐейроÑинапÑа МК2" +msgstr "ИÑÑледование нейроÑинапÑа Ðœk2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" -msgstr "ИÑÑледование ÐейроÑинапÑа МК3" +msgstr "ИÑÑледование нейроÑинапÑа Ðœk3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" -msgstr "Ðвтоперевооружение ВВС МК2" +msgstr "Ðвтоперевооружение ВВС Ðœk2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" -msgstr "Ðвтоперевооружение ВВС МК3" +msgstr "Ðвтоперевооружение ВВС Ðœk3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" -msgstr "Роботоперевооружение ВВС МК2" +msgstr "Роботоперевооружение ВВС Ðœk2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" -msgstr "Роботоперевооружение ВВС МК3" +msgstr "Роботоперевооружение ВВС Ðœk3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" -msgstr "Роботоперевооружение ВВС МК4" +msgstr "Роботоперевооружение ВВС Ðœk4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" -msgstr "РоботопроизводÑтво ВВС МК2" +msgstr "РоботопроизводÑтво ВВС Ðœk2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" -msgstr "РоботопроизводÑтво ВВС МК3" +msgstr "РоботопроизводÑтво ВВС Ðœk3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" -msgstr "Продвинутое производÑтво ВВС МК2" +msgstr "Продвинутое производÑтво ВВС Ðœk2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" -msgstr "Продвинутое производÑтво ВВС МК3" +msgstr "Продвинутое производÑтво ВВС Ðœk3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Ðвторемонт киборгов" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" -msgstr "Ðвтоматизированное воÑÑтановление киборгов МК2" +msgstr "Ðвтоматизированное воÑÑтановление киборгов Ðœk2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" -msgstr "Ðвтоматизированное воÑÑтановление киборгов МК3" +msgstr "Ðвтоматизированное воÑÑтановление киборгов Ðœk3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "СамовоÑÑтановление защиты" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" -msgstr "Ðвтоматизированный ремонт защиты МК2" +msgstr "Ðвтоматизированный ремонт защиты Ðœk2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" -msgstr "Ðвтоматизированный ремонт защиты МК3" +msgstr "Ðвтоматизированный ремонт защиты Ðœk3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "СамовоÑÑтановление поÑтроек" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" -msgstr "автоматизированное воÑÑтановление поÑтроек МК2" +msgstr "Ðвтоматизированное воÑÑтановление поÑтроек Ðœk2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" -msgstr "автоматизированное воÑÑтановление поÑтроек МК3" +msgstr "Ðвтоматизированное воÑÑтановление поÑтроек Ðœk3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "СамовоÑÑтановление машин" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" -msgstr "автоматизированное ÑамовоÑÑтановление машин МК2" +msgstr "Ðвтоматизированное ÑамовоÑÑтановление машин Ðœk2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" -msgstr "автоматизированное ÑамовоÑÑтановление машин МК3" +msgstr "Ðвтоматизированное ÑамовоÑÑтановление машин Ðœk3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Улучшение датчика" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Строительный юнит" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Техника" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ°" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ°" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" -msgstr "ÐœÐ¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ" +msgstr "ÐœÐ¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ" #: data/base/messages/strings/names.txt:883 msgid "Heavy Mobile Repair Turret" @@ -7849,86 +7867,86 @@ msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ñ‚ÑƒÑ€Ñ€ÐµÐ»ÑŒ" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "КБ башнÑ" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "Улучшение КБ Башни" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "Улучшение КБ Башни 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "Улучшение КБ Башни 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡ КБ" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "Улучшение ВВС КБ Башни" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "Улучшение ВВС КБ Башни 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "Улучшение ВВС КБ Башни 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "Улучшение боевой башни ВВС" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" -msgstr "Улучшение боевой башни ВВС МК2" +msgstr "Улучшение боевой башни ВВС Ðœk2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" -msgstr "Улучшение боевой башни ВВС МК3" +msgstr "Улучшение боевой башни ВВС Ðœk3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Ð‘Ð¾Ð½Ð²Ð°Ñ Ð±Ð°ÑˆÐ½Ñ Ð’Ð’Ð¡" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "Улучшенный шифратор" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" -msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð° МК2" +msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð° Ðœk2" #: data/base/messages/strings/names.txt:913 msgid "NEXUS Intruder Program" @@ -7947,311 +7965,311 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "Программы ÑÐ¾Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ ÐЕКСУС" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Блокировка датчика" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "ТермобронÑ" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Ð¢ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ Mk2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Ð¢ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ Mk3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ Mk2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ Mk3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð±Ñ€Ð¾Ð½Ñ - Гадюка" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð±Ñ€Ð¾Ð½Ñ - Леопард" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð±Ñ€Ð¾Ð½Ñ - Возмездие" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð±Ñ€Ð¾Ð½Ñ - Жук" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "СреднÑÑ Ð±Ñ€Ð¾Ð½Ñ - Кобра" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "СреднÑÑ Ð±Ñ€Ð¾Ð½Ñ - Пантера" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "СреднÑÑ Ð±Ñ€Ð¾Ð½Ñ - Кара" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" -msgstr "СреднÑÑ Ð±Ñ€Ð¾Ð½Ñ - Скропион" +msgstr "СреднÑÑ Ð±Ñ€Ð¾Ð½Ñ - Скорпион" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð±Ñ€Ð¾Ð½Ñ - Тигр" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð±Ñ€Ð¾Ð½Ñ - МеÑÑ‚ÑŒ" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð±Ñ€Ð¾Ð½Ñ - Питон" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð±Ñ€Ð¾Ð½Ñ - Богомол" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Инжекторный двигатель Mk2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Инжекторный двигатель Mk3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Двигатель Ñ Ñ‚ÑƒÑ€Ð±Ð¾Ð½Ð°Ð´Ð´ÑƒÐ²Ð¾Ð¼ Mk2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Двигатель Ñ Ñ‚ÑƒÑ€Ð±Ð¾Ð½Ð°Ð´Ð´ÑƒÐ²Ð¾Ð¼ Mk3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Газотурбинный двигатель Mk2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Газотурбинный двигатель Mk3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Композитный Ñплав" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Композитный Ñплав Mk2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Композитный Ñплав Mk3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Плотный композитный Ñплав" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Плотный композитный Ñплав Mk2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Плотный композитный Ñплав Mk3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Сверхплотный композитный Ñплав" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Сверхплотный композитный Ñплав Mk2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Сверхплотный композитный Ñплав Mk3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" -msgstr "Ховер - движитель" +msgstr "Ховер-движитель" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" -msgstr "Ховер - движитель II" +msgstr "Ховер-движитель II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "ПолугуÑеницы" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "ПолугуÑеницы II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "ГуÑеницы" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "ГуÑеницы II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" -msgstr "ВВП движитель" +msgstr "ВВС движитель" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" -msgstr "ВВП движитель II" +msgstr "ВВС движитель II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" -msgstr "КолеÑа II" +msgstr "КолёÑный движитель II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "Тепловой ÑенÑор ПВО" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "СнарÑды целевого прогноза ПВО" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "Компьютерное целеуказание ПВО" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "Разрывные патроны Ð´Ð»Ñ ÐŸÐ’Ðž" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" -msgstr "Разрывные патроны Ð´Ð»Ñ ÐŸÐ’Ðž МК2" +msgstr "Разрывные патроны Ð´Ð»Ñ ÐŸÐ’Ðž Ðœk2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" -msgstr "Разрывные патроны Ð´Ð»Ñ ÐŸÐ’Ðž МК3" +msgstr "Разрывные патроны Ð´Ð»Ñ ÐŸÐ’Ðž Ðœk3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "Ð‘Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð·ÐµÐ½Ð¸Ñ‚ÐºÐ°" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" -msgstr "Ð‘Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð·ÐµÐ½Ð¸Ñ‚ÐºÐ° МК2" +msgstr "Ð‘Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð·ÐµÐ½Ð¸Ñ‚ÐºÐ° Ðœk2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" -msgstr "Ð‘Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð·ÐµÐ½Ð¸Ñ‚ÐºÐ° МК3" +msgstr "Ð‘Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð·ÐµÐ½Ð¸Ñ‚ÐºÐ° Ðœk3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "Бункер боеприпаÑов ПВО" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" -msgstr "Бункер боеприпаÑов ПВО МК2" +msgstr "Бункер боеприпаÑов ПВО Ðœk2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" -msgstr "Бункер боеприпаÑов ПВО МК3" +msgstr "Бункер боеприпаÑов ПВО Ðœk3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "Ð¦ÐµÐ¿Ð½Ð°Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ð° ÑнарÑдов ПВО" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" -msgstr "Ð¦ÐµÐ¿Ð½Ð°Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ð° ÑнарÑдов ПВО МК2" +msgstr "Ð¦ÐµÐ¿Ð½Ð°Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ð° ÑнарÑдов ПВО Ðœk2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" -msgstr "Ð¦ÐµÐ¿Ð½Ð°Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ð° ÑнарÑдов ПВО МК3" +msgstr "Ð¦ÐµÐ¿Ð½Ð°Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ð° ÑнарÑдов ПВО Ðœk3" #: data/base/messages/strings/names.txt:1003 msgid "Cluster Bombs Bay" msgstr "ОтÑек Ð´Ð»Ñ ÐºÐ»Ð°Ñтерных бомб" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "ОтÑек Ð´Ð»Ñ Ð±Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ñ‹Ñ… бомб" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Отчек Ð´Ð»Ñ Ñ„Ð¾Ñфорных бомб" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "ОтÑек Ð´Ð»Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ñ‚Ð½Ñ‹Ñ… бомб" @@ -8268,311 +8286,311 @@ msgid "Target Acquisition Bombsight" msgstr "Бомбприцел Ñ Ð°Ð²Ñ‚Ð¾Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Пушечный лазерный дальномер" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Пушечный лазерный целеуказатель" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Противотанковые ÑнарÑды" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Противотанковые ÑнарÑды Mk2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Противотанковые ÑнарÑды Mk3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "Подкалиберные ÑнарÑды Ð´Ð»Ñ Ð¿ÑƒÑˆÐºÐ¸" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "Подкалиберные ÑнарÑды Ð´Ð»Ñ Ð¿ÑƒÑˆÐºÐ¸ Mk2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "Подкалиберные ÑнарÑды Ð´Ð»Ñ Ð¿ÑƒÑˆÐºÐ¸ Mk3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "HVAPFSDS СнарÑды Пушки" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" -msgstr "HVAPFSDS СнарÑды Пушки МК2" +msgstr "HVAPFSDS СнарÑды Пушки Ðœk2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" -msgstr "HVAPFSDS СнарÑды Пушки МК3" +msgstr "HVAPFSDS СнарÑды Пушки Ðœk3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "ÐвтозарÑдка Пушки" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "ÐвтозарÑдка Пушки Mk2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "ÐвтозарÑдка Пушки Mk2" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка пушки" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" -msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка пушки МК2" +msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка пушки Ðœk2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" -msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка пушки МК3" +msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка пушки Ðœk3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка лазера" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" -msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка лазера МК2" +msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка лазера Ðœk2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" -msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка лазера МК3" +msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка лазера Ðœk3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Излучатель" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" -msgstr "Излучатель МК2" +msgstr "Излучатель Ðœk2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" -msgstr "Излучатель МК3" +msgstr "Излучатель Ðœk3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Ðктивизатор" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" -msgstr "Ðктивизатор МК2" +msgstr "Ðктивизатор Ðœk2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" -msgstr "Ðктивизатор МК3" +msgstr "Ðктивизатор Ðœk3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Ð’Ñ‹Ñокотемпературный огнемётный гель" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Ð’Ñ‹Ñокотемпературный огнемётный гель Mk2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Ð’Ñ‹Ñокотемпературный огнемётный гель Mk3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "СверхгорÑчий огнемётный гель" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "СверхгорÑчий огнемётный гель Mk2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "СверхгорÑчий огнемётный гель Mk3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "ÐвтозарÑдка огнемета" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" -msgstr "ÐвтозарÑдка огнемета МК2" +msgstr "ÐвтозарÑдка огнемета Ðœk2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" -msgstr "ÐвтозарÑдка огнемета МК3" +msgstr "ÐвтозарÑдка огнемета Ðœk3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "ТÑжёлый огнемёт - Инферно" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð³Ð°ÑƒÐ±Ð¸Ñ†Ð° - СотрÑÑатель" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Ð Ð¾Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð³Ð°ÑƒÐ±Ð¸Ñ†Ð° - Шторм Ðда" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "СнарÑды гаубицы" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" -msgstr "СнарÑды гаубицы МК2" +msgstr "СнарÑды гаубицы Ðœk2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "СнарÑды целевого прогноза гаубицы" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Разрывные СнарÑды гаубицы" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" -msgstr "Разрывные СнарÑды гаубицы МК2" +msgstr "Разрывные СнарÑды гаубицы Ðœk2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" -msgstr "Разрывные СнарÑды гаубицы МК3" +msgstr "Разрывные СнарÑды гаубицы Ðœk3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Бронебойные СнарÑды гаубицы" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" -msgstr "Бронебойные СнарÑды гаубицы МК2" +msgstr "Бронебойные СнарÑды гаубицы Ðœk2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" -msgstr "Бронебойные СнарÑды гаубицы МК3" +msgstr "Бронебойные СнарÑды гаубицы Ðœk3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "ÐвтозарÑдка Гаубицы" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" -msgstr "ÐвтозарÑдка Гаубицы МК2" +msgstr "ÐвтозарÑдка Гаубицы Ðœk2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" -msgstr "ÐвтозарÑдка Гаубицы МК3" +msgstr "ÐвтозарÑдка Гаубицы Ðœk3" #: data/base/messages/strings/names.txt:1080 msgid "Fast Loader" msgstr "БыÑтрый зарÑдка гаубицы" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Лазер - Ð’Ñпышка" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "УÑиленные пули " #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "APDSB пули" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" -msgstr "APDSB пули МК2" +msgstr "APDSB пули Ðœk2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" -msgstr "APDSB пули МК3" +msgstr "APDSB пули Ðœk3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Вольфрамовые пули" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" -msgstr "Вольфрамовые пули МК2" +msgstr "Вольфрамовые пули Ðœk2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" -msgstr "Вольфрамовые пули МК3" +msgstr "Вольфрамовые пули Ðœk3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" -msgstr "Пули из обедненного Урана" +msgstr "Пули из обедненного урана" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" -msgstr "Пули из обедненного Урана МК2" +msgstr "Пули из обедненного урана Ðœk2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Улучшение Пулемета" @@ -8581,142 +8599,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Улучшение ÑверхÑкороÑтного пулемета" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" -msgstr "Улучшение ГиперÑкороÑтного пулемета" +msgstr "Улучшение гиперÑкороÑтного пулемета" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Ракеты целевого прогноза" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Ракеты Ðайти и уничтожить" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Mk2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Mk3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "СиÑтема Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ñ€Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" -msgstr "СиÑтема Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ñ€Ð°ÐºÐµÑ‚ МК2" +msgstr "СиÑтема Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ñ€Ð°ÐºÐµÑ‚ Ðœk2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" -msgstr "СиÑтема Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ñ€Ð°ÐºÐµÑ‚ МК3" +msgstr "СиÑтема Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ñ€Ð°ÐºÐµÑ‚ Ðœk3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Ð’Ð·Ñ€Ñ‹Ð²Ñ‡Ð°Ñ‚Ð°Ñ Ð±Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Ð’Ð·Ñ€Ñ‹Ð²Ñ‡Ð°Ñ‚Ð°Ñ Ð±Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Mk2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Ð’Ð·Ñ€Ñ‹Ð²Ñ‡Ð°Ñ‚Ð°Ñ Ð±Ñ€Ð¾Ð½ÐµÐ±Ð¾Ð¹Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Mk3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ ÑиÑтема загрузки ракет" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Компьютерное наведение ÑнарÑдов мортиры" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Тепловое наведение ÑнарÑдов мортиры" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Ðвтозахват цели минометами" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Разрывные ÑнарÑды миномета" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" -msgstr "Разрывные ÑнарÑды миномета МК2" +msgstr "Разрывные ÑнарÑды миномета Ðœk2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" -msgstr "Разрывные ÑнарÑды миномета МК3" +msgstr "Разрывные ÑнарÑды миномета Ðœk3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Бронебойные ÑнарÑды миномета" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" -msgstr "Бронебойные ÑнарÑды миномета МК2" +msgstr "Бронебойные ÑнарÑды миномета Ðœk2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" -msgstr "Бронебойные ÑнарÑды минометаМК3" +msgstr "Бронебойные ÑнарÑды миномета Ðœk3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "ÐвтозарÑдка миномета" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" -msgstr "ÐвтозарÑдка миномета МК2" +msgstr "ÐвтозарÑдка миномета Ðœk2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" -msgstr "ÐвтозарÑдка миномета МК3" +msgstr "ÐвтозарÑдка миномета Ðœk3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка миномета" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "ТÑжелый миномет- Бомбард" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Роторный миномет - Пепперпот" @@ -8725,388 +8743,388 @@ msgid "Target Prediction Computer" msgstr "Компьютерное наведение на цель" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "УÑиленные шипы" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" -msgstr "УÑиленные шипы МК2" +msgstr "УÑиленные шипы Ðœk2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" -msgstr "УÑиленные шипы МК3" +msgstr "УÑиленные шипы Ðœk3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "СкороÑÑ‚Ð½Ð°Ñ Ñ€ÐµÐ»ÑŒÑопушка" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" -msgstr "СкороÑÑ‚Ð½Ð°Ñ Ñ€ÐµÐ»ÑŒÑопушка МК2" +msgstr "СкороÑÑ‚Ð½Ð°Ñ Ñ€ÐµÐ»ÑŒÑопушка Ðœk2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" -msgstr "СкороÑÑ‚Ð½Ð°Ñ Ñ€ÐµÐ»ÑŒÑопушка МК3" +msgstr "СкороÑÑ‚Ð½Ð°Ñ Ñ€ÐµÐ»ÑŒÑопушка Ðœk3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Стабилизированные миниракеты" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" -msgstr "Стабилизированные миниракеты МК2" +msgstr "Стабилизированные миниракеты Ðœk2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Разрывные миниракеты" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" -msgstr "Разрывные миниракеты МК2" +msgstr "Разрывные миниракеты Ðœk2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" -msgstr "Разрывные миниракеты МК3" +msgstr "Разрывные миниракеты Ðœk3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Бронебойные миниракеты" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" -msgstr "Бронебойные миниракеты МК2" +msgstr "Бронебойные миниракеты Ðœk2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" -msgstr "Бронебойные миниракеты МК3" +msgstr "Бронебойные миниракеты Ðœk3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "БыÑтрые миниракеты" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" -msgstr "БыÑтрые миниракеты МК2" +msgstr "БыÑтрые миниракеты Ðœk2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" -msgstr "БыÑтрые миниракеты Мк3" +msgstr "БыÑтрые миниракеты Ðœk3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка миниракет" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" -msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка миниракет МК2" +msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка миниракет Ðœk2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" -msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка миниракет МК3" +msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð·Ð°Ñ€Ñдка миниракет Ðœk3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "Улучшенное наведение ракет" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Ракетный лазерный целеуказатель" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Ракеты Ñ Ñ‚ÐµÐ¿Ð»Ð¾Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" -msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" +msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" -msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° МК2" +msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Ðœk2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" -msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° МК3" +msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Mk3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" -msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° МК2" +msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Ðœk2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" -msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° МК3" +msgstr "УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ° Ðœk3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "ÐвтозарÑдка ракет" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" -msgstr "ÐвтозарÑдка ракет МК2" +msgstr "ÐвтозарÑдка ракет Ðœk2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" -msgstr "ÐвтозарÑдка ракет МК3" +msgstr "ÐвтозарÑдка ракет Ðœk3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" -msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° - ЛанÑер" +msgstr "ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ‚Ð°Ð½ÐºÐ¾Ð²Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° ЛанÑер" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Ракета Ðнтибункер" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" -msgstr "Ракета Танк Киллер" +msgstr "Ракета Танк-Киллер" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Ðртефакт Пулемет" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Командный центр Ðовой Парадигмы" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Командный центр ÐльÑнÑа" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Фабрика МуÑорщиков" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "ÐŸÑƒÐ»ÐµÐ¼Ñ‘Ñ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ ÐœÑƒÑорщиков" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" -msgstr "ÐŸÑ€Ð¾Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ Ñтена муÑорщиков" +msgstr "ÐŸÑ€Ð¾Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ Ñтена МуÑорщиков" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Генератор Ñнергии МуÑорщиков" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" -msgstr "ракетный окоп муÑорщиков" +msgstr "Ракетный окоп МуÑорщиков" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" -msgstr "Окоп противотанковых ракет муÑорщиков" +msgstr "Окоп противотанковых ракет МуÑорщиков" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Бункер МуÑорщиков" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ Ñтена МуÑорщиков" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "ÐžÐ³Ð½ÐµÐ¼Ñ‘Ñ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ ÐœÑƒÑорщиков" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð¾Ð³Ð½ÐµÐ¼ÐµÑ‚Ð¾Ð¼ МуÑорщиков" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "ÐÐ°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð²Ñ‹ÑˆÐºÐ°" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" -msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ ÐŸÑƒÑˆÐºÐ¾Ð¹" +msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð¿ÑƒÑˆÐºÐ¾Ð¹" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Ðртефакт" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "ÐефтÑной реÑурÑ" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "МоÑÑ‚" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Ð Ð°Ð·Ñ€ÑƒÑˆÐµÐ½Ð½Ð°Ñ Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ°" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Склад" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Лачуга" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Бочка Ñ Ð½ÐµÑ„Ñ‚ÑŒÑŽ" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Обломки" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Разрушенный танк" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Разрушенный моÑÑ‚" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Разрушенный фургон" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Ð Ð°Ð·Ñ€ÑƒÑˆÐµÐ½Ð½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Разрушенный танкер" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð¾Ð²" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "ÐŸÐµÑ€ÐµÐ´Ð¾Ð²Ð°Ñ Ð²Ð¾ÐµÐ½Ð½Ð°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Ð˜Ð½Ð¶ÐµÐ½ÐµÑ€Ð½Ð°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¾Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ¸" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ Ð»Ð°Ð·ÐµÑ€Ð½Ð¾Ð¹ оптики" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ Ñлектроники" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "ХимичеÑÐºÐ°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Продвинутые методы Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ð¾Ð¹Ð½Ñ‹" #: data/base/messages/strings/names.txt:1343 msgid "Python Heavy Cannon Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ ÐŸÑƒÑˆÐºÐ° Питон ГуÑеницы" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Питон ГуÑеницы" #: data/base/messages/strings/names.txt:1345 msgid "Cobra Flamer Tracks" -msgstr "Огнемёт \"Кобра\" на гуÑеничном ходу" +msgstr "Огнемёт Кобра ГуÑеницы" #: data/base/messages/strings/names.txt:1346 msgid "Cobra Medium Cannon Tracks" -msgstr "СреднÑÑ ÐŸÑƒÑˆÐºÐ° Кобра на гуÑеничном ходу" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Кобра ГуÑеницы" #: data/base/messages/strings/names.txt:1368 msgid "MRL Emplacement" msgstr "УÑтановка MRL" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "УÑтановка РельÑовой Пушки" @@ -9115,88 +9133,88 @@ msgid "Angel Missile Emplacement" msgstr "УÑтановка ракет Ðнгел" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "УÑтановка ракет Ðрхангел" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" -msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð±Ð°ÑˆÐ½Ñ Ð½Ð° полугуÑеничном ходу" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ ÐšÐ¾Ð±Ñ€Ð° ГуÑеницы" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "Бич" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Ðнтибункер" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" -msgstr "ИмпульÑ-Ñтрелок" +msgstr "Ð’Ñпышка-Ñтрелок" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Иглометчик" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" -msgstr "ПриземливщийÑÑ Ñ‚Ñ€Ð°Ð½Ñпорт" +msgstr "ПриземлившийÑÑ Ñ‚Ñ€Ð°Ð½Ñпорт" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Танк-Киллер Питон ГуÑеницы" #: data/base/messages/strings/names.txt:1459 msgid "HPV Cannon Python Tracks" -msgstr "ГС Пушка Питон ГуÑеницы" +msgstr "ГС пушка Питон ГуÑеницы" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "Зенитка Циклон Питон ПолугуÑеницы" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "Штурмовое орудие Питон ГуÑеницы" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Ð’Ñпышка" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" -msgstr "ВВС Лазер" +msgstr "ВВС Ð’Ñпышка" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Бункер Ñ Ñ€Ð¾Ñ‚Ð¾Ñ€Ð½Ñ‹Ð¼ пулеметом" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Ð Ð°ÐºÐµÑ‚Ð½Ð°Ñ ÑˆÐ°Ñ…Ñ‚Ð°" @@ -9478,550 +9496,1490 @@ msgstr "Подождите, пока завод не поÑтроит новые msgid "Congratulations commander - you are ready for your first mission" msgstr "ПоздравлÑем, Командующий - теперь Ð’Ñ‹ готовы к Ñвоей первой миÑÑии" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" +msgstr "ВходÑÑ‰Ð°Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð°" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" +msgstr "ВходÑÑ‰Ð°Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° Ñ Ð±Ð°Ð·Ñ‹ Бета." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "СОС! СОС!" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "Запрашиваю помощь!.." + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "МИССИЯ 1" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "ЗÐПÐДÐЫЙ СЕКТОР" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "РаÑÑвет, 4 Ð¸ÑŽÐ»Ñ 2100 г." + +#: data/base/sequenceaudio/cam1/c001.txa:5 +msgid "Project HQ" +msgstr "Штаб проекта" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "ÐÐ¾Ð²Ð°Ñ Ñра" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "Утро, 4 Ð¸ÑŽÐ»Ñ 2100 г." + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "Ð’ полёте к Западному Ñектору" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Команда Ðльфа ликвидирована" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "Ðазначение транÑпорта:" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "Ðльфа - Западный Ñектор..." + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "Ðльфа, вы можете взлетать." + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "Удачи и доброй охоты." + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "ПриближаемÑÑ Ðº зоне выÑадки. Ðльфа, проÑлушайте инÑтруктаж." + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "Командир, вы возглавлÑете команду Ðльфа, одну из трёх разведывательных команд, поÑланных Проектом Ð´Ð»Ñ Ð¾Ñ‚Ñ‹ÑÐºÐ°Ð½Ð¸Ñ Ð°Ñ€Ñ‚ÐµÑ„Ð°ÐºÑ‚Ð¾Ð², Ñозданных до времён Краха." + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "Ваша цель раÑположена в Западной зоне." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Мы раÑкодировали входÑщее Ñообщение от Ðовой Парадигмы." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "Эта турель позволÑет командирам координировать атаки между юнитами, а также ÑвлÑетÑÑ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ†Ð¸Ð¸ фабрик. Разработка и внедрение данной технологии имеет выÑший приоритет." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "Мы получаем передачу." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "Ваши Ð½Ð°Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð½Ð° Ð½Ð°Ñ Ð½Ðµ оÑтанутÑÑ Ð±ÐµÐ·Ð½Ð°ÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼Ð¸." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +#, fuzzy +msgid "You are in contravention of the New Paradigm." +msgstr "ПоздравлÑем, Командующий." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "Ð’Ñе атакующие группы начинают наÑтупление на врага." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "ПоздравлÑем, Командующий." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "Они должны быть иÑтреблены." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "Защитите зону выÑадки и уÑтановите передовую базу." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "Затем уничтожьте базу Ðовой Парадигмы." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "Дай мне доÑтуп к Ñвоим ÑиÑтемам." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "Позволь мне ÑлитьÑÑ Ñ Ñ‚Ð²Ð¾Ð¸Ð¼Ð¸ машинами и киборгами." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "Мы Ñоздадим воплотим идеальный Ñинтез человека и машины." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "ВмеÑте мы можем Ñоздать идеальный мир." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "Я могу дать тебе мощь, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ñ€ÐµÐ²Ð¾Ñходит вÑе твои мечты." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "Дай доÑтуп к Ñвоим ÑиÑтемам, и Ñ‚Ñ‹ Ñтанешь Ñильным." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "Я могу Ñделать Ñ‚ÐµÐ±Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ‹Ð¼ богам Ñтой проклÑтой земли." + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "Твоё вмешательÑтво в мои планы отноÑительно Ðовой Парадигмы не оÑтанетÑÑ Ð±ÐµÐ·Ð½Ð°ÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "Ð’Ñ‹ Ñлабые куÑки плоти, а Ñ - Ñильный и вездеÑущий." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "Ты Ð½Ð°Ð½Ñ‘Ñ Ð¼Ð½Ðµ поражение, но Ñ Ð²Ð¾ÑÑтану вновь." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "Я уничтожу твой никчёмный Проект так же, как Ñ ÑƒÐ¶Ðµ очиÑтил Ñтот мир огнём однажды." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "Затем NEXUS удалилÑÑ Ð¸Ð· ÑиÑтемы, разрушив её банки памÑти и удалив вÑе Ñледы Ñвоих внешних Ñоединений." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "Мы не уверены в том, что еÑÑ‚ÑŒ ÐЕКСУС и что или кто управлÑет им. Ðачальные иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ на ÑвÑзь программы Ð¿Ñ€Ð¾Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ ÐЕКСУС Ñ ÐšÐ¾Ñ€Ð¿Ð¾Ñ€Ð°Ñ†Ð¸ÐµÐ¹ Рид, разработчиком нейроÑвÑзи." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "Мы уÑтановили, что ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° получила большинÑтво Ñвоих технологий от ÐЕКСУС. Чем бы ни был ÐЕКСУС, он нечто большее чем компьютерный паразит." + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "У него еÑÑ‚ÑŒ технологии и вооружениÑ. Он знает о Ð½Ð°Ñ Ð¸ не ÑвлÑетÑÑ Ð´Ñ€ÑƒÐ¶ÐµÐ»ÑŽÐ±Ð½Ñ‹Ð¼." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "ÐейроÑвÑзь была разработана Корпорацией Рид при ÑодейÑтвии Вооружённых Сил СШÐ." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "ÐейроÑвÑзь реализует почти мгновенную передачу мыÑлей от человека-оператора к машинам и управлÑющим ÑиÑтемам. ÐейроÑвÑзь вÑтраиваетÑÑ Ð² позвоночник в оÑновании черепа." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "Соединение предÑтавлено выÑокоÑкороÑтным портом передачи данных, ÑовмеÑтимым Ñ Ð»ÑŽÐ±Ð¾Ð¹ компьютерной ÑиÑтемой." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "Более важно то, что разработка нейроÑвÑзи Ñделала возможным Ñоздание киборгов. Ранние попытки ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑкзÑкафандров Ð´Ð»Ñ Ñолдат провалилиÑÑŒ, поÑкольку реализации получалиÑÑŒ медленными и выÑоколатентными." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "ÐейроÑвÑзь же позволила Ñолдатам, находÑÑÑŒ в ÑкзоÑкафандре, управлÑÑ‚ÑŒ им так же проÑто, как ÑобÑтвенным телом. ЭкзоÑкафандры позволили пехоте функционировать Ñффективнее на полÑÑ… Ñражений XXI века." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "К неÑчаÑтью, Ð´Ð°Ð½Ð½Ð°Ñ Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¾ÑталаÑÑŒ иÑключительно в руках Ðовой Парадигмы. Крайне важно, чтобы вы вновь иÑÑледовали и воплотили технологии нейроÑвÑзи." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "Внимание!" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "Ð’Ñ‹ вошли в запретную зону." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "ВернитеÑÑŒ в назначенную вам зону или будете уничтожены." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "ПовторÑÑŽ: вернитеÑÑŒ в назначенную вам зону или будете уничтожены." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "Сообщение окончено." + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "Ð’Ñ‹ будете уничтожены." + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "ÐЕКСУС, нейроÑвÑзь, которую вы иÑкали, была получена!" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "Ð’Ñ‹ хорошо Ñделали Ñвою работу." + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "Как только мы проанализируем и клаÑÑифицируем технологию, ваша награда не заÑтавит ждать." + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "По информации, полученной на предыдущей базе противника, ÐÐ¾Ð²Ð°Ñ ÐŸÐ°Ñ€Ð°Ð´Ð¸Ð³Ð¼Ð° обладает Ð´Ð²ÑƒÐ¼Ñ Ð°Ñ€Ñ‚ÐµÑ„Ð°ÐºÑ‚Ð°Ð¼Ð¸, имеющими отношение к нейроÑвÑзи." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "Программа Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ ÐЕКСУС ÑвлÑетÑÑ ÑамомодифицирующимÑÑ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð½Ñ‹Ð¼ паразитом, поÑему её уÑтранение из наших ÑиÑтем ÑвлÑетÑÑ Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾ Ñложной задачей." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "Продолжение анализа невозможно вÑледÑтвие ручного оÑтанова ÑиÑтемы нашими техничеÑкими ÑпециалиÑтами, инициированного Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ³Ð¾ Ð·Ð°Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¾Ð¹ Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ ÐЕКСУС." + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "МИССИЯ 2" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "ВоÑточный Ñектор" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "Утро, 1 ÑентÑÐ±Ñ€Ñ 2100 г." + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "Ð’ полёте к ВоÑточному Ñектору" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "Команда Ðльфа доÑтигла базы Бета" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "Ð’Ñ‹ должны защитить и отÑтоÑÑ‚ÑŒ её любой ценой." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "ÐЛЬЯÐС" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "Командир, был обнаружен новый запуÑк." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "Похоже, что Ñто меÑто подходит Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ выÑадки." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Ð’Ñ‹ должны начать немедленную Ñвакуацию базы Бета в безопаÑное укрытие." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "NASDA - Ñто Северо-ÐмериканÑкое СтратегичеÑкое Оборонное ÐгенÑтво." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "NASDA было Ñформировано в 2076 году Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ Северной Ðмерики от обычных и Ñдерных нападений. Создание Ñпутниковой оборонной ÑиÑтемы началоÑÑŒ в 2081 году и завершилоÑÑŒ ÑпуÑÑ‚Ñ Ð³Ð¾Ð´." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "Ð’ 2085 году Ñпутники NASDA подвергли Землю атаке Ñвоими Ñдерными боеголовками." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Мы заÑекли передачи Ñ Ñтого учаÑтка, доÑтигающие выÑокой орбиты." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "ÐЕКСУС ÑоединÑетÑÑ Ñо Ñпутниками NASDA. " + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Командир, мы обнаружили запуÑк ракет по Ñтим координатам." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "Ðайти и уничтожить!" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "РаÑкодирование передачи..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "ПоздравлÑем, вы уÑпешно Ñвакуировали базу Бета." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +msgid "Briefing Commences" +msgstr "Ðачало инÑтруктажа:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Отобразить Ñледующего командующего" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Мы обнаружили войÑка ÐЕКСУС в Ñтом районе." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +msgid "Glad you could make it, Commander." +msgstr "Уверен, вы Ñможете Ñто Ñовершить, Командующий." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "Командир, добро пожаловать в ÐЕКСУС!" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Командир, мы пытаемÑÑ Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒÑÑ Ð½Ð° базу." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "Сумерки, 3 ноÑÐ±Ñ€Ñ 2085 г." + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "ЗемлÑ, верхнÑÑ Ð¾Ñ€Ð±Ð¸Ñ‚Ð°" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "КоллапÑ" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "19 ÑÐ½Ð²Ð°Ñ€Ñ 2086 г." + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "Ð¡ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ðмерика" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "Ð¯Ð´ÐµÑ€Ð½Ð°Ñ Ð·Ð¸Ð¼Ð°" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "Полночь, 10 Ð°Ð¿Ñ€ÐµÐ»Ñ 2086 г." + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "СкалиÑтые горы" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "БезопаÑное меÑто" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "РаÑÑвет, 4 Ð°Ð¿Ñ€ÐµÐ»Ñ 2100 г." + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "Ðовое начинание" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "Ð’ конце-концов мы готовы начать Проект." + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "ПоÑле долгих меÑÑцев битвы мы одолели ÐЕКСУС." + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "Война, Ð½Ð°Ñ‡Ð°Ñ‚Ð°Ñ Ð´Ð¾ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Ридом, была окончена." + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "Мы Ñмогли воÑÑтановить множеÑтво технологий из чиÑла найденных." + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "Пришло Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑпользоватьÑÑ Ð¸Ð¼Ð¸ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы переÑтроить Ñтот мир." + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "Медленно, шаг за шагом из пепла мы воÑÑтанем вновь..." + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Кобра ховер Ñ‚ÑÐ¶ÐµÐ»Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Гадюка ТÑжелый пулемет КолеÑа" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" -msgstr "Бич ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð¥Ð¾Ð²ÐµÑ€" +msgstr "Бич Богомол Ховер" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" -msgstr "Танк-Киллер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð¥Ð¾Ð²ÐµÑ€" +msgstr "Танк-Киллер Богомол Ховер" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "Кобра ТÑжелый пулемет ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Кобра Ховер" +msgstr "Кобра Ховер ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Скорпион ЛанÑер ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Скорпион на гуÑеничном ходу" +msgstr "Скорпион ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" -msgstr "ВВС Скорпион ЛанÑер" +msgstr "Скорпион ЛанÑер ВВС" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" -msgstr "ВВС Ðнтибункер Скорпион" +msgstr "Скорпион Ðнтибункер ВВС" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Гадюка ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“ÑƒÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "Кобра ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“ÑƒÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" -msgstr "Скорпион ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“ÑƒÑеницы" +msgstr "Скорпион ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“ÑƒÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" -msgstr "ÐœÐ°Ð½Ñ‚Ð¸Ñ ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“ÑƒÑеницы" +msgstr "Богомол ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“ÑƒÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "Кобра ЛанÑер ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "Богомол ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" -msgstr "Танк Киллер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "Богомол Танк-Киллер ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" -msgstr "ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð‘Ð¸Ñ‡ ГуÑеницы" +msgstr "Богомол Бич ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" -msgstr "ТÑжелый Пулемет Скорпион на гуÑеничном ходу" +msgstr "Скорпион ТÑжелый пулемет ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" -msgstr "Ремонтный Скорпион на гуÑеничном ходу" +msgstr "Скорпион Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð“ÑƒÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" -msgstr "Скорпион ТÑÐ¶ÐµÐ»Ð°Ñ Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ñ‚ÑƒÑ€ÐµÐ»ÑŒ ховер" +msgstr "Скорпион ТÑÐ¶ÐµÐ»Ð°Ñ Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¥Ð¾Ð²ÐµÑ€" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Кобра Ховер Грузовик" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Скорпион Ховер Грузовик" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" -msgstr "Ð˜Ð°Ð½Ñ‚Ð¸Ñ Ð¥Ð¾Ð²ÐµÑ€ Грузовик" +msgstr "Богомол Ховер Грузовик" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "Кобра Ðнтибункер ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Скорпион Ðнтибункер ГуÑеницы" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" -msgstr "Манти Ðнтибункер ГуÑеницы" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" -msgstr "Гадюка ЛанÑер ГуÑеницы" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" -msgstr "Кобра миниракеты ГуÑеницы" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" -msgstr "кобра миниракеты ГуÑеницы" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" -msgstr "Кобра ГуÑеницы Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐœÐ¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" -msgstr "Кобра Ðд полугуÑеницы" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" -msgstr "ГС Пушка Питон Ховер" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" -msgstr "Питон Ракета Бич Ховер" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" -msgstr "Пушка ГауÑÑа Питон на гуÑеничном ходу" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" -msgstr "ИмпульÑный лазер Питон на гуÑеничном ходу" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" -msgstr "ИмпульÑный лазер Тигр на гуÑеничном ходу" - -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" -msgstr "ТÑжёлый лазер Тигр на гуÑеничном ходу" - #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" -msgstr "Пушка ГауÑÑа Виверн на гуÑеничном ходу" +msgid "Mantis Bunker Buster Tracks" +msgstr "Богомол Ðнтибункер ГуÑеницы" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" -msgstr "ИмпульÑный лазер Виверн на гуÑеничном ходу" +msgid "Viper Tracks Lancer" +msgstr "Гадюка ГуÑеницы ЛанÑер" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" -msgstr "ТÑжёлый лазер Виверн на гуÑеничном ходу" +msgid "Cobra Half-Tracks Mini-Pod" +msgstr "Кобра ПолугуÑеницы Миниракеты" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" -msgstr "Пулемёт Гадюка на полугуÑеничном ходу" +msgid "Cobra Tracks Mini-Pod" +msgstr "Кобра Миниракеты ГуÑеницы" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "Кобра ГуÑеницы Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "Кобра Ðд ПолугуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "Питон ГС пушка Ховер" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "Питон Бич ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "Питон Пушка ГауÑÑа ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "Питон ИмпульÑный лазер ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "Тигр ИмпульÑный лазер ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "Тигр ТÑжёлый лазер ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "Виверна Пушка ГауÑÑа ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "Виверна ИмпульÑный лазер ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "Виверна ТÑжёлый лазер ГуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "Гадюка Пулемёт ПолугуÑеницы" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" -msgstr "Огнемёт Гадюка на полугуÑеничном ходу" +msgstr "Гадюка Огнемёт ПолугуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ñ‚ÑƒÑ€ÐµÐ»ÑŒ Кобра Ховер" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ ÐšÐ¾Ð±Ñ€Ð° Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" -msgstr "ТÑжелый Пулемёт \"Гадюка\" на колёÑах" +msgstr "ТÑжелый пулемёт Гадюка КолёÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" -msgstr "Танк-Киллер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð¥Ð¾Ð²ÐµÑ€" +msgstr "Танк-Киллер Богомол Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" -msgstr "ТÑжелый пулемёт Кобра на гуÑеничном ходу" +msgstr "ТÑжелый пулемёт Кобра ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Кобра Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" -msgstr "ТÑжелый Пулемёт Кобра на колёÑах" +msgstr "ТÑжелый пулемёт Кобра КолёÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "ТÑжелый пулемет Кобра Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" -msgstr "Пулемёт Гадюка на колёÑах" +msgstr "Пулемёт Гадюка ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Двойной пулемет Гадюка ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Кобра Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" -msgstr "СреднÑÑ ÐŸÑƒÑˆÐºÐ° Скорпион Ховер" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Скорпион Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" -msgstr "СреднÑÑ ÐŸÑƒÑˆÐºÐ° Гадюка на гуÑеничном ходу" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Скорпион ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Питон Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Питон Ховер" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Питон Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" -msgstr "РельÑÐ¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ° ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "РельÑÐ¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" -msgstr "ИмпульÑный лазер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "ИмпульÑный лазер Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "ЛанÑер Питон ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" -msgstr "ЛанÑер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "ЛанÑер Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" -msgstr "ИÑтребитель танков МеÑÑ‚ÑŒ на гуÑеничном ходу" +msgstr "Танк-Киллер МеÑÑ‚ÑŒ ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Тигр на гуÑеничном ходу" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Тигр ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" -msgstr "Игломет Тигр ГуÑеницы" +msgstr "Игломёт Тигр ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" -msgstr "Игломет Кара ГуÑеницы" +msgstr "Игломёт Кара ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" -msgstr "Игломет МеÑÑ‚ÑŒ ГуÑеницы" +msgstr "Игломёт МеÑÑ‚ÑŒ ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" -msgstr "МеÑÑ‚ÑŒ ГуÑеницы РельÑопушка" +msgstr "МеÑÑ‚ÑŒ ГуÑеницы РельÑÐ¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "МеÑÑ‚ÑŒ ГуÑеницы Пушка ГауÑÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "МеÑÑ‚ÑŒ ГуÑеницы Бич ГауÑÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" -msgstr "ВВС КлаÑтерные бомбы ЖУК" +msgstr "ВВС КлаÑтерные бомбы Жук" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "ВВС Ðнтибункер Жук " #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" -msgstr "КлаÑтерный бомбардировщик Скорпион ВВС" +msgstr "ВВС КлаÑтерные бомбы Скорпион" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "ВВС Ðнтибункер Скорпион" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "ВВП ЛанÑер Жук" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1874 msgid "VTOL HPV Cannon Bug VTOL" -msgstr "ГиперÑкороÑÑ‚Ð½Ð°Ñ Ð¿ÑƒÑˆÐºÐ° ВВС Жук" +msgstr "ВВС ГС пушка Жук" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" -msgstr "ВВП ЛанÑер Ñкорпион" +msgstr "ВВП ЛанÑер Скорпион" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1876 -#, fuzzy msgid "VTOL HPV Cannon Scorpion VTOL" -msgstr "ВВП ГС Пушка Скорпион" +msgstr "ВВС ГС пушка Скорпион" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" -msgstr "ВВП ЛанÑер МантиÑ" +msgstr "ВВП ЛанÑер Богомол" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1878 msgid "VTOL HPV Cannon Mantis VTOL" -msgstr "ВВП ГС Пушка МантиÑ" +msgstr "ВВП ГС пушка Богомол" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" -msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð‘Ð¾Ð³Ð¾Ð¼Ð¾Ð» ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" -msgstr "ЛанÑер Скорпион на гуÑеничном ходу" +msgstr "ЛанÑер Скорпион ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Скорпион на гуÑеничном ходу" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Скорпион ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" -msgstr "ВВП ЛанÑер Ñкорпион" +msgstr "ЛанÑер Скорпион ВВП" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" -msgstr "ВВП Ðнтибункер Скорпион" +msgstr "Ðнтибункер Скорпион ВВП" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" -msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° колеÑа" +msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" -msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÐšÐ¾Ð±Ñ€Ð° ГуÑеницы" +msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÐšÐ¾Ð±Ñ€Ð° ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð¡ÐºÐ¾Ñ€Ð¿Ð¸Ð¾Ð½ ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" -msgstr "ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð“ÑƒÑеницы" +msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð‘Ð¾Ð³Ð¾Ð¼Ð¾Ð» ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" -msgstr "ЛанÑер Кобра гуÑеницы" +msgstr "ЛанÑер Кобра ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" -msgstr "Танк-Киллер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "Танк-Киллер Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" -msgstr "Бич ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð“ÑƒÑеницы" +msgstr "Бич Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" -msgstr "ТÑжелый пулемёт Скорпион на гуÑеничном ходу" +msgstr "ТÑжелый пулемёт Скорпион ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" -msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¡ÐºÐ¾Ñ€Ð¿Ð¸Ð¾Ð½ на гуÑеничном ходу" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¡ÐºÐ¾Ñ€Ð¿Ð¸Ð¾Ð½ ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" -msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ñкорпион Ховер" +msgstr "ТÑÐ¶Ñ‘Ð»Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¡ÐºÐ¾Ñ€Ð¿Ð¸Ð¾Ð½ Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Грузовик Кобра Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Грузовик Скорпион Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" -msgstr "Грузовик ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð¥Ð¾Ð²ÐµÑ€" +msgstr "Грузовик Богомол Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" -msgstr "Ðнтибункер Кобра на гуÑеничном ходу" +msgstr "Ðнтибункер Кобра ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "Ðнтибункер Скорпион ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" -msgstr "Ðнтибункер ÐœÐ°Ð½Ñ‚Ð¸Ñ Ð½Ð° гуÑеничном ходу" +msgstr "Ðнтибункер Богомол ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "ЛанÑер Гадюка ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" -msgstr "Миниракеты \"Кобра\" на полугуÑеничном ходу" +msgstr "Миниракеты Кобра ПолугуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" -msgstr "Миниракеты \"Кобра\" гуÑеницы" +msgstr "Миниракеты Кобра ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Блок миниракет Кобра ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" -msgstr "Ðд Кобра ПолугуÑеницы" +msgstr "Инферно Кобра ПолугуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1920 msgid "HPV Cannon Python Hover" -msgstr "ГС Пушка Питон Ховер" +msgstr "ГС пушка Питон Ховер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" -msgstr "Ракета Бич Питон на гуÑеничном ходу" +msgstr "Бич Питон ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" -msgstr "Пушка ГауÑÑа Питон на гуÑеничном ходу" +msgstr "Пушка ГауÑÑа Питон ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" -msgstr "ИмпульÑный лазер Питон на гуÑеничном ходу" +msgstr "ИмпульÑный лазер Питон ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" -msgstr "ИмпульÑный лазер Тигр на гуÑеничном ходу" +msgstr "ИмпульÑный лазер Тигр ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" -msgstr "ТÑжёлый лазер Тигр на гуÑеничном ходу" +msgstr "ТÑжёлый лазер Тигр ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" -msgstr "Пушка ГауÑÑа Виверн на гуÑеничном ходу" +msgstr "Пушка ГауÑÑа Виверна ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" -msgstr "ИмпульÑный лазер Крылатый Дракон на гуÑеничном ходу" +msgstr "ИмпульÑный лазер Виверна ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" -msgstr "ТÑжёлый лазер Крылатый Дракон на гуÑеничном ходу" +msgstr "ТÑжёлый лазер Виверна ГуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" -msgstr "Пулемёт Гадюка на полугуÑеничном ходу" +msgstr "Пулемёт Гадюка ПолугуÑеницы" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" -msgstr "Огнемёт Гадюка на полугуÑеничном ходу" +msgstr "Огнемёт Гадюка ПолугуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Инферно Кобра Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "СреднÑÑ Ð¿ÑƒÑˆÐºÐ° Кобра ГуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Инферно Питон Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Штурмовое орудие Питон Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "Штурмовое орудие Питон ПолугуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "ТÑжелый пулемёт Скорпион ПолугуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "ОÑÐ°Ð´Ð½Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Богомол Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "ИмпульÑный лазер Леопард Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "ИмпульÑный лазер Пантера Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "РельÑÐ¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Тигр Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "ИмпульÑный лазер Тигр Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "ÐŸÐ»Ð°Ð·Ð¼ÐµÐ½Ð½Ð°Ñ Ð¿ÑƒÑˆÐºÐ° Виверна ГуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "Бич Виверна ГуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Ð’Ñпышка Кара Ховер" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "Миниракеты Гадюка ПолугуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Блок миниракет Гадюка ГуÑеницы" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "ФоÑфорные бомбы Богомол ВВС" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "Бронебойные взрывчатые бомбы Богомол ВВС" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Бронебойные взрывчатые бомбы Кара ВВС" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "Бич Возмездие ВВС" #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" @@ -10030,11 +10988,11 @@ msgstr "СкороÑÑ‚ÑŒ ÑтроительÑтва +10%" #: data/mp/messages/resmessages12.rmsg:97 #: data/mp/messages/resmessagesall.rmsg:214 msgid "Cannon accuracy +10%" -msgstr "ТочноÑÑ‚ пушки +10%" +msgstr "ТочноÑÑ‚ÑŒ пушки +10%" #: data/mp/messages/resmessages12.rmsg:110 msgid "Flamer reload time -15%" -msgstr "перезарÑдка огнемета -15%" +msgstr "ПерезарÑдка огнемета -15%" #: data/mp/messages/resmessages12.rmsg:136 #: data/mp/messages/resmessages23.rmsg:175 @@ -10046,21 +11004,21 @@ msgstr "ПерезарÑдка пулемета -15%" #: data/mp/messages/resmessages23.rmsg:188 #: data/mp/messages/resmessages3.rmsg:1176 msgid "Mortar accuracy +10%" -msgstr "точноÑÑ‚ÑŒ миномёта +10%" +msgstr "ТочноÑÑ‚ÑŒ миномёта +10%" #: data/mp/messages/resmessages12.rmsg:175 #: data/mp/messages/resmessages3.rmsg:1189 msgid "Mortar reload time -10%" -msgstr "перезарÑдка миномета -10%" +msgstr "ПерезарÑдка миномета -10%" #: data/mp/messages/resmessages12.rmsg:201 msgid "Rocket reload time -15%" -msgstr "перезарÑдка ракеты -15%" +msgstr "ПерезарÑдка ракеты -15%" #: data/mp/messages/resmessages12.rmsg:214 #: data/mp/messages/resmessages3.rmsg:890 msgid "Cannon reload time -10%" -msgstr "перезарÑдка пушки -10%" +msgstr "ПерезарÑдка пушки -10%" #: data/mp/messages/resmessages12.rmsg:227 #: data/mp/messages/resmessages1.rmsg:579 @@ -10072,7 +11030,7 @@ msgstr "Урон пушки +25%" #: data/mp/messages/resmessages1.rmsg:748 #: data/mp/messages/resmessagesall.rmsg:175 msgid "Rocket accuracy +10%" -msgstr "точноÑÑ‚ÑŒ ракеты +10%" +msgstr "ТочноÑÑ‚ÑŒ ракеты +10%" #: data/mp/messages/resmessages1.rmsg:32 #: data/mp/messages/resmessages3.rmsg:71 @@ -10082,17 +11040,17 @@ msgstr "КинетичеÑÐºÐ°Ñ Ð±Ñ€Ð¾Ð½Ñ +35% ÐºÐ¾Ñ€Ð¿ÑƒÑ +30%" #: data/mp/messages/resmessages1.rmsg:97 msgid "Armour +35%, Body Points +30%" -msgstr "Ð±Ñ€Ð¾Ð½Ñ +35% ÐºÐ¾Ñ€Ð¿ÑƒÑ +30%" +msgstr "Ð‘Ñ€Ð¾Ð½Ñ +35% ÐºÐ¾Ñ€Ð¿ÑƒÑ +30%" #: data/mp/messages/resmessages1.rmsg:148 msgid "Armored guard tower with Lancer AT rocket" -msgstr "Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¾Ñ…Ñ€Ð°Ð½Ð½Ð°Ñ Ð²Ñ‹ÑˆÐºÐ° Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð¸Ñ†ÐµÐ¹ ЛанÑер" +msgstr "Ð‘Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¾Ñ…Ñ€Ð°Ð½Ð½Ð°Ñ Ð²Ñ‹ÑˆÐºÐ° Ñ Ñ€Ð°ÐºÐµÑ‚Ð½Ð¸Ñ†ÐµÐ¹ ЛанÑер" #: data/mp/messages/resmessages1.rmsg:253 #: data/mp/messages/resmessages2.rmsg:331 #: data/mp/messages/resmessages3.rmsg:422 msgid "Repair Speed +100%" -msgstr "ÑкороÑÑ‚ÑŒ ремонта +100%" +msgstr "СкороÑÑ‚ÑŒ ремонта +100%" #: data/mp/messages/resmessages1.rmsg:306 #, no-c-format @@ -10102,7 +11060,7 @@ msgstr "СкороÑÑ‚ÑŒ производÑтва +100% на модуль" #: data/mp/messages/resmessages1.rmsg:319 #: data/mp/messages/resmessagesall.rmsg:786 msgid "Factory output speed +60%" -msgstr "ÑкороÑÑ‚ÑŒ производÑтва +60%" +msgstr "СкороÑÑ‚ÑŒ производÑтва +60%" #: data/mp/messages/resmessages1.rmsg:345 msgid "Research speed +85%" @@ -10112,7 +11070,7 @@ msgstr "СкороÑÑ‚ÑŒ иÑÑледований +85%" #: data/mp/messages/resmessages2.rmsg:370 #: data/mp/messages/resmessages3.rmsg:448 msgid "Research speed +30%" -msgstr "ÑкороÑÑ‚ÑŒ иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ +30%" +msgstr "СкороÑÑ‚ÑŒ иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ +30%" #: data/mp/messages/resmessages1.rmsg:371 #: data/mp/messages/resmessages2.rmsg:58 @@ -10122,14 +11080,14 @@ msgstr "ÑкороÑÑ‚ÑŒ иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ +30%" #: data/mp/messages/resmessages3.rmsg:461 #: data/mp/messages/resmessages3.rmsg:474 msgid "Armor +35%, Body Points +30%" -msgstr "Ð±Ñ€Ð¾Ð½Ñ +35% ÐºÐ¾Ñ€Ð¿ÑƒÑ +30%" +msgstr "Ð‘Ñ€Ð¾Ð½Ñ +35% ÐºÐ¾Ñ€Ð¿ÑƒÑ +30%" #: data/mp/messages/resmessages1.rmsg:462 #: data/mp/messages/resmessages2.rmsg:500 #: data/mp/messages/resmessages3.rmsg:669 #: data/mp/messages/resmessages3.rmsg:682 msgid "Vehicle speed +5%" -msgstr "ÑкороÑÑ‚ÑŒ транÑпорта +5%" +msgstr "СкороÑÑ‚ÑŒ транÑпорта +5%" #: data/mp/messages/resmessages1.rmsg:475 #: data/mp/messages/resmessages2.rmsg:513 @@ -10142,13 +11100,13 @@ msgstr "КинетичеÑÐºÐ°Ñ Ð±Ñ€Ð¾Ð½Ñ +30% ÐºÐ¾Ñ€Ð¿ÑƒÑ +30%" #: data/mp/messages/resmessages1.rmsg:566 #: data/mp/messages/resmessages2.rmsg:747 msgid "Best Targets: Vehicles, Hardpoints" -msgstr "лучшие цели: наземный транÑпорт и орудийные уÑтановки" +msgstr "Лучшие цели: наземный транÑпорт и орудийные уÑтановки" #: data/mp/messages/resmessages1.rmsg:605 #: data/mp/messages/resmessages2.rmsg:786 #: data/mp/messages/resmessagesall.rmsg:773 msgid "Flamer damage +25%" -msgstr "урон огнемета +25%" +msgstr "Урон огнемета +25%" #: data/mp/messages/resmessages1.rmsg:644 #: data/mp/messages/resmessages1.rmsg:657 @@ -10183,7 +11141,7 @@ msgstr "Урон ракет +25%" #: data/mp/messages/resmessages23.rmsg:32 msgid "Power output +25%" -msgstr "Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð°Ñ Ð¼Ð¾Ñ‰Ð½Ð¾ÑÑ‚ÑŒ +25%" +msgstr "Ð’Ñ‹Ñ…Ð¾Ð´Ð½Ð°Ñ Ð¼Ð¾Ñ‰Ð½Ð¾ÑÑ‚ÑŒ +25%" #: data/mp/messages/resmessages23.rmsg:45 #: data/mp/messages/resmessages3.rmsg:513 @@ -10210,7 +11168,7 @@ msgstr "Улучшенные Ñ‚Ñ€Ð¾Ð¹Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ð° взрывчатки #: data/mp/messages/resmessages2.rmsg:734 #: data/mp/messages/resmessages3.rmsg:864 msgid "Bomb damage +25%" -msgstr "урон бомб +25%" +msgstr "Урон бомб +25%" #: data/mp/messages/resmessages2.rmsg:6 msgid "Thermal Armor +45%" @@ -10232,7 +11190,7 @@ msgstr "Ð’Ñе фабрики автоматичеÑки модернизиру #: data/mp/messages/resmessages2.rmsg:409 #: data/mp/messages/resmessages3.rmsg:500 msgid "Rearming speed +30%" -msgstr "ÑкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð¾Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð’Ð’Ð¡ +30%" +msgstr "СкороÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð¾Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð’Ð’Ð¡ +30%" #: data/mp/messages/resmessages2.rmsg:526 msgid "Thermal armor +40%" @@ -10299,12 +11257,12 @@ msgstr "ТочноÑÑ‚ÑŒ ракеты +10%" #: data/mp/messages/resmessages3.rmsg:1085 msgid "Missile damage +25%" -msgstr "урон ракеты +25%" +msgstr "Урон ракеты +25%" #: data/mp/messages/resmessages3.rmsg:1150 #: data/mp/messages/resmessages3.rmsg:1163 msgid "Missile reload time -15%" -msgstr "перезарÑдка ракеты -15%" +msgstr "ПерезарÑдка ракеты -15%" #: data/mp/messages/resmessages3.rmsg:1241 msgid "Rail Gun accuracy +10%" @@ -10316,7 +11274,7 @@ msgstr "Урон рельÑовой пушки +25%" #: data/mp/messages/resmessages3.rmsg:1267 msgid "Rail Gun reload time -15%" -msgstr "перезарÑдка рельÑовой пушки -15%" +msgstr "ПерезарÑдка рельÑовой пушки -15%" #: data/mp/messages/resmessagesall.rmsg:84 msgid "Sensor Range +25%" @@ -10388,7 +11346,7 @@ msgstr "Боевой инженер, может возводить поÑтро #: data/mp/messages/resmessagesall.rmsg:317 msgid "Mechanic with repair ability" -msgstr "Механик - может воÑÑтанавливать" +msgstr "Механик-реÑтавратор" #: data/mp/messages/resmessagesall.rmsg:330 msgid "Incendiary Howitzer may be assigned to a sensor" @@ -10636,21 +11594,21 @@ msgid "Upgraded battlefield computer system" msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð±Ð¾ÐµÐ²Ð°Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð½Ð°Ñ ÑиÑтема" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "КиберТранÑпорт" #: data/mp/messages/strings/names.txt:144 msgid "Light Cannon Viper Half-tracks" -msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Гадюка на полугуÑеничном ходу" +msgstr "Ð›ÐµÐ³ÐºÐ°Ñ Ð¿ÑƒÑˆÐºÐ° Гадюка ПолугуÑеницы" #: data/mp/messages/strings/names.txt:175 msgid "Repair Turret Viper Half-track" -msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° на полугуÑеничном ходу" +msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð“Ð°Ð´ÑŽÐºÐ° ПолугуÑеницы" #: data/mp/messages/strings/names.txt:183 msgid "Mini-Rocket Array Viper Wheels" -msgstr "Блок миниракет Гадюка на колёÑах" +msgstr "Блок миниракет Гадюка КолёÑа" #: data/mp/messages/strings/names.txt:184 msgid "Bunker Buster Rockets Viper Wheels" @@ -10665,7 +11623,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¼Ð¸Ð½Ð¸Ñ€Ð°ÐºÐµÑ‚ Кобра на полугуÑеницы" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Обнаружитель датчиков" @@ -10675,636 +11633,647 @@ msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð”ÐµÑ‚ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð¼ датчиков" #: data/mp/messages/strings/names.txt:385 msgid "Nexus Link" -msgstr "СинаптичеÑкие ÑвÑзи ÐЕКСУС" +msgstr "ÐейроÑвÑзь ÐЕКСУС" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" -msgstr "Туррель ÑÐ¸Ð½Ð°Ð¿Ñ ÑвÑзи ÐЕКСУС" +msgstr "Турель нейроÑвÑзи ÐЕКСУС" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Ð‘ÐµÑ‚Ð¾Ð½Ð½Ð°Ñ Ñтена" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" -msgstr "ÐдÑкий бункер" +msgstr "Инферно бункер" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "Зенитка Торнадо" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "Зенитка Циклон" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¸Ð¼Ð¿ÑƒÐ»ÑŒÑным лазером" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð˜Ð¼Ð¿ÑƒÐ»ÑŒÑным лазером" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Ракетный блок Серафим" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "Блок миниракет" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Центр Ð£Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð›Ð°Ð·ÐµÑ€Ð½Ð¼Ð¸ Ñпутниками" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "ВВС КлаÑтерные бомбы" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ Ñтена ÐльÑнÑа" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Стена ÐЕКСУС" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ Ñтена ÐЕКСУС" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "ПлаÑткрит МК3" -#: data/mp/messages/strings/names.txt:719 -msgid "Plasteel" -msgstr "ПлаÑтил" - #: data/mp/messages/strings/names.txt:720 -msgid "Plasteel Mk2" -msgstr "ПлаÑтил МК2" +msgid "Plasteel" +msgstr "ПлаÑталь" #: data/mp/messages/strings/names.txt:721 -msgid "Plasteel Mk3" -msgstr "ПлаÑтил МК3" +msgid "Plasteel Mk2" +msgstr "ПлаÑталь МК2" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:722 +msgid "Plasteel Mk3" +msgstr "ПлаÑталь МК3" + +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "УÑтановка ГС пушки" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ñ€Ð°ÐºÐµÑ‚ Сериафим" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð¾Ð³Ð½ÐµÐ¼ÐµÑ‚Ð¾Ð¼" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Укрепточка Ñ Ð“Ð¡ пушкой" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Ðвтоматизированное производÑтво" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" -msgstr "Ðвтоматизированное производÑтво МК2" +msgstr "Ðвтоматизированное производÑтво Ðœk2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" -msgstr "Ðвтоматизированное производÑтво МК3" +msgstr "Ðвтоматизированное производÑтво Ðœk3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Роботизированное производÑтво" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" -msgstr "Роботизированное производÑтво МК2" +msgstr "Роботизированное производÑтво Ðœk2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" -msgstr "Роботизированное производÑтво МК3" +msgstr "Роботизированное производÑтво Ðœk3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Продвинутое производÑтво" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" -msgstr "Продвинутое производÑтво МК2" +msgstr "Продвинутое производÑтво Ðœk2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Ð¡Ð°Ð¼Ð¾Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ñтва" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" -msgstr "Продвинутое производÑтво МК3" +msgstr "Продвинутое производÑтво Ðœk3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Ðвтоматизированный ремонтный блок" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Ðвтоматизированный ремонтный блок" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" -msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš2" +msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑкаÑ" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" -msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš3" +msgstr "Ð Ð¾Ð±Ð¾Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" -msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš2" +msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" -msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ ÐœÐš3" +msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ð¼Ð°ÑтерÑÐºÐ°Ñ Ðœk3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Ðвтопочинка" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "ТÑÐ¶ÐµÐ»Ð°Ñ Ñ€ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ Ñ‚ÑƒÑ€Ñ€ÐµÐ»ÑŒ" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Программы захвата ÐЕКСУС" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Программы ÑÐ¾Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ ÐЕКСУС" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" -msgstr "Программы ÑÐ¾Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ ÐЕКСУС МК2" +msgstr "Программы ÑÐ¾Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ ÐЕКСУС Ðœk2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" -msgstr "Программы ÑÐ¾Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ ÐЕКСУС МК3" +msgstr "Программы ÑÐ¾Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ ÐЕКСУС Ðœk3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "ОтÑек Ð´Ð»Ñ ÐºÐ»Ð°Ñтерных бомб" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Разрывные ÑнарÑды Ð´Ð»Ñ Ð±Ð¾Ð¼Ð±" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð½Ð°Ñ Ð±Ð¾Ð¼Ð±Ð¾Ð²Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð°Ñ Ð±Ð¾Ð¼Ð±Ð¾Ð²Ð°Ñ Ð±Ð¾ÐµÐ³Ð¾Ð»Ð¾Ð²ÐºÐ°" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð—Ð°Ñ€Ñдка Гаубицы" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "СкороÑтной зарÑдчик пулемета" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Кмпьютерное наведение рельÑовых орудий" -#: data/mp/messages/strings/names.txt:1174 -#, fuzzy +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "Разрывные миниракеты" -#: data/mp/messages/strings/names.txt:1175 -#, fuzzy +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "Разрывные миниракеты МК2" -#: data/mp/messages/strings/names.txt:1176 -#, fuzzy +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "Разрывные миниракеты МК3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Ð‘Ñ‹ÑˆÐ½Ñ Ñо Штурмовым орудием" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Ð ÐµÐ¼Ð¾Ð½Ñ‚Ð½Ð°Ñ ÐšÐ¾Ð±Ñ€Ð° ГуÑеницы" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "ГС пушка питон гуÑеницы" -#: data/mp/messages/strings/names.txt:1514 -msgid "Bunker Buster Cobra Hover" -msgstr "Ðнтибункер Кобра Ховер" - -#: data/mp/messages/strings/names.txt:1516 -msgid "Sensor Upgrade Mk2" -msgstr "Улучшение датчика МК2" - #: data/mp/messages/strings/names.txt:1517 +msgid "Bunker Buster Cobra Hover" +msgstr "Ðнтибункер Кобра Ховер" + +#: data/mp/messages/strings/names.txt:1519 +msgid "Sensor Upgrade Mk2" +msgstr "Улучшение датчика Ðœk2" + +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" -msgstr "Улучшение датчика МК3" +msgstr "Улучшение датчика Ðœk3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" -msgstr "Паротурбинный генератор МК2" +msgstr "Паротурбинный генератор Ðœk2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" -msgstr "Газотурбинный генератор МК2 " - -#: data/mp/messages/strings/names.txt:1523 -msgid "Gas Turbine Generator Mk3" -msgstr "Газотурбинный генератор МК3" +msgstr "Газотурбинный генератор МК2" #: data/mp/messages/strings/names.txt:1526 -msgid "Vapor Turbine Generator Mk3" -msgstr "Паротурбинный генератор МК3" +msgid "Gas Turbine Generator Mk3" +msgstr "Газотурбинный генератор Ðœk3" -#: data/mp/messages/strings/names.txt:1611 -msgid "Thermite Flamer Cyborg" -msgstr "Термитный огнеметчик" +#: data/mp/messages/strings/names.txt:1529 +msgid "Vapor Turbine Generator Mk3" +msgstr "Паротурбинный генератор Ðœk3" #: data/mp/messages/strings/names.txt:1614 -msgid "Thermite Flamer" -msgstr "Термитный Огнемет" +msgid "Thermite Flamer Cyborg" +msgstr "Термитный огнемётчик" -#: data/mp/messages/strings/names.txt:1616 -msgid "Grenadier Cyborg" -msgstr "Киборг Минометчик" +#: data/mp/messages/strings/names.txt:1617 +msgid "Thermite Flamer" +msgstr "Термитный огнёмет" #: data/mp/messages/strings/names.txt:1619 -msgid "Grenadier" -msgstr "Минометчик" +msgid "Grenadier Cyborg" +msgstr "Киборг миномётчик" + +#: data/mp/messages/strings/names.txt:1622 +msgid "Grenadier" +msgstr "Миномётчик" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Военный инженер" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" -msgstr "Киборг-Механик" +msgstr "Киборг-механик" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 -msgid "Incendiary Howitzer" -msgstr "ÐдÑÐºÐ°Ñ Ð“Ð°ÑƒÐ±Ð¸Ñ†Ð°" - -#: data/mp/messages/strings/names.txt:1637 #: data/mp/messages/strings/names.txt:1638 -msgid "Incendiary Howitzer Emplacement" -msgstr "УÑтановка ÐдÑкой Гаубицы" - #: data/mp/messages/strings/names.txt:1639 +msgid "Incendiary Howitzer" +msgstr "ÐдÑÐºÐ°Ñ Ð³Ð°ÑƒÐ±Ð¸Ñ†Ð°" + #: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 +msgid "Incendiary Howitzer Emplacement" +msgstr "УÑтановка ÐдÑкой гаубицы" + +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Плазменный огнемет" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 -msgid "Plasmite Flamer Bunker" -msgstr "Бункер Ñ ÐŸÐ»Ð°Ð·Ð¼ÐµÐ½Ð½Ñ‹Ð¼ Огнеметом" - -#: data/mp/messages/strings/names.txt:1643 #: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 +msgid "Plasmite Flamer Bunker" +msgstr "Бункер Ñ Ð¿Ð»Ð°Ð·Ð¼ÐµÐ½Ð½Ñ‹Ð¼ огнемётом" + +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "ÐдÑкий миномет" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" -msgstr "ÐдÑкий Минометный окоп" +msgstr "ÐдÑкий минометный окоп" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" -msgstr "Супер Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð°" - -#: data/mp/messages/strings/names.txt:1651 -msgid "Cyborg Superdense Thermal Armor Mk2" -msgstr "Супер Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð° МК2" - -#: data/mp/messages/strings/names.txt:1652 -msgid "Cyborg Superdense Thermal Armor Mk3" -msgstr "Супер Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð° МК3" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð°" #: data/mp/messages/strings/names.txt:1654 +msgid "Cyborg Superdense Thermal Armor Mk2" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð° Ðœk2" + +#: data/mp/messages/strings/names.txt:1655 +msgid "Cyborg Superdense Thermal Armor Mk3" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐºÐ¸Ð±Ð¾Ñ€Ð³Ð° Ðœk3" + +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" -msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐœÐš2" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ Ðœk2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" -msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ ÐœÐš3" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð¿Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ñ‚ÐµÑ€Ð¼Ð¾Ð±Ñ€Ð¾Ð½Ñ Ðœk3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "СупертÑжелый Ñтрелок" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 -msgid "Super Auto-Cannon Cyborg" -msgstr "Супер Ðвтоматчик" - +#: data/mp/messages/strings/names.txt:1669 #: data/mp/messages/strings/names.txt:1670 #: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 +msgid "Super Auto-Cannon Cyborg" +msgstr "Супер автоматчик" + #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Супер ГСП Ñтрелок" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Супер Танк-Киллер" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "ТÑжёлый лазер" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "ТÑжёлый лазер ВВС" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "УÑтановка Ñ‚Ñжелого лазера" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Ð¡Ð¿Ð°Ñ€ÐµÐ½Ð½Ð°Ñ ÑˆÑ‚ÑƒÑ€Ð¼Ð¾Ð²Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Бункер Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ штурмовой пушкой" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Центр ÑвÑзи Ñо Ñпутником" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Датчик раÑширенного Ñпектра" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ Ñ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ¾Ð¼ раÑширенного Ñпектра" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "ÐŸÐ»Ð°Ð·Ð¼ÐµÐ½Ð½Ð°Ñ Ð¿ÑƒÑˆÐºÐ°" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" -msgstr "УÑтановка Плазменной Пушки" - #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "УÑтановка плазменной пушки" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Супер киборг Ñ Ð»Ð°Ð·ÐµÑ€Ð¾Ð¼" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Супер иглометчик" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Супер Бич ракетометчик" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Ð‘Ð°ÑˆÐ½Ñ ÑвÑзи ÐЕКСУС" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "ЭМИ-пушка" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" -msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð­ÐœÐ˜ Пушки" +msgstr "Ð‘Ð°ÑˆÐ½Ñ Ð­ÐœÐ˜ пушки" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" -msgstr "КрепоÑÑ‚ÑŒ ТÑжелого РельÑового орудиÑ" - -#: data/mp/messages/strings/names.txt:1747 -msgid "Mass Driver" -msgstr "ТÑжелое РельÑовое орудие" +msgstr "КрепоÑÑ‚ÑŒ Ñ‚Ñжелого рельÑового орудиÑ" #: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 -msgid "Cannon Fortress" -msgstr "КрепоÑÑ‚ÑŒ Ñ ÐŸÑƒÑˆÐºÐ¾Ð¹" +msgid "Mass Driver" +msgstr "ТÑжелое рельÑовое орудие" +#: data/mp/messages/strings/names.txt:1753 #: data/mp/messages/strings/names.txt:1754 #: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 -msgid "Heavy Rocket Bastion" -msgstr "КрепоÑÑ‚ÑŒ ТÑжелых Ракет" +msgid "Cannon Fortress" +msgstr "КрепоÑÑ‚ÑŒ Ñ Ð¿ÑƒÑˆÐºÐ¾Ð¹" +#: data/mp/messages/strings/names.txt:1757 #: data/mp/messages/strings/names.txt:1758 #: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +msgid "Heavy Rocket Bastion" +msgstr "КрепоÑÑ‚ÑŒ Ñ‚Ñжелых ракет" + +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" -msgstr "КрепоÑÑ‚ÑŒ Ñ Ð¢Ñжелой ПуÑковой уÑтановкой" - -#: data/mp/messages/strings/names.txt:1764 -msgid "Heavy Body - Wyvern" -msgstr "ТÑжелый ÐºÐ¾Ñ€Ð¿ÑƒÑ - Виверн" - -#: data/mp/messages/strings/names.txt:1765 -msgid "Wyvern" -msgstr "Виверн" +msgstr "КрепоÑÑ‚ÑŒ Ñ Ñ‚Ñжелой пуÑковой уÑтановкой" #: data/mp/messages/strings/names.txt:1767 +msgid "Heavy Body - Wyvern" +msgstr "ТÑжелый ÐºÐ¾Ñ€Ð¿ÑƒÑ - Виверна" + +#: data/mp/messages/strings/names.txt:1768 +msgid "Wyvern" +msgstr "Виверна" + +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "МногоÑтвольный ÐºÐ¾Ñ€Ð¿ÑƒÑ - Дракон" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Дракон" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð³Ð¾Ñ€ÑŽÑ‡Ð°Ñ ÑмеÑÑŒ Плазмы" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" -msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð³Ð¾Ñ€ÑŽÑ‡Ð°Ñ ÑмеÑÑŒ Плазмы МК2" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð³Ð¾Ñ€ÑŽÑ‡Ð°Ñ ÑмеÑÑŒ Плазмы Ðœk2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" -msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð³Ð¾Ñ€ÑŽÑ‡Ð°Ñ ÑмеÑÑŒ Плазмы МК3" +msgstr "Ð¡ÑƒÐ¿ÐµÑ€Ð³Ð¾Ñ€ÑŽÑ‡Ð°Ñ ÑмеÑÑŒ Плазмы Ðœk3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "ЭМИ миномет" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" -msgstr "уÑтановка Ñ Ð­ÐœÐ˜ минометом" - #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "УÑтановка Ñ Ð­ÐœÐ˜ минометом" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "Ð›Ð°Ð·ÐµÑ€Ð½Ð°Ñ Ð·ÐµÐ½Ð¸Ñ‚ÐºÐ° ПредвеÑтник Бури" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "УÑтановка ПредвеÑтника Бури" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Ð£ÐºÑ€ÐµÐ¿Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ Ð¿ÑƒÑковой Защитник" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Вихрь" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Циклон" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "ÐžÐ±Ð¾Ñ€Ð¾Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ ÐœÑтитель" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Спаренное штурмовое орудие" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Укрепточка Ñ Ð´Ð²Ð¾Ð¹Ð½Ñ‹Ð¼ штурмовым орудием" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "Плазменные Бомбы ВВС" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Плазменные Бомбы" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "ЭМИ ракета ВВС" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "ПуÑÐºÐ¾Ð²Ð°Ñ Ð­ÐœÐ˜ ракет" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ II" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ III" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ IV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "ВВС ГС пушка жук" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" -msgstr "ВВП ГС Пушка Скорпион" +msgstr "ВВП ГС пушка Ñкорпион" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" -msgstr "ВВС ГС пушка мантиÑ" +msgstr "ВВС ГС пушка Богомол" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "Блок миниракет Кобра ГуÑеницы" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "ГС пушка питон ховер" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Бронебойные взрывчатые бомбы Кара ВВС" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11428,39 +12397,35 @@ msgstr "Упрощенный китайÑкий" #: lib/framework/i18n.c:100 #: lib/framework/i18n.c:152 msgid "Traditional Chinese" -msgstr "китайÑкий" +msgstr "Традиционный китайÑкий" #: lib/framework/i18n.c:134 msgid "Latin" msgstr "ЛатинÑкий" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Введите пароль" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" -msgstr "не могу получить Ð¸Ð¼Ñ Ð¾Ñновного Ñервера (%s)!" +msgstr "Ðе могу получить Ð¸Ð¼Ñ Ð¾Ñновного Ñервера (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Ðе удалоÑÑŒ ÑоединитьÑÑ Ñ Ð»Ð¾Ð±Ð±Ð¸-Ñервером. проверьте, открыт-ли TCP-порт %u Ð´Ð»Ñ Ð¸ÑходÑщего траффика." -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", моды:" - #: src/challenge.c:188 -#: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:1015 +#: src/hci.c:3816 +#: src/hci.c:3965 +#: src/hci.c:4482 +#: src/hci.c:5668 #: src/intelmap.c:543 -#: src/intorder.c:787 +#: src/intorder.c:782 #: src/loadsave.c:256 #: src/multimenu.c:479 #: src/multimenu.c:1357 @@ -11492,7 +12457,7 @@ msgstr "папка Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸" #: src/clparse.c:235 msgid "Show debug for given level" -msgstr "показать отладку данного уровнÑ" +msgstr "Показать отладку данного уровнÑ" #: src/clparse.c:235 msgid "debug level" @@ -11608,15 +12573,15 @@ msgstr "ХоÑÑ‚" msgid "go directly to host screen" msgstr "прÑмо на Ñкран хоÑта" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:446 +#: src/configuration.c:447 +#: src/multistat.c:124 msgid "Player" msgstr "Игрок" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "ÐÐ¾Ð²Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°" @@ -11655,18 +12620,18 @@ msgstr "МощноÑÑ‚ÑŒ двигателÑ" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "МаÑÑа" @@ -11680,127 +12645,127 @@ msgstr "Ð’Ñего требуетÑÑ Ñнергии" msgid "Total Body Points" msgstr "Общее бронирование корпуÑа" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "ИÑпользование Ñнергии" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "ТранÑпортник" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Гидра" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "ДальноÑÑ‚ÑŒ ÑенÑора" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "МощноÑÑ‚ÑŒ ÑенÑора" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ЕМ МощноÑÑ‚ÑŒ" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Бронирование" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "ДальноÑÑ‚ÑŒ" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Урон" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "СкороÑтрельноÑÑ‚ÑŒ" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "СкороÑÑ‚ÑŒ в воздухе" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "СкороÑÑ‚ÑŒ по дороге" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "СкороÑÑ‚ÑŒ по бездорожью" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "СкороÑÑ‚ÑŒ по воде" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Вооружение" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "СиÑтемы" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Игрок ушел" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" -msgstr "Игрок пал" +msgstr "Игрок иÑчез" -#: src/display.c:1661 +#: src/display.c:1679 msgid "Cannot Build. Oil Resource Burning." msgstr "СтроительÑтво невозможно. Горит нефть." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1859 +#: src/display.c:2462 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - повреждение %d%% - опыт %d, %s" -#: src/display.c:1857 +#: src/display.c:1875 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Ñоюзник %d%% - опыт %d, %s" -#: src/display.c:2047 +#: src/display.c:2077 msgid "Truck ordered to build Oil Derrick" msgstr "Грузовику приказано Ñтроить нефтевышку" -#: src/display.c:2048 +#: src/display.c:2078 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Грузовику приказано Ñтроить нефтевышку" -#: src/display.c:2049 +#: src/display.c:2079 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Грузовику приказано Ñтроить нефтевышку" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Юнит потерÑн!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" -msgstr "поÑтройка воÑÑтановлена" +msgstr "ПоÑтройка воÑÑтановлена" -#: src/droid.c:2935 +#: src/droid.c:2956 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" @@ -11808,7 +12773,7 @@ msgstr[0] "Выбрана группа %u - %u юнит" msgstr[1] "Выбрана группа %u - %u юнита" msgstr[2] "Выбрана группа %u - %u юнитов" -#: src/droid.c:2948 +#: src/droid.c:2969 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" @@ -11816,7 +12781,7 @@ msgstr[0] "%u юнит назначен группе %u" msgstr[1] "%u юнита назначено группе %u" msgstr[2] "%u юнитов назначено группе %u" -#: src/droid.c:2961 +#: src/droid.c:2982 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" @@ -11824,516 +12789,514 @@ msgstr[0] "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° группе %u - %u юнит" msgstr[1] "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° группе %u - %u юнита" msgstr[2] "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° группе %u - %u юнитов" -#: src/droid.c:2965 +#: src/droid.c:2986 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" -msgstr[0] "Соединить Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ %u - %u Юнит" -msgstr[1] "Соединить Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ %u - %u Юниты" -msgstr[2] "Соединить Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ %u - %u Юниты" +msgstr[0] "Соединить Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ %u - %u юнит" +msgstr[1] "Соединить Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ %u - %u юнита" +msgstr[2] "Соединить Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ %u - %u юнитов" -#: src/droid.c:3249 +#: src/droid.c:3270 msgid "Rookie" msgstr "Ðовобранец" -#: src/droid.c:3250 +#: src/droid.c:3271 msgctxt "rank" msgid "Green" msgstr "Молодой" -#: src/droid.c:3251 +#: src/droid.c:3272 msgid "Trained" msgstr "Тренированный" -#: src/droid.c:3252 +#: src/droid.c:3273 msgid "Regular" msgstr "Опытный" -#: src/droid.c:3253 +#: src/droid.c:3274 msgid "Professional" msgstr "ПрофеÑÑионал" -#: src/droid.c:3254 +#: src/droid.c:3275 msgid "Veteran" msgstr "Ветеран" -#: src/droid.c:3255 +#: src/droid.c:3276 msgid "Elite" msgstr "Элита" -#: src/droid.c:3256 +#: src/droid.c:3277 msgid "Special" msgstr "СпециалиÑÑ‚" -#: src/droid.c:3257 +#: src/droid.c:3278 msgid "Hero" msgstr "Герой" -#: src/frontend.c:252 +#: src/frontend.c:253 msgid "Single Player" msgstr "Один игрок" -#: src/frontend.c:253 +#: src/frontend.c:254 msgid "Multi Player" msgstr "МногопользовательÑÐºÐ°Ñ Ð¸Ð³Ñ€Ð°" -#: src/frontend.c:254 -#: src/frontend.c:312 +#: src/frontend.c:255 +#: src/frontend.c:313 msgid "Tutorial" msgstr "Обучение" -#: src/frontend.c:255 +#: src/frontend.c:256 msgid "Options" msgstr "Параметры" -#: src/frontend.c:256 +#: src/frontend.c:257 msgid "View Intro" msgstr "Показать Ð’Ñтупление" -#: src/frontend.c:258 +#: src/frontend.c:259 msgid "Quit Game" msgstr "Выйти из игры" -#: src/frontend.c:260 +#: src/frontend.c:261 msgid "MAIN MENU" msgstr "ГЛÐÐ’ÐОЕ МЕÐЮ" -#: src/frontend.c:313 +#: src/frontend.c:314 msgid "Fast Play" msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð¸Ð³Ñ€Ð°" -#: src/frontend.c:314 +#: src/frontend.c:315 msgid "TUTORIALS" msgstr "ОБУЧЕÐИЕ" #. TRANSLATORS: "Return", in this context, means "return to previous screen/menu" -#: src/frontend.c:316 -#: src/frontend.c:376 -#: src/frontend.c:529 -#: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:317 +#: src/frontend.c:377 +#: src/frontend.c:530 +#: src/frontend.c:592 +#: src/frontend.c:726 +#: src/frontend.c:865 +#: src/frontend.c:972 +#: src/frontend.c:1179 +#: src/frontend.c:1322 msgctxt "menu" msgid "Return" msgstr "Ðазад" -#: src/frontend.c:370 +#: src/frontend.c:371 msgid "New Campaign" msgstr "ÐÐ¾Ð²Ð°Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½Ð¸Ñ" -#: src/frontend.c:371 +#: src/frontend.c:372 msgid "Start Skirmish Game" msgstr "Ðачать Сражение" -#: src/frontend.c:372 +#: src/frontend.c:373 msgid "Challenges" msgstr "Вызов на поединок" -#: src/frontend.c:373 +#: src/frontend.c:374 #: src/ingameop.c:293 msgid "Load Game" msgstr "Загрузить игру" -#: src/frontend.c:375 +#: src/frontend.c:376 msgid "SINGLE PLAYER" msgstr "ОДИÐОЧÐÐЯ ИГРÐ" -#: src/frontend.c:473 +#: src/frontend.c:474 #: src/ingameop.c:519 -#: src/mission.c:2526 -#: src/mission.c:2631 +#: src/mission.c:2534 +#: src/mission.c:2639 msgid "Load Saved Game" msgstr "Загрузить Игру" -#: src/frontend.c:524 +#: src/frontend.c:525 msgid "MULTI PLAYER" msgstr "МУЛЬТИПЛЕЕР" -#: src/frontend.c:526 +#: src/frontend.c:527 msgid "Host Game" msgstr "Создать игру" -#: src/frontend.c:527 +#: src/frontend.c:528 msgid "Join Game" msgstr "ПриÑоединитьÑÑ" -#: src/frontend.c:584 -#: src/multiint.c:1254 +#: src/frontend.c:585 +#: src/multiint.c:1144 msgid "OPTIONS" msgstr "ПÐРÐМЕТРЫ" -#: src/frontend.c:585 +#: src/frontend.c:586 msgid "Game Options" msgstr "ÐаÑтройки игры" -#: src/frontend.c:586 +#: src/frontend.c:587 msgid "Graphics Options" msgstr "ÐаÑтройки графики" -#: src/frontend.c:587 +#: src/frontend.c:588 msgid "Video Options" msgstr "ÐаÑтройки видео" -#: src/frontend.c:588 +#: src/frontend.c:589 #: src/ingameop.c:288 msgid "Audio Options" msgstr "ÐаÑтройки звука" -#: src/frontend.c:589 +#: src/frontend.c:590 msgid "Mouse Options" msgstr "ÐаÑтройки Мыши" -#: src/frontend.c:590 +#: src/frontend.c:591 msgid "Key Mappings" msgstr "РаÑÑкладка клавиатуры" -#: src/frontend.c:652 +#: src/frontend.c:653 msgid "Video Playback" msgstr "ВоÑпроизведение видео" -#: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:657 +#: src/frontend.c:819 msgid "1X" msgstr "1Ð¥" -#: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:661 +#: src/frontend.c:809 msgid "2X" msgstr "2X" -#: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:665 +#: src/frontend.c:814 +#: src/frontend.c:937 +#: src/frontend.c:995 msgid "Fullscreen" msgstr "Полный Ñкран" -#: src/frontend.c:674 +#: src/frontend.c:675 msgid "Screen Shake" msgstr "Дрожание Ñкрана" -#: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:678 +#: src/frontend.c:706 +#: src/frontend.c:714 +#: src/frontend.c:750 +#: src/frontend.c:786 +#: src/frontend.c:795 +#: src/frontend.c:958 +#: src/frontend.c:1056 +#: src/frontend.c:1094 +#: src/frontend.c:1130 +#: src/frontend.c:1142 +#: src/frontend.c:1154 +#: src/frontend.c:1166 +#: src/frontend.c:1202 +#: src/frontend.c:1215 +#: src/frontend.c:1229 +#: src/frontend.c:1243 msgid "On" msgstr "Вкл." -#: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:682 +#: src/frontend.c:702 +#: src/frontend.c:718 +#: src/frontend.c:745 +#: src/frontend.c:781 +#: src/frontend.c:799 +#: src/frontend.c:962 +#: src/frontend.c:1051 +#: src/frontend.c:1089 +#: src/frontend.c:1134 +#: src/frontend.c:1146 +#: src/frontend.c:1158 +#: src/frontend.c:1170 +#: src/frontend.c:1197 +#: src/frontend.c:1210 +#: src/frontend.c:1224 +#: src/frontend.c:1238 msgid "Off" msgstr "Выкл." -#: src/frontend.c:686 -#: src/multiint.c:1323 +#: src/frontend.c:687 +#: src/multiint.c:1213 msgid "Fog" msgstr "Туман" -#: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:690 +#: src/frontend.c:768 msgid "Mist" msgstr "Мгла" -#: src/frontend.c:693 -#: src/frontend.c:768 -#: src/multiint.c:1325 +#: src/frontend.c:694 +#: src/frontend.c:761 +#: src/multiint.c:1215 msgid "Fog Of War" msgstr "Туман войны" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:699 msgid "Subtitles" msgstr "Субтитры" -#: src/frontend.c:718 +#: src/frontend.c:711 msgid "Shadows" msgstr "Тени" -#: src/frontend.c:729 +#: src/frontend.c:722 msgid "GRAPHICS OPTIONS" msgstr "ÐаÑтройки графики" -#: src/frontend.c:860 +#: src/frontend.c:853 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "ГромкоÑÑ‚ÑŒ голоÑа" -#: src/frontend.c:864 +#: src/frontend.c:857 #: src/ingameop.c:182 msgid "FX Volume" msgstr "ГромкоÑÑ‚ÑŒ Ñффектов" -#: src/frontend.c:868 +#: src/frontend.c:861 #: src/ingameop.c:187 msgid "Music Volume" msgstr "ГромкоÑÑ‚ÑŒ музыкы" -#: src/frontend.c:875 +#: src/frontend.c:868 msgid "AUDIO OPTIONS" msgstr "ÐаÑтройки аудио" -#: src/frontend.c:940 +#: src/frontend.c:933 msgid "Graphics Mode*" msgstr "ГрафичеÑкий режим*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:941 +#: src/frontend.c:990 msgid "Windowed" msgstr "Ð’ окне" -#: src/frontend.c:952 +#: src/frontend.c:945 msgid "Resolution*" msgstr "Разрешение*" -#: src/frontend.c:957 +#: src/frontend.c:950 msgid "Texture size" msgstr "Размер текÑтур" -#: src/frontend.c:961 +#: src/frontend.c:954 msgid "Vertical sync*" msgstr "Ð’ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÑинхронизациÑ*" -#: src/frontend.c:973 +#: src/frontend.c:966 msgid "* Takes effect on game restart" msgstr "* ПрименитÑÑ Ð¿Ð¾Ñле перезагрузки игры" -#: src/frontend.c:976 +#: src/frontend.c:969 msgid "VIDEO OPTIONS" msgstr "ÐаÑтройки видео" -#: src/frontend.c:1134 +#: src/frontend.c:1127 msgid "Reverse Rotation" msgstr "ИнверÑÐ¸Ñ Ð¼Ñ‹ÑˆÐ¸" -#: src/frontend.c:1145 +#: src/frontend.c:1138 msgid "Trap Cursor" msgstr "Захват курÑора" -#: src/frontend.c:1157 +#: src/frontend.c:1150 msgid "Colored Cursors*" -msgstr "цветные курÑоры *" +msgstr "Цветные курÑоры *" -#: src/frontend.c:1170 +#: src/frontend.c:1163 msgid "Switch Mouse Buttons" msgstr "ÐаÑтройки Мыши" -#: src/frontend.c:1180 +#: src/frontend.c:1173 msgid "* May negatively affect performance" -msgstr "*может Ñнизить производительноÑÑ‚ÑŒ" +msgstr "* Может Ñнизить производительноÑÑ‚ÑŒ" -#: src/frontend.c:1183 +#: src/frontend.c:1176 msgid "MOUSE OPTIONS" msgstr "ÐаÑтройки мыши" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1277 +#: src/frontend.c:1343 msgid "Difficulty" msgstr "СложноÑÑ‚ÑŒ" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1281 +#: src/frontend.c:1351 +#: src/frontend.c:1382 msgid "Easy" msgstr "ЛегкаÑ" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1284 +#: src/frontend.c:1354 +#: src/frontend.c:1374 msgid "Normal" msgstr "ÐормальнаÑ" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1288 +#: src/frontend.c:1357 +#: src/frontend.c:1378 msgid "Hard" msgstr "ТÑжелаÑ" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1293 +#: src/frontend.c:1344 msgid "Scroll Speed" msgstr "СкороÑÑ‚ÑŒ прокрутки" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1307 +#: src/frontend.c:1341 msgid "Language" msgstr "Язык" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1319 +#: src/frontend.c:1342 msgid "Unit Colour" msgstr "Цвет юнита" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1325 +#: src/frontend.c:1345 msgid "GAME OPTIONS" msgstr "ÐÐСТРОЙКИ ИГРЫ" -#: src/frontend.c:1693 -#: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Ðктивные моды:" +#: src/frontend.c:1706 +#: src/multiint.c:2125 +msgid "Mod: " +msgstr "Мод:" -#: src/hci.c:1363 +#: src/hci.c:1360 msgid "MAP SAVED!" msgstr "КÐРТРСОХРÐÐЕÐÐ!" -#: src/hci.c:1745 +#: src/hci.c:1742 #: src/loop.c:528 #: src/loop.c:544 #, fuzzy msgid "GAME SAVED: " -msgstr "ИГРРСОХРÐÐЕÐÐ!" +msgstr "ИГРРСОХРÐÐЕÐÐ:" -#: src/hci.c:2152 +#: src/hci.c:2132 msgid "Failed to create building" msgstr "Ðевозможно Ñоздать поÑтройку" -#: src/hci.c:2175 +#: src/hci.c:2155 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new structure: %s." -msgstr "Игрок %u иÑпользует читы (меню отладки) его/её Ð½Ð¾Ð²Ð°Ñ Ð¿Ð¾Ñтройка: %s." +msgstr "Игрок %u начитерил Ñебе новую поÑтройку: %s." -#: src/hci.c:2190 +#: src/hci.c:2170 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new feature: %s." -msgstr "Игрок %u иÑпользует читы (меню отладки) его/её новый оÑобый Ñлемент: %s." +msgstr "Игрок %u начитерил Ñебе новый оÑобый Ñлемент: %s." -#: src/hci.c:2211 +#: src/hci.c:2191 #, c-format msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." -msgstr "Игрок %u иÑпользует читы (меню отладки) его/её Ð½Ð¾Ð²Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°: %s." +msgstr "Игрок %u начитерил Ñебе нового дроида: %s." -#: src/hci.c:3731 +#: src/hci.c:3718 msgid "Commanders (F6)" msgstr "Командиры (F6)" -#: src/hci.c:3747 +#: src/hci.c:3734 msgid "Intelligence Display (F5)" msgstr "ДиÑплей разведки (F5)" -#: src/hci.c:3763 +#: src/hci.c:3750 msgid "Manufacture (F1)" msgstr "ПроизводÑтво (F1)" -#: src/hci.c:3779 +#: src/hci.c:3766 msgid "Design (F4)" msgstr "Дизайн (F4)" -#: src/hci.c:3795 +#: src/hci.c:3782 msgid "Research (F2)" msgstr "ИÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ (F2)" -#: src/hci.c:3811 +#: src/hci.c:3798 msgid "Build (F3)" msgstr "Строить (F3)" -#: src/hci.c:3891 -#: src/multiint.c:1370 +#: src/hci.c:3876 +#: src/multiint.c:1260 #: src/multimenu.c:763 msgid "Power" msgstr "ЭнергиÑ" -#: src/hci.c:4075 +#: src/hci.c:4060 msgid "Tile" msgstr "Плитка" -#: src/hci.c:4076 +#: src/hci.c:4061 msgid "Place tiles on map" msgstr "ПомеÑтить Ñемент Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° карту" -#: src/hci.c:4085 +#: src/hci.c:4070 msgid "Unit" msgstr "Юнит" -#: src/hci.c:4086 +#: src/hci.c:4071 msgid "Place Unit on map" -msgstr "помеÑтить юнита на карту" +msgstr "ПомеÑтить юнита на карту" -#: src/hci.c:4094 +#: src/hci.c:4079 msgid "Struct" -msgstr "поÑтройки" +msgstr "ПоÑтройки" -#: src/hci.c:4095 +#: src/hci.c:4080 msgid "Place Structures on map" msgstr "РаÑположить поÑтройки на карте" -#: src/hci.c:4103 +#: src/hci.c:4088 msgid "Feat" -msgstr "разное" +msgstr "Разное" -#: src/hci.c:4104 +#: src/hci.c:4089 msgid "Place Features on map" -msgstr "помеÑтить оÑобый Ñлемент на карту" +msgstr "ПомеÑтить оÑобый Ñлемент на карту" -#: src/hci.c:4115 +#: src/hci.c:4100 msgid "Pause or unpause the game" msgstr "Пауза или продолжить игру" -#: src/hci.c:4129 +#: src/hci.c:4114 msgid "Align height of all map objects" -msgstr "выровнÑÑ‚ÑŒ выÑоту вÑех объектов на карте" +msgstr "ВыровнÑÑ‚ÑŒ выÑоту вÑех объектов на карте" -#: src/hci.c:4154 +#: src/hci.c:4139 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Выход" -#: src/hci.c:4155 +#: src/hci.c:4140 msgid "Exit Game" msgstr "Выйти из игры" -#: src/hci.c:4582 +#: src/hci.c:4563 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Панель прогреÑÑа" -#: src/hci.c:5616 +#: src/hci.c:5583 msgid "Factory Delivery Point" msgstr "Точка Ð¿Ñ€Ð¸Ð±Ñ‹Ñ‚Ð¸Ñ Ñ Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ¸" -#: src/hci.c:5635 +#: src/hci.c:5602 msgid "Loop Production" msgstr "Повторное производÑтво" -#: src/hci.c:5726 +#: src/hci.c:5693 msgid "Tab Scroll left" msgstr "Таб Ñкрол налево" -#: src/hci.c:5743 +#: src/hci.c:5710 msgid "Tab Scroll right" msgstr "Таб Ñкрол на право" @@ -12359,23 +13322,34 @@ msgstr "" #: src/ingameop.c:295 #: src/ingameop.c:523 -#: src/mission.c:2513 -#: src/mission.c:2634 +#: src/mission.c:2521 +#: src/mission.c:2642 msgid "Save Game" msgstr "Сохранить игру" #: src/ingameop.c:364 msgid "Host has quit the game!" -msgstr "ХоÑÑ‚ покинул игру" +msgstr "ХоÑÑ‚ покинул игру!" #: src/ingameop.c:370 msgid "The game can't continue without the host." -msgstr "Игра не может продолжатьÑÑ Ð±ÐµÐ· владельца." +msgstr "Игра не может продолжатьÑÑ Ð±ÐµÐ· хоÑта." #: src/ingameop.c:376 msgid "--> QUIT <--" msgstr "--> ВЫХОД <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" +"Требуемый мод не может быть загружен: %s\n" +"\n" +"Warzone попробует запуÑтить игру без него. МолитеÑÑŒ!" + #: src/intdisplay.c:197 msgid "Build Progress" msgstr "прогреÑÑ Ð¿Ð¾Ñтройки" @@ -12386,20 +13360,20 @@ msgstr "ПрогреÑÑ ÑтроительÑтва" #: src/intdisplay.c:263 msgid "Power Accrued" -msgstr "Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½Ð°Ñ ÑнергиÑ" +msgstr "ÐÐ°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½Ð°Ñ ÑнергиÑ" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1397 msgid "PAUSED" msgstr "ПÐУЗÐ" #: src/intelmap.c:413 msgid "Research Update" -msgstr "обновить иÑÑледование" +msgstr "Обновить иÑÑледование" #: src/intelmap.c:417 msgid "Project Goals" -msgstr "победы проекта" +msgstr "Победы проекта" #: src/intelmap.c:420 msgid "Current Objective" @@ -12502,11 +13476,11 @@ msgstr "Ðазначить производÑтво на заводе" #: src/intorder.c:180 msgid "Assign Cyborg Factory Production" -msgstr "назначить производÑтво на киберзаводе" +msgstr "Ðазначить производÑтво на киберзаводе" #: src/intorder.c:181 msgid "Assign Fire Support" -msgstr "назначить огневую поддержку" +msgstr "Ðазначить огневую поддержку" #: src/intorder.c:182 msgid "Assign VTOL Factory Production" @@ -12514,301 +13488,301 @@ msgstr "Ðазначить производÑтво ВВП" #: src/intorder.c:183 msgid "Circle" -msgstr "круг" +msgstr "Круг" -#: src/keybind.c:134 +#: src/keybind.c:136 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Извините, в мультиплеере читы отключены." -#: src/keybind.c:140 +#: src/keybind.c:142 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Внимание! Этот читкод может вызвать неÑтабильноÑÑ‚ÑŒ игры. Рекомендуем не иÑпользовать его." -#: src/keybind.c:224 -msgid "Lets us see what you see!" -msgstr "Позволь увидель нам то, что видишь Ñ‚Ñ‹" - #: src/keybind.c:226 +msgid "Lets us see what you see!" +msgstr "Позволь увидель нам то, что видишь Ñ‚Ñ‹!" + +#: src/keybind.c:228 msgid "Fine, weapon & sensor display is off!" msgstr "Отлично, ÑенÑорный диÑплей выключен!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:359 +#, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Игрок %u иÑпользует читы (меню отладки) его/её Ð½Ð¾Ð²Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°: %s." +msgstr "Игрок %u иÑпользует начитерил Ñебе новую армию дроидов: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:399 +#: src/keybind.c:429 +#: src/keybind.c:446 +#: src/keybind.c:490 +#: src/keybind.c:598 +#: src/keybind.c:638 +#: src/keybind.c:744 +#: src/keybind.c:1287 +#: src/keybind.c:1344 +#: src/keybind.c:1446 +#: src/keybind.c:1567 +#: src/keybind.c:1918 +#: src/keybind.c:1959 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Игрок %u) иÑпользует чит :%s" -#: src/keybind.c:398 +#: src/keybind.c:400 msgid "Hard as nails!!!" msgstr "Трудно как на гвоздÑÑ…!!!" -#: src/keybind.c:412 +#: src/keybind.c:414 msgid "Takings thing easy!" msgstr "Собирать вещи легко!" -#: src/keybind.c:428 +#: src/keybind.c:430 msgid "1000 big ones!!!" msgstr "1000 больших!!!" -#: src/keybind.c:445 +#: src/keybind.c:447 msgid "Power overwhelming" msgstr "ÐеиÑÑÑÐºÐ°ÐµÐ¼Ð°Ñ ÑнергиÑ" -#: src/keybind.c:460 +#: src/keybind.c:462 msgid "Back to normality!" -msgstr "вернутьÑÑ Ð² нормальное ÑоÑтоÑние!" +msgstr "ВернутьÑÑ Ð² нормальное ÑоÑтоÑние!" -#: src/keybind.c:473 +#: src/keybind.c:475 msgid "Getting tricky!" msgstr "Хитро получаешь!" -#: src/keybind.c:489 +#: src/keybind.c:491 msgid "Twice as nice!" -msgstr "один хорошо - двое лучше!" +msgstr "Один хорошо - двое лучше!" -#: src/keybind.c:500 +#: src/keybind.c:502 msgid "FPS display is enabled." msgstr "Отображение FPS включено." -#: src/keybind.c:504 +#: src/keybind.c:506 msgid "FPS display is disabled." msgstr "Отображение FPS выключено." -#: src/keybind.c:525 +#: src/keybind.c:530 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:562 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" -msgstr "(Игрок %u) иÑпользует чит :чиÑло машин: %d поÑтроек: %d оÑобых Ñлементов: %d" +msgstr "(Игрок %u) иÑпользует чит. ЧиÑло машин: %d, поÑтроек: %d, оÑобых Ñлементов: %d" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power disabled" msgstr "БеÑÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ ÑÐ½ÐµÑ€Ð³Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°" -#: src/keybind.c:594 +#: src/keybind.c:599 msgid "Infinite power enabled" msgstr "БеÑÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ ÑÐ½ÐµÑ€Ð³Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°" -#: src/keybind.c:634 +#: src/keybind.c:639 msgid "All items made available" msgstr "ДоÑтупно абÑолютно вÑе" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog on" msgstr "Туман включен" -#: src/keybind.c:740 +#: src/keybind.c:745 msgid "Fog off" msgstr "Туман выключен" -#: src/keybind.c:1179 +#: src/keybind.c:1176 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Внимание! Этот чит может привеÑти к Ñтрашным проблемам! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1176 msgid "Ending Mission." -msgstr "окончание МиÑÑии" +msgstr "Окончание миÑÑии." -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW ENABLED!" msgstr "Читы активированы!" -#: src/keybind.c:1291 +#: src/keybind.c:1288 msgid "CHEATS ARE NOW DISABLED!" msgstr "Читы выключены!" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode ON" msgstr "Режим бога включен" -#: src/keybind.c:1348 +#: src/keybind.c:1345 msgid "God Mode OFF" -msgstr "режим бога выключен" +msgstr "Режим бога выключен" -#: src/keybind.c:1360 +#: src/keybind.c:1357 msgid "View Aligned to North" msgstr "Вид выровнен по Ñеверу" -#: src/keybind.c:1369 -#, fuzzy, c-format +#: src/keybind.c:1366 +#, c-format msgid "Trap cursor %s" -msgstr "Захват курÑора" +msgstr "Захват курÑора: %s" -#: src/keybind.c:1450 +#: src/keybind.c:1447 msgid "Researched EVERYTHING for you!" msgstr "Ð’Ñе иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ñтупны!" -#: src/keybind.c:1481 +#: src/keybind.c:1503 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Игрок %u) иÑпользует чит :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1504 msgid "Researched" msgstr "ИÑÑледовано" -#: src/keybind.c:1503 +#: src/keybind.c:1525 msgid "Only displaying energy bars when selected" -msgstr "отображать панель прогреÑÑа только Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… единиц" +msgstr "Отображать панель прогреÑÑа только Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… единиц" -#: src/keybind.c:1506 +#: src/keybind.c:1528 msgid "Always displaying energy bars for units" msgstr "Ð’Ñегда отображать панеот прогреÑÑа Ð´Ð»Ñ ÑŽÐ½Ð¸Ñ‚Ð¾Ð²" -#: src/keybind.c:1509 +#: src/keybind.c:1531 msgid "Always displaying energy bars for units and structures" msgstr "Ð’Ñегда отображать панел прогреÑÑа Ð´Ð»Ñ ÑŽÐ½Ð¸Ñ‚Ð¾Ð² и поÑтроек" -#: src/keybind.c:1531 +#: src/keybind.c:1553 msgid "Demo mode off - Returning to normal game mode" msgstr "Демо-режим выключен - возвращение к нормальному режиму игры" -#: src/keybind.c:1546 +#: src/keybind.c:1568 msgid "Debug menu is Open" msgstr "Открыто меню отладки" -#: src/keybind.c:1577 +#: src/keybind.c:1599 msgid "Unable to locate any resource extractors!" -msgstr "Ðевозможно найти Ðефтевышки" +msgstr "Ðевозможно найти нефтевышки!" -#: src/keybind.c:1798 +#: src/keybind.c:1820 msgid "Oh, the weather outside is frightful... SNOW" -msgstr "О!, погода Ñнаружи ужаÑна... СÐЕГ" +msgstr "Ох! Погода Ñнаружи ужаÑна... СÐЕГ" -#: src/keybind.c:1804 +#: src/keybind.c:1826 msgid "Singing in the rain, I'm singing in the rain... RAIN" -msgstr "ну а дождь вÑе льет и льет..." +msgstr "Ðу а дождь вÑе льет и льет..." -#: src/keybind.c:1810 +#: src/keybind.c:1832 msgid "Forecast : Clear skies for all areas... NO WEATHER" -msgstr "прогноз на ÑегоднÑ: оÑадков не ожидаетÑÑ!" +msgstr "Прогноз на ÑегоднÑ: оÑадков не ожидаетÑÑ!" -#: src/keybind.c:1895 +#: src/keybind.c:1917 msgid "Warning! This can have drastic consequences if used incorrectly in missions." -msgstr "внимание! при неправильном иÑпользовании в миÑÑиÑÑ… могут возниктуть Ñерьезные поÑледÑтвиÑ" +msgstr "Внимание! При неправильном иÑпользовании в миÑÑиÑÑ… могут возникнуть Ñерьезные поÑледÑтвиÑ." -#: src/keybind.c:1897 +#: src/keybind.c:1919 msgid "All enemies destroyed by cheating!" msgstr "Враги уничтожены Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ читов!" -#: src/keybind.c:1938 +#: src/keybind.c:1960 msgid "Destroying selected droids and structures!" -msgstr "Уничтожаю выбранные поÑтройки и машины" +msgstr "Уничтожаю выбранные поÑтройки и машины!" -#: src/keybind.c:2460 +#: src/keybind.c:2482 msgid "Centered on player HQ, direction NORTH" msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° штабе, вид на СЕВЕР" -#: src/keybind.c:2472 +#: src/keybind.c:2494 msgid "Unable to locate HQ!" msgstr "Ðевозможно найти штаб!" -#: src/keybind.c:2479 +#: src/keybind.c:2501 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "Ограничение ÑкороÑти ÑнÑто из-за багов." -#: src/keybind.c:2528 +#: src/keybind.c:2550 msgid "Vertical rotation direction: Normal" -msgstr "вращение по вертикали: норм." +msgstr "Вращение по вертикали: нормально" -#: src/keybind.c:2533 +#: src/keybind.c:2555 msgid "Vertical rotation direction: Flipped" -msgstr "вращение по вертикали: инверÑиÑ" +msgstr "Вращение по вертикали: инверÑиÑ" -#: src/keybind.c:2542 +#: src/keybind.c:2564 msgid "Screen shake when things die: Off" msgstr "ТрÑÑка Ñкрана при взрыве: выкл" -#: src/keybind.c:2547 +#: src/keybind.c:2569 msgid "Screen shake when things die: On" msgstr "ТрÑÑка Ñкрана при взрыве: вкл" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2614 +#: src/keybind.c:2657 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Извините, ÑкороÑÑ‚ÑŒ игры не менÑетÑÑ Ð² мультиплеере." -#: src/keybind.c:2613 -#: src/keybind.c:2656 +#: src/keybind.c:2635 #: src/keybind.c:2678 +#: src/keybind.c:2700 msgid "Game Speed Reset" msgstr "СкороÑÑ‚ÑŒ Игры Сброшена" -#: src/keybind.c:2617 +#: src/keybind.c:2639 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "СкороÑÑ‚ÑŒ игры увеличена в %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2682 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "СкороÑÑ‚ÑŒ игры уменьшена в %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2712 msgid "Build menu will reopen" -msgstr "меню поÑтройки Ñнова откроетÑÑ" +msgstr "Меню поÑтройки Ñнова откроетÑÑ" -#: src/keybind.c:2694 +#: src/keybind.c:2716 msgid "Build menu will not reopen" -msgstr "меню поÑтройки е откроетÑÑ" +msgstr "Меню поÑтройки не откроетÑÑ" -#: src/keybind.c:2706 +#: src/keybind.c:2728 msgid "Radar showing friend-foe colors" msgstr "Радар отображает цвета Ñвой-чужой" -#: src/keybind.c:2710 +#: src/keybind.c:2732 msgid "Radar showing player colors" msgstr "Радар отображает цвета игрока" -#: src/keybind.c:2731 +#: src/keybind.c:2753 msgid "Radar showing only objects" msgstr "Радар отображает только объекты" -#: src/keybind.c:2734 +#: src/keybind.c:2756 msgid "Radar blending terrain and height" -msgstr "радар не различает ландшафт и рельеф" +msgstr "Радар не различает ландшафт и рельеф" -#: src/keybind.c:2737 +#: src/keybind.c:2759 msgid "Radar showing terrain" msgstr "Радар отображает поверхноÑÑ‚ÑŒ" -#: src/keybind.c:2740 +#: src/keybind.c:2762 msgid "Radar showing revealed terrain" msgstr "Радар отображает поверхноÑÑ‚ÑŒ" -#: src/keybind.c:2743 +#: src/keybind.c:2765 msgid "Radar showing height" -msgstr "радар показывает рельеф" +msgstr "Радар показывает рельеф" #: src/keyedit.c:347 msgid "KEY MAPPING" msgstr "РÐСКЛÐДКРКЛÐВИÐТУРЫ" #: src/keyedit.c:369 -#: src/multiint.c:638 -#: src/multiint.c:681 -#: src/multiint.c:1072 -#: src/multiint.c:1456 +#: src/multiint.c:528 +#: src/multiint.c:571 +#: src/multiint.c:962 +#: src/multiint.c:1346 msgid "Return To Previous Screen" msgstr "Ðазад" @@ -12858,7 +13832,7 @@ msgstr "Сделать Ñкриншот" #: src/keymap.c:305 msgid "Toggle Formation Speed Limiting" -msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑкороÑти" +msgstr "ÐžÐ³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑкороÑти" #: src/keymap.c:306 msgid "View Location of Previous Message" @@ -12994,11 +13968,11 @@ msgstr "Сориентировать вид на Ñевер" #: src/keymap.c:354 msgid "Toggle Tracking Camera" -msgstr "включение камеры ÑлежениÑ" +msgstr "Включение камеры ÑлежениÑ" #: src/keymap.c:355 msgid "Display In-Game Options" -msgstr "показывать игровые опции" +msgstr "Показывать игровые опции" #: src/keymap.c:356 msgid "Zoom Radar Out" @@ -13018,7 +13992,7 @@ msgstr "Отдалить" #: src/keymap.c:360 msgid "Pitch Forward" -msgstr "броÑок вперед" +msgstr "БроÑок вперед" #: src/keymap.c:361 msgid "Rotate Left" @@ -13026,7 +14000,7 @@ msgstr "Повернуть влево" #: src/keymap.c:362 msgid "Reset Pitch" -msgstr "ÑÐ±Ñ€Ð¾Ñ Ð±Ñ€Ð¾Ñка" +msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð±Ñ€Ð¾Ñка" #: src/keymap.c:363 msgid "Rotate Right" @@ -13034,7 +14008,7 @@ msgstr "Повернуть вправо" #: src/keymap.c:364 msgid "Pitch Back" -msgstr "броÑок назад" +msgstr "БроÑок назад" #: src/keymap.c:365 msgid "Orders Menu" @@ -13054,19 +14028,19 @@ msgstr "Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ ÑкороÑÑ‚ÑŒ игры" #: src/keymap.c:369 msgid "View North" -msgstr "показать Ñевер" +msgstr "Показать Ñевер" #: src/keymap.c:370 msgid "View South" -msgstr "показать юг" +msgstr "Показать юг" #: src/keymap.c:371 msgid "View East" -msgstr "показать воÑток" +msgstr "Показать воÑток" #: src/keymap.c:372 msgid "View West" -msgstr "показать запад" +msgstr "Показать запад" #: src/keymap.c:373 msgid "View next Oil Derrick" @@ -13090,7 +14064,7 @@ msgstr "Отобразить Ñледующего командующего" #: src/keymap.c:378 msgid "Toggle Overlays" -msgstr "перекрытиÑ" +msgstr "ПерекрытиÑ" #: src/keymap.c:379 msgid "Console On/Off" @@ -13098,11 +14072,11 @@ msgstr "КонÑоль вкл/выкл" #: src/keymap.c:382 msgid "Center View on HQ" -msgstr "центрировать на командном центре" +msgstr "Центрировать на командном центре" #: src/keymap.c:384 msgid "View Unassigned Units" -msgstr "показать неназначенных юнитов" +msgstr "Показать неназначенных юнитов" #: src/keymap.c:386 msgid "Fire at Will" @@ -13142,7 +14116,7 @@ msgstr "Выделить вÑÑŽ технику на гуÑеничном ход #: src/keymap.c:423 msgid "Select EVERY unit" -msgstr "выделить КÐЖДОГО юнита" +msgstr "Выделить КÐЖДОГО юнита" #: src/keymap.c:424 msgid "Select all VTOLs" @@ -13174,52 +14148,52 @@ msgstr "Выбрать Ñледующий завод киборгов" #: src/keymap.c:435 msgid "Toggle reopening the build menu" -msgstr "открыть заново меню поÑтройки" +msgstr "Открыть заново меню поÑтройки" #: src/loop.c:535 #: src/loop.c:551 msgid "Could not save game!" msgstr "Ðе удалоÑÑŒ Ñохранить игру!" -#: src/mission.c:2066 +#: src/mission.c:2074 msgid "Load Transport" msgstr "Загрузить ТранÑпорт" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED by cheating!" -msgstr "ЗÐДÐÐИЕ ВЫПОЛÐЕÐО Читами" +msgstr "ЗÐДÐÐИЕ ВЫПОЛÐЕÐО Ñ Ñ‡Ð¸Ñ‚Ð°Ð¼Ð¸!" -#: src/mission.c:2460 +#: src/mission.c:2468 msgid "OBJECTIVE ACHIEVED" msgstr "ЗÐДÐÐИЕ ВЫПОЛÐЕÐО" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED--and you cheated!" msgstr "ЗÐДÐÐИЕ ПРОВÐЛЕÐО - и читы вам не помогли!" -#: src/mission.c:2466 +#: src/mission.c:2474 msgid "OBJECTIVE FAILED" msgstr "ЗÐДÐÐИЕ ПРОВÐЛЕÐО" -#: src/mission.c:2492 -#: src/mission.c:2532 -#: src/mission.c:2650 +#: src/mission.c:2500 +#: src/mission.c:2540 +#: src/mission.c:2658 msgid "Quit To Main Menu" msgstr "Выйти в главное меню" -#: src/mission.c:2500 +#: src/mission.c:2508 msgid "Continue Game" msgstr "Продолжить игру" -#: src/mission.c:2597 +#: src/mission.c:2605 msgid "GAME SAVED :" -msgstr "ИГРРСОХРÐÐЕÐÐ!" +msgstr "ИГРРСОХРÐÐЕÐÐ:" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2634 +#: src/move.c:2650 #, c-format msgid "You found %u power in an oil drum." -msgstr "Ñ‚Ñ‹ нашел %u Ñнергии в бочке Ñ Ð³Ð¾Ñ€ÑŽÑ‡Ð¸Ð¼" +msgstr "Ты нашел %u Ñнергии в бочке Ñ Ð³Ð¾Ñ€ÑŽÑ‡Ð¸Ð¼." #: src/multigifts.c:171 #, c-format @@ -13234,7 +14208,7 @@ msgstr "%s передает вам %s" #: src/multigifts.c:242 #, c-format msgid "Tried to give away a non-empty %s - but this is not allowed." -msgstr "Попробовал, чтобы отдать непуÑтой %s - но Ñто позволено." +msgstr "Попытка отдать не пуÑтой %s - но Ñто запрещено." #: src/multigifts.c:301 #, c-format @@ -13269,270 +14243,270 @@ msgstr "%s вÑтупил в Ñоюз Ñ %s" #: src/multigifts.c:780 #, c-format msgid "You Discover Blueprints For %s" -msgstr "вы открыли чертежи %s" +msgstr "Ð’Ñ‹ открыли чертежи: %s" -#: src/multiint.c:572 +#: src/multiint.c:462 #: src/multilimit.c:192 msgid "Accept Settings" msgstr "ПринÑÑ‚ÑŒ наÑтройки" -#: src/multiint.c:574 -#: src/multiint.c:1120 +#: src/multiint.c:464 +#: src/multiint.c:1010 msgid "Cancel" msgstr "Отмена" -#: src/multiint.c:585 +#: src/multiint.c:475 msgid "IP Address or Machine Name" msgstr "IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð°" -#: src/multiint.c:635 +#: src/multiint.c:525 msgid "CONNECTION" msgstr "СОЕДИÐЕÐИЕ" -#: src/multiint.c:648 +#: src/multiint.c:538 msgid "Lobby" msgstr "Холл" -#: src/multiint.c:649 +#: src/multiint.c:539 msgid "IP" msgstr "IP" -#: src/multiint.c:841 +#: src/multiint.c:731 msgid "No games are available" -msgstr "ДоÑтупны новые игры" +msgstr "Ðет доÑтупных игр" -#: src/multiint.c:844 +#: src/multiint.c:734 msgid "Game is full" msgstr "Игра заполнена" -#: src/multiint.c:848 +#: src/multiint.c:738 msgid "You were kicked!" -msgstr "Ð’Ð°Ñ Ð²Ñ‹Ð³Ð½Ð°Ð»Ð¸!" +msgstr "Ð’Ð°Ñ Ð²Ñ‹ÐºÐ¸Ð½ÑƒÐ»Ð¸!" -#: src/multiint.c:851 +#: src/multiint.c:741 msgid "Wrong Game Version!" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð³Ñ€Ñ‹!" -#: src/multiint.c:854 +#: src/multiint.c:744 msgid "You have an incompatible mod." msgstr "ÐеÑовмеÑтимый мод" -#: src/multiint.c:858 +#: src/multiint.c:748 msgid "Host couldn't send file?" msgstr "ХоÑÑ‚ не может отправить файл?" -#: src/multiint.c:862 +#: src/multiint.c:752 msgid "Incorrect Password!" -msgstr "неверный пароль!" +msgstr "Ðеверный пароль!" -#: src/multiint.c:865 +#: src/multiint.c:755 msgid "Host has dropped connection!" -msgstr "*ХоÑÑ‚ разорвал Ñоединение!" +msgstr "ХоÑÑ‚ разорвал Ñоединение!" -#: src/multiint.c:869 +#: src/multiint.c:759 msgid "Connection Error" msgstr "Ошибка ÑоединениÑ" -#: src/multiint.c:1013 +#: src/multiint.c:903 msgid "Searching" msgstr "ПоиÑк" -#: src/multiint.c:1069 +#: src/multiint.c:959 msgid "GAMES" msgstr "ИГРЫ" -#: src/multiint.c:1077 +#: src/multiint.c:967 msgid "Refresh Games List" msgstr "Обновить ÑпиÑок игр" -#: src/multiint.c:1097 +#: src/multiint.c:987 msgid "Enter Password:" msgstr "Введите пароль:" -#: src/multiint.c:1118 +#: src/multiint.c:1008 msgid "OK" msgstr "ОК" -#: src/multiint.c:1259 -#: src/multiint.c:1266 +#: src/multiint.c:1149 +#: src/multiint.c:1156 msgid "Select Game Name" msgstr "Выбрать название игры" -#: src/multiint.c:1259 +#: src/multiint.c:1149 msgid "One-Player Skirmish" msgstr "Сражение" -#: src/multiint.c:1269 +#: src/multiint.c:1159 msgid "Select Map" msgstr "Выбрать карту" -#: src/multiint.c:1277 +#: src/multiint.c:1167 msgid "Click to set Password" msgstr "Щелкни чтобы задать пароль" -#: src/multiint.c:1287 -#: src/multiint.c:1288 +#: src/multiint.c:1177 +#: src/multiint.c:1178 msgid "Scavengers" msgstr "МуÑорщики" -#: src/multiint.c:1290 +#: src/multiint.c:1180 msgid "No Scavengers" msgstr "Ðет МуÑорщиков" -#: src/multiint.c:1320 +#: src/multiint.c:1210 msgid "Select Player Name" msgstr "Выбор Ð˜Ð¼Ñ Ð˜Ð³Ñ€Ð¾ÐºÐ°" -#: src/multiint.c:1326 +#: src/multiint.c:1216 msgid "Distance Fog" msgstr "Туман на раÑтоÑнии" -#: src/multiint.c:1337 +#: src/multiint.c:1227 #: src/multimenu.c:756 msgid "Alliances" msgstr "Союзники" -#: src/multiint.c:1340 +#: src/multiint.c:1230 msgid "No Alliances" msgstr "Без Союзов" -#: src/multiint.c:1342 +#: src/multiint.c:1232 msgid "Allow Alliances" msgstr "Позволить Союзы" -#: src/multiint.c:1346 +#: src/multiint.c:1236 msgid "Locked Teams" msgstr "Закрытые Команды" -#: src/multiint.c:1372 +#: src/multiint.c:1262 msgid "Low Power Levels" msgstr "Ðизкий уровень Ñнергии" -#: src/multiint.c:1374 +#: src/multiint.c:1264 msgid "Medium Power Levels" msgstr "Средний уровень Ñнергии" -#: src/multiint.c:1376 +#: src/multiint.c:1266 msgid "High Power Levels" msgstr "Ð’Ñ‹Ñокий уровень Ñнергии" -#: src/multiint.c:1408 +#: src/multiint.c:1298 msgid "Base" msgstr "База" -#: src/multiint.c:1410 +#: src/multiint.c:1300 msgid "Start with No Bases" msgstr "Ðачать без Базы" -#: src/multiint.c:1412 +#: src/multiint.c:1302 msgid "Start with Bases" msgstr "Ðачать Ñ Ð‘Ð°Ð·Ð¾Ð¹" -#: src/multiint.c:1414 +#: src/multiint.c:1304 msgid "Start with Advanced Bases" msgstr "Ðачать Ñ ÐŸÑ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚Ð¾Ð¹ Базой" -#: src/multiint.c:1446 +#: src/multiint.c:1336 msgid "Map Preview" msgstr "ПроÑмотр карты" -#: src/multiint.c:1448 +#: src/multiint.c:1338 msgid "Click to see Map" msgstr "щелкни чтобы поÑмотреть карту" -#: src/multiint.c:1462 +#: src/multiint.c:1352 msgid "Start Hosting Game" msgstr "Ðачать хоÑтинг игры" -#: src/multiint.c:1470 +#: src/multiint.c:1360 msgid "Show Structure Limits" msgstr "Показать лимиты Ñооружений" -#: src/multiint.c:1470 +#: src/multiint.c:1360 msgid "Set Structure Limits" msgstr "УÑтановить лимиты Ñооружений" -#: src/multiint.c:1533 +#: src/multiint.c:1423 msgid "Player colour" msgstr "Цвет игрока" -#: src/multiint.c:1549 +#: src/multiint.c:1439 msgid "Kick player" -msgstr "Выгнать игрока" +msgstr "Выкинуть игрока" -#: src/multiint.c:1560 +#: src/multiint.c:1450 msgid "Player number" msgstr "Ðомер игрока" -#: src/multiint.c:1922 +#: src/multiint.c:1812 msgid "Team" msgstr "Команда" -#: src/multiint.c:1955 +#: src/multiint.c:1845 msgid "Waiting for other players" -msgstr "ожидание других игроков" +msgstr "Ожидание других игроков" -#: src/multiint.c:1961 +#: src/multiint.c:1851 msgid "Click when ready" -msgstr "щелкни когда будешь готов" +msgstr "Щелкни когда будешь готов" -#: src/multiint.c:1965 +#: src/multiint.c:1855 msgid "READY?" -msgstr "Готов?" +msgstr "ГОТОВ?" -#: src/multiint.c:2002 +#: src/multiint.c:1892 msgid "PLAYERS" msgstr "ИГРОКИ" -#: src/multiint.c:2206 +#: src/multiint.c:2096 msgid "CHAT" msgstr "ЧÐТ" -#: src/multiint.c:2240 +#: src/multiint.c:2130 msgid "All players need to have the same mods to join your game." msgstr "Ð’Ñем игрокам нужен такой же мод, что и у ваÑ." -#: src/multiint.c:2400 +#: src/multiint.c:2290 msgid "*** password is now required! ***" -msgstr "*** ТребуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ! ***" +msgstr "*** требуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ! ***" -#: src/multiint.c:2407 +#: src/multiint.c:2297 msgid "*** password is NOT required! ***" msgstr "*** пароль не требуетÑÑ! ***" -#: src/multiint.c:2650 +#: src/multiint.c:2540 msgid "Sorry! Failed to host the game." -msgstr "Извините! не удалоÑÑŒ Ñоздать игру." +msgstr "Извините! Ðе удалоÑÑŒ Ñоздать игру." -#: src/multiint.c:2735 +#: src/multiint.c:2625 msgid "'Locked Teams' mode enabled" msgstr "Закрытые Команды" -#: src/multiint.c:2774 -#: src/multiint.c:2824 +#: src/multiint.c:2664 +#: src/multiint.c:2714 #, c-format msgid "The host has kicked %s from the game!" msgstr "ХоÑÑ‚ выкинул %s из игры!" -#: src/multiint.c:2899 +#: src/multiint.c:2789 msgid "Host is Starting Game" msgstr "ХоÑÑ‚ Ñтартует" -#: src/multiint.c:3452 +#: src/multiint.c:3349 msgid "Players" msgstr "Игроки" -#: src/multiint.c:3569 +#: src/multiint.c:3466 #, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "Отправка карты: %d%%" -#: src/multiint.c:3577 +#: src/multiint.c:3474 #, c-format msgid "Map: %d%% downloaded" msgstr "карта: %d%% загружена" -#: src/multiint.c:3603 +#: src/multiint.c:3500 msgid "HOST" msgstr "ХОСТ" @@ -13541,27 +14515,27 @@ msgstr "ХОСТ" msgid "Players Still Joining" msgstr "Игроки еще ÑоединÑÑŽÑ‚ÑŒÑÑ" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s покинул игру" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "Передача файла была прервана на %d%%" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "%s (%u) имеет неÑовмеÑтимый мод и отключен." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s приÑоединилÑÑ Ðº игре" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "СиÑтемное Ñообщение" @@ -13571,7 +14545,7 @@ msgstr "Применить наÑтройки по умолчанию и вер #: src/multilimit.c:316 msgid "Limits reset to default values" -msgstr "" +msgstr "ÐžÐ³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ñброшены к наÑтройкам по умолчанию" #: src/multimenu.c:609 msgid "Technology level 1" @@ -13647,47 +14621,47 @@ msgstr "Передать Ñнергию игроку" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Кик игрока %s за попытку обойти проверку внутренних данных" -#: src/multiplay.c:1064 -msgid "(allies" -msgstr "( Союзники" - #: src/multiplay.c:1072 +msgid "(allies" +msgstr "(Ñоюзники" + +#: src/multiplay.c:1080 msgid "(private to " msgstr "(приват" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[неверно]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Зелёный" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Оранжевый" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Серый" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Чёрный" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "КраÑный" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Синий" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Розовый" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Голубой" @@ -13702,7 +14676,7 @@ msgstr "ИÑÑледование закончено" #: src/research.c:2543 msgid "Research Award" -msgstr "награда иÑÑледованиÑ" +msgstr "Ðаграда иÑÑледованиÑ" #: src/scores.c:99 #, c-format @@ -13820,7 +14794,7 @@ msgstr "Общее Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð³Ñ€Ñ‹: %s" #: src/scores.c:448 #, c-format msgid "You cheated!" -msgstr "Ð²Ð°Ñ Ð¾Ð±Ð¼Ð°Ð½ÑƒÐ»Ð¸" +msgstr "Ты читер!" #: src/scriptfuncs.c:3247 msgid "YOU ARE VICTORIOUS!" @@ -13830,12 +14804,12 @@ msgstr "ПОБЕДÐ!" msgid "YOU WERE DEFEATED!" msgstr "ВЫ ПРОИГРÐЛИ!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "МаÑк получен от %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "МаÑк %d" @@ -13863,15 +14837,15 @@ msgstr "Ðе найдено ни одного ÑенÑорного юнита!" #: src/selection.c:442 msgid "Unable to locate any Commanders!" -msgstr "невозможно найти ни одного командира" +msgstr "Ðе найдено ни одного командира!" -#: src/structure.c:2838 +#: src/structure.c:2823 #, fuzzy msgid "Command Control Limit Reached - Production Halted" msgstr "ДоÑтигнут Предел - ПроизводÑтво ОÑтановлено" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6024 +#: src/structure.c:6049 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" @@ -13879,69 +14853,69 @@ msgstr[0] "%s - %u Юнит назначен" msgstr[1] "%s - %u Юнитов назначено" msgstr[2] "%s - %u Юнита назначено" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6054 +#: src/structure.c:6122 +#: src/structure.c:6138 +#: src/structure.c:6152 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - повреждение %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6104 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - подключено %u из %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6268 +#: src/structure.c:6313 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Электронные повреждениÑ" -#: src/structure.c:6651 +#: src/structure.c:6549 msgid "Electronic Reward - Visibility Report" msgstr "награда - доклад о меÑтоположении" -#: src/structure.c:6691 +#: src/structure.c:6589 msgid "Factory Reward - Propulsion" msgstr "награда завода - движитель" -#: src/structure.c:6715 +#: src/structure.c:6613 msgid "Factory Reward - Body" msgstr "награда завода - рама" -#: src/structure.c:6739 +#: src/structure.c:6637 msgid "Factory Reward - Weapon" msgstr "награда завода - оружие" -#: src/structure.c:6748 +#: src/structure.c:6646 msgid "Factory Reward - Nothing" -msgstr "награда завода - ШИШ" +msgstr "награда завода - ничего" -#: src/structure.c:6776 +#: src/structure.c:6674 msgid "Repair Facility Award - Repair" msgstr "награда маÑтерÑкой - ремонт" -#: src/structure.c:6783 +#: src/structure.c:6681 msgid "Repair Facility Award - Nothing" -msgstr "награда маÑтерÑкой - ШИШ" +msgstr "награда маÑтерÑкой - ничего" #: src/transporter.c:397 #: src/transporter.c:451 msgid "Launch Transport" msgstr "ЗапуÑтить ТранÑпорт" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Ð’Ñ‹Ñадка подкреплениÑ" #: src/version.c:139 msgid " (modified and switched locally)" -msgstr " (модифицированно и включено локально)" +msgstr "(модифицировано и включено локально)" #: src/version.c:141 msgid " (modified locally)" -msgstr "(модифицированно локально)" +msgstr "(модифицировано локально)" #: src/version.c:143 msgid " (switched locally)" @@ -13966,8 +14940,18 @@ msgstr "ВерÑÐ¸Ñ %s%s%s%s" #~ msgid ": Unknown cheat code." #~ msgstr ": неизвеÑтный чит-код" +#~ msgid "(Player %u) has detected the borg 'legs' bug! Please enter legs in your console and upload the files to us!" +#~ msgstr "(Игрок %u) обнаружил ошибку 'лÑжек' борга! ПожалуйÑта, введите лÑжки в вашу конÑоль и вышлите нам файлы!" + #~ msgid "You found %u power in an oil drum" -#~ msgstr "Ñ‚Ñ‹ нашел %u Ñнергии в бочке Ñ Ð³Ð¾Ñ€ÑŽÑ‡Ð¸Ð¼" +#~ msgstr "Ты нашел %u Ñнергии в бочке Ñ Ð³Ð¾Ñ€ÑŽÑ‡Ð¸Ð¼" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr ", моды:" + +#~ msgid "Active mods: " +#~ msgstr "Ðктивные моды:" #, fuzzy #~ msgid "Player %u has the wrong game version. Auto kicking." @@ -14017,9 +15001,6 @@ msgstr "ВерÑÐ¸Ñ %s%s%s%s" #~ msgid "Stop Multiplayer Audio" #~ msgstr "оÑтановка МП аудио" -#~ msgid "you are being a jerk." -#~ msgstr "Ð’Ð°Ñ Ð¾Ð´ÑƒÑ€Ð°Ñ‡Ð¸Ð²Ð°ÑŽÑ‚." - #~ msgid "Game" #~ msgstr "Игра" @@ -14224,10 +15205,6 @@ msgstr "ВерÑÐ¸Ñ %s%s%s%s" #~ msgid "Commander" #~ msgstr "Командующий" -#, fuzzy -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "ПоздравлÑем, Командующий." - #~ msgid "This sector is now secure." #~ msgstr "Сектор безопаÑен." @@ -14271,9 +15248,6 @@ msgstr "ВерÑÐ¸Ñ %s%s%s%s" #~ msgid "Enemy Escaped" #~ msgstr "Враг Ñбежал" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Команда Ðльфа ликвидирована" - #~ msgid "Team Beta Eradicated" #~ msgstr "Команда Бета ликвидирована" diff --git a/po/sl.po b/po/sl.po index f22c077d9..c66bc292e 100644 --- a/po/sl.po +++ b/po/sl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2009-06-10 14:43+0100\n" "Last-Translator: Tomaž PovÅ¡in \n" "Language-Team: Slovenian \n" @@ -1579,7 +1579,7 @@ msgstr "Izdelava kiborgov izboljÅ¡ana" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Samodejna izdelava kiborgov" @@ -1611,8 +1611,8 @@ msgstr "Vse tovarne kiborgov nadgrajene samodejno" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Tovarna kiborgov" @@ -1773,7 +1773,7 @@ msgstr "PoveÄa odpornost na poÅ¡kodbe" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Okrepljene snovi baznih zgradb" @@ -1946,7 +1946,7 @@ msgstr "Nadgradnja motorja vozila" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Motor z vbrizgom goriva" @@ -2103,7 +2103,7 @@ msgstr "Hitrost: poÄasna" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "Kolesni pogon" @@ -2963,7 +2963,7 @@ msgstr "Nove robotske tehnike popravil" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Robotska izdelava kiborgov" @@ -2985,7 +2985,7 @@ msgstr "PoveÄa brzino tovarniÅ¡ke izdelave" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Namenska sinaptiÄno povezana analiza podatkov" @@ -2994,7 +2994,7 @@ msgstr "Namenska sinaptiÄno povezana analiza podatkov" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Utrjene snovi baznih zgradb" @@ -3003,7 +3003,7 @@ msgstr "Utrjene snovi baznih zgradb" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Robotska izdelava NVP" @@ -3039,7 +3039,7 @@ msgstr "ÄŒasi ponovne oborožitve NVP zmanjÅ¡ani" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Samodejna ponovna oborožitev NVP" @@ -3170,7 +3170,7 @@ msgstr "Visoke porabe moÄi in poÄasnejÅ¡a izdelava kot pri naoÄarki" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Turbo polnjen motor" @@ -3848,14 +3848,14 @@ msgstr "Parna turbina poviÅ¡a proizvodnjo moÄi" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Raziskovalni možgani z živÄnimi sinapsami" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "Napredne snovi baznih zgradb" @@ -3867,14 +3867,14 @@ msgstr "Snovi baznih zgradb z visoko gostoto" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "Napredna izdelava NVP" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Robotska ponovna oborožitev NVP" @@ -4012,7 +4012,7 @@ msgstr "Zelo draga izdelava" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Motor s plinsko turbino" @@ -4564,14 +4564,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Laserski oznaÄevalec obarva ter vodi naboje do tarÄe" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "CILJ: Najdite ter prevzemite tehnologijo živÄnih sinaps." #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Vzpostavite bazo, nato iÅ¡Äite predpropadno zgradbo." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Ta zgradba vsebuje tehnologijo, ki je nujna za uspeh Projekta." @@ -4928,14 +4931,18 @@ msgid "We'll keep you informed of further developments" msgstr "ObveÅ¡Äali vas bomo o nadaljnih dogodkih" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Poveljnik, pomagati morate skupini beta" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "MISIJA BAZE BETA: Vzhodni sektor" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "Po prihodu boste prevzeli poveljstvo nad bazo." @@ -4944,16 +4951,19 @@ msgid "You must defend it and hold it." msgstr "Morate jo braniti ter obdržati." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "MISIJA BAZE BETA: Branite in utrdite" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "Ne pozabite utrditi obrobja ter vzpostavite protizraÄno obrambo." #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "Nove tehnologije so na voljo." @@ -5250,6 +5260,8 @@ msgid "Good luck, Commander." msgstr "Vso sreÄo, poveljnik." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "PREVOZNA MISIJA: Severni sektor" @@ -5258,6 +5270,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "ÄŒestitke za vaÅ¡o uspeÅ¡no evakuacijo baze beta." #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS je dobil dostop do jedrskega orožja in je odloÄen, da bo uniÄil Projekt." @@ -5266,10 +5279,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Odpeljite svoje sile v severni sektor" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "Ko boste pri gorah, zavarujte PC. Nato vzpostavite prednjo bazo." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Tam bo z vami navezala stik skupina gama." @@ -5278,6 +5293,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "PREVOZNA MISIJA: Vzpostavite prednjo bazo" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Poveljnik, uspeh Projekta je odvisen od vas." @@ -5304,6 +5320,7 @@ msgstr "PrenaÅ¡amo koordinate PC blizu silosov." #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Prenos koordinat dokonÄan." @@ -5743,7 +5760,7 @@ msgstr "Prevoz" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Tovornjak" @@ -5752,7 +5769,7 @@ msgstr "Tovornjak" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "Strojnica Gad Kolesa" @@ -5779,7 +5796,7 @@ msgstr "Lahki top Gad Gosenica" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "Težka strojnica NaoÄarka Polgosenice" @@ -5810,7 +5827,7 @@ msgstr "Kupola za popravila Gad Polgosenice" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "Dvojna strojnica Gad Kolesa" @@ -5827,7 +5844,7 @@ msgstr "Težka strojnica Gad Polgosenice" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "Težka strojnica Gad Gosenice" @@ -5851,7 +5868,7 @@ msgstr "UniÄevalec bunkerjev Gad Kolesa" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "Srednje težki top NaoÄarka Gosenice" @@ -5863,7 +5880,7 @@ msgstr "Težki top NaoÄarka Gosenice" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "NaoÄarka Tovornjak" @@ -5873,7 +5890,7 @@ msgstr "Senzor NaoÄarka Polgosenice" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "Plamenometalec NaoÄarka Gosenice" @@ -5890,7 +5907,7 @@ msgstr "PoveljniÅ¡ka kupola NaoÄarka Polgosenice" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "SuliÄar NaoÄarka Polgosenice" @@ -5904,26 +5921,26 @@ msgid "Light Cannon Python Tracks" msgstr "Lahki top Piton Gosenice" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "Srednje težki top Piton Gosenice" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "Težki top Piton Gosenice" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "PoveljniÅ¡ka kupola Piton Gosenice" @@ -5987,7 +6004,7 @@ msgstr "Civilist" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "StrojniÄar" @@ -5996,9 +6013,9 @@ msgstr "StrojniÄar" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Plamenometalec" @@ -6008,8 +6025,8 @@ msgstr "Plamenometalec" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "SuliÄar" @@ -6018,7 +6035,7 @@ msgstr "SuliÄar" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Težki puÅ¡kar" @@ -6112,8 +6129,8 @@ msgstr "Z NIÄŒ MOŽGANI" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "PoveljniÅ¡ka kupola" @@ -6217,14 +6234,14 @@ msgstr "polgosenice III" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Pogon za kiborge II" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Pogon za kiborge III" @@ -6246,7 +6263,7 @@ msgstr "BaBaNoge" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Pogon za kiborge" @@ -6274,8 +6291,8 @@ msgstr "Z NIÄŒ SENZOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "Senzorski stolp" @@ -6283,15 +6300,15 @@ msgstr "Senzorski stolp" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Utrjen senzorski stolp" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "Senzorska kupola" @@ -6315,7 +6332,7 @@ msgstr "CB radarska kupola" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "Kupola za NVP napad" @@ -6351,7 +6368,7 @@ msgstr "Tovarna" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "TovarniÅ¡ka gradbena enota" @@ -6363,7 +6380,7 @@ msgstr "Generator moÄi" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Gradbena enota moÄi" @@ -6375,7 +6392,7 @@ msgstr "Raziskovalna stavba" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "Raziskovalna gradbena enota" @@ -6387,7 +6404,7 @@ msgstr "Podri zgradbo" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Popravi srediÅ¡Äe" @@ -6408,8 +6425,8 @@ msgstr "Trdobetonski zid" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "Tovarna NVP" @@ -6420,30 +6437,30 @@ msgstr "PloÅ¡Äad s peklom" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Trda toÄka s peklom" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Vkop s poprnico" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "PloÅ¡Äad s peklenskim viharjem" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "PZ položaj s flak tornadom" @@ -6454,27 +6471,27 @@ msgstr "PZ položaj s flak ciklonom" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "PZ položaj s hurikanom" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "PZ položaj z zraÄnim vrtincem" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "TopniÅ¡ka edinica z valovnimi raketami" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Stražni stolp z juriÅ¡nim topom" @@ -6485,29 +6502,29 @@ msgstr "Stražni stolp z juriÅ¡no puÅ¡ko" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Trda toÄka z juriÅ¡no puÅ¡ko" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Trda toÄka z juriÅ¡nim topom" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "CB stolp" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "NVP CB stolp" @@ -6517,168 +6534,168 @@ msgstr "NVP radarski stolp" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Trda toÄka s težko strojnico" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Trda toÄka z lahkim topom" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Trda toÄka s srednje težkim topom" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Trda toÄka s težkim topom" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Trda toÄka s plamenometalcem" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Trda toÄka s suliÄarjem" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Stražni stolp s strojnico" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Stražni stolp z dvojno strojnico" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Stolp s težko strojnico" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Stražni stolp s plamenometalcem" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Stolp s suliÄarjem" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Stolp z mini-raketo" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Bunker s strojnico" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Bunker z dvojno strojnico" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Bunker s težko strojnico" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Bunker z lahkim topom" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Bunker s plamenometalcem" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Bunker s suliÄarjem" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Pasti za tanke" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Zmajevi zobje" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "Podloga za ponovno oborožitev NVP" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "PloÅ¡Äad s havbico" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "PloÅ¡Äad s svetilko" @@ -6689,139 +6706,139 @@ msgstr "Trda toÄka s svetilko" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Trda toÄka s tirno puÅ¡ko" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Stolp z izstrelki biÄ" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Stolp z igliÄno puÅ¡ko" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "PloÅ¡Äad z gavs topom" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Lahki top" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Srednje težki top" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Težki top" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Hiper-hitrostni top" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "JuriÅ¡ni top" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Pekel" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "Havbica" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Stresalec zemlje" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "PloÅ¡Äad s stresalcem zemlje" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Peklenski vihar" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "Sunkovni laser" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Strojnica" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Dvojna strojnica" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Težka strojnica" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "JuriÅ¡na puÅ¡ka" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "Izstrelek biÄ" @@ -6832,80 +6849,80 @@ msgstr "Izstrelek angel" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "RZZ zaÅ¡Äitnik" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "Izstrelek nadangel" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "RZZ maÅ¡Äevalec" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "NVP izstrelek biÄ" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Možnar" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "PloÅ¡Äad z možnarjem" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Bombardir" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "PloÅ¡Äad z bombardirjem" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "Poprnica" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "PloÅ¡Äad s poprnico" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "IgliÄna puÅ¡ka" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Tirna puÅ¡ka" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Gavs top" @@ -6915,74 +6932,74 @@ msgid "Mini-Rocket Artillery" msgstr "Mini-raketno topniÅ¡tvo" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "UniÄevalec bunkerjev" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "Metalec mini-raket" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "Valovne rakete" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "Morilec tankov" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "NVP uniÄevalec bunkerjev" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "NVP mini-raketa" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "NVP suliÄar" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "NVP Morilec tankov" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Kupola s flak tornadom" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Kupola s flak ciklonom" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "PZ stolp z zraÄnim vrtincem" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "PZ kupola s hurikanom" @@ -6991,62 +7008,62 @@ msgid "LasSat" msgstr "LasSat" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "NVP top" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "NVP hiper-hitrostni top" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "NVP juriÅ¡ni top" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "NVP sunkovni laser" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "NVP strojnica" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "NVP dvojna strojnica" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "NVP težka strojnica" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "NVP juriÅ¡na puÅ¡ka" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "NVP igliÄna puÅ¡ka" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "NVP tirna puÅ¡ka" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Kupola z bližinsko bombo" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Kupola z bližinsko superbombo" @@ -7055,22 +7072,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "NVP oddelek za kasetne bombe" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "NVP oddelek za Veop bombe" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "NVP oddelek za fosforne bombe" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "NVP oddelek za termitne bombe" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Kolektivov zid" @@ -7087,307 +7104,307 @@ msgid "NEXUS CWall" msgstr "NEXUS-ov kzid" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "KAM1 RAZISKAVE" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "NAPREDNE RAZISKAVE" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "KAM1 VOZILA" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "KAM1 OROŽJA" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "KAM1 SISTEMI" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "KAM1 OBRAMBE" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "KAM1 ZGRADBE" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "KAM2 RAZISKAVE" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "KAM2 VOZILA" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "KAM2 KIBORGI" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "KAM2 OROŽJA" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "KAM2 SISTEMI" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "KAM2 OBRAMBE" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "KAM2 ZGRADBE" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "KAM3 RAZISKAVE" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "SinaptiÄna povezava" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Å ifre za ciljanje izstrelkov" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Å ifre druge stopnje za ciljanje izstrelkov" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Å ifre tretje stopnje za izstrelitev izstrelkov" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Toplotni oklep za kiborge" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Toplotni oklep za kiborge tip 2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Toplotni oklep za kiborge tip 3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "Visokointenzivni toplotni oklep za kiborge" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "Visokointenzivni toplotni oklep za kiborge tip 2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "Visokointenzivni toplotni oklep za kiborge tip 3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Sestavljene zlitine za kiborge" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Sestavljene zlitine za kiborge tip 2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Sestavljene zlitine za kiborge tip 3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Goste sestavljene zlitine za kiborge" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Goste sestavljene zlitine za kiborge tip 2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Goste sestavljene zlitine za kiborge tip 3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Supergoste sestavljene zlitine za kiborge" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Supergoste sestavljene zlitine za kiborge tip 2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Supergoste sestavljene zlitine za kiborge tip 3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Kiborg razstreljevalec bunkerjev" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Kiborg težki puÅ¡kar" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Kiborg plamenometalec" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Kiborg strojniÄar" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Kiborg SuliÄar" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Kiborg juriÅ¡ni puÅ¡kar" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Kiborg igliÄni puÅ¡kar" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Kiborg biÄ" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Kiborg svetilni puÅ¡kar" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Skakalni razstreljevalec bunkerjev" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Skakalni težki puÅ¡kar" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Skakalni suliÄar" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Skakalni juriÅ¡ni puÅ¡kar" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Skakalni igliÄni puÅ¡kar" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Skakalni biÄ" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Skakalni svetilni puÅ¡kar" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Kiborgov skakalni nahrbtnik" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Trdobeton" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-trdobeton" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "IzboljÅ¡an trdobeton" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "IzboljÅ¡an trdobeton tip 2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "IzboljÅ¡an trdobeton tip 3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Superbeton" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Superbeton tip 2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Superbeton tip 3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "Plasbeton" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "Plasbeton tip 2" @@ -7402,15 +7419,15 @@ msgstr "PloÅ¡Äad s HH topom" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "PloÅ¡Äad z morilcem tankov" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Vkop z bombardirjem" @@ -7419,55 +7436,55 @@ msgid "Angel Missile Battery" msgstr "TopniÅ¡ka edinica z izstrelki angel" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "TopniÅ¡ka edinica z izstrelki nadangel" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Vkop z možnarjem" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Mini-raketna topniÅ¡ka edinica" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "PloÅ¡Äad s sunkovnim laserjem" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "PloÅ¡Äad s tirno puÅ¡ko" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "PloÅ¡Äad z juriÅ¡nim topom" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "PloÅ¡Äad z juriÅ¡no puÅ¡ko" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "Položaj RZZ maÅ¡Äevalec" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "Položaj RZZ zaÅ¡Äitnik" @@ -7485,15 +7502,15 @@ msgstr "Stražni stolp z mini-raketo" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Trda toÄka z izstrelkom biÄ" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Trda toÄka z morilcem tankov" @@ -7504,49 +7521,49 @@ msgstr "Trda toÄka s HH topom" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Trda toÄka z gavs topom" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "Postaja za prenos povelij" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Samodejna izdelava kiborgov tip 2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Samodejna izdelava kiborgov tip 3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Robotska izdelava kiborgov tip 2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Robotska izdelava kiborgov tip 3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "Napredna izdelava kiborgov" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "Napredna izdelava kiborgov tip 2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "Napredna izdelava kiborgov tip 3" @@ -7584,54 +7601,54 @@ msgid "Advanced Factory Production Mk3" msgstr "Napredna tovarniÅ¡ka izdelava tip 3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Okrepljene snovi baznih zgradb tip 2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Okrepljene snovi baznih zgradb tip 3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Utrjene snovi baznih zgradb tip 2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Utrjene snovi baznih zgradb tip 3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "Napredne snovi baznih zgradb tip 2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "Napredne snovi baznih zgradb tip 3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Generator s plinsko turbino" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Generator s parno turbino" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Stavba za popravila" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Samodejna stavba za popravila" @@ -7668,172 +7685,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "Nadgradnja napredna stavba za popravila tip 3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "SinaptiÄno povezana analiza podatkov" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "SinaptiÄno povezana analiza podatkov tip 2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "SinaptiÄno povezana analiza podatkov tip 3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Namenska sinaptiÄno povezana analiza podatkov tip 2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Namenska sinaptiÄno povezana analiza podatkov tip 3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Raziskovalni možgani z živÄnimi sinapsami tip 2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Raziskovalni možgani z živÄnimi sinapsami tip 3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Samodejna ponovna oborožitev NVP tip 2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Samodejna ponovna oborožitev NVP tip 3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Robotska ponovna oborožitev NVP tip 2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Robotska ponovna oborožitev NVP tip 3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Robotska ponovna oborožitev NVP tip 4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Robotska izdelava NVP tip 2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Robotska izdelava NVP tip 3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "Napredna izdelava NVP tip 2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "Napredna izdelava NVP tip 3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Samopopravilo kiborgov" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Samodejno popravilo kiborgov tip 2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Samodejno popravilo kiborgov tip 3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Samopopravilo obramb" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Samodejno popravilo obramb tip 2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Samodejno popravilo obramb tip 3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Samopopravilo baznih zgradb" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Samodejno popravilo baznih zgradb tip 2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Samodejno popravilo baznih zgradb tip 2" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Samopopravilo vozil" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Samodejno popravilo vozil tip 2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Samodejno popravilo vozil tip 3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "Nadgradnja senzorjev" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Gradbena enota" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Strojegradnja" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "IzboljÅ¡ana strojegradnja" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "Napredna strojegradnja" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "PremiÄna kupola za popravila" @@ -7843,84 +7860,84 @@ msgstr "Težka premiÄna kupola za popravila" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "Nadgradnja premiÄna popravila" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "Nadgradnja premiÄna popravila tip 2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "CB kupola" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "Nadgradnja CB senzorjev" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "Nadgradnja CB senzorjev tip 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "Nadgradnja CB senzorjev tip 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "NVP CB kupola" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "Nadgradnja NVP CB" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "Nadgradnja NVP CB 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "Nadgradnja NVP CB 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "Nadgradnja za NVP napad" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "Nadgradnja za NVP napad tip 2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "Nadgradnja za NVP napad tip 3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "Stolp za NVP napad" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "IzboljÅ¡an motilec" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Motilna kupola tip 2" @@ -7941,292 +7958,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "NEXUS-ovi uporni tokokrogi tip 3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "Senzorski zaklep" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Toplotni oklep" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Toplotni oklep tip 2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Toplotni oklep tip 3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "Visokointenzivni toplotni oklep" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "Visokointenzivni toplotni oklep tip 2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "Visokointenzivni toplotni oklep tip 3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Lahko telo - gad" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Lahko telo - leopard" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Lahko telo - povraÄilo" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Lahko telo - hroÅ¡Ä" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Srednje težko telo - naoÄarka" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Srednje težko telo - panter" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Srednje težko telo - kazen" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Srednje težko telo - Å¡korpijon" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Težko telo - tiger" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Težko telo - maÅ¡Äevanje" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Težko telo - piton" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Težko telo - bogomolka" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Motor z vbrizgom goriva tip 2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Motor z vbrizgom goriva tip 3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Turbo polnjen motor tip 2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Turbo polnjen motor tip 3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Motor s plinsko turbino tip 2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Motor s plinsko turbino tip 3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Sestavljene zlitine" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Sestavljene zlitine tip 2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Sestavljene zlitine tip 3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Goste sestavljene zlitine" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Goste sestavljene zlitine tip 2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Goste sestavljene zlitine tip 3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Supergoste sestavljene zlitine" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Supergoste sestavljene zlitine tip 2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Supergoste sestavljene zlitine tip 3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "ZraÄni pogon" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "ZraÄni pogon II" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "PolgoseniÄni pogon" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "PolgoseniÄni pogon II" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "GoseniÄni pogon" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "GoseniÄni pogon II" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "NVP pogon" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "NVP pogon II" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "Kolesni pogon II" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "PZ senzor s toplotnim slikanjem" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "PZ granate s pridobivanjem tarÄ" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "RaÄunalnik za predvidevanje PZ tarÄ" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "PZ VE flak" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "PZ VE flak tip 2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "PZ VE flak tip 3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "PZ VEOP flak" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "PZ VEOP flak tip 2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "PZ VEOP flak tip 3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "SkakaÄ za PZ strelivo" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "SkakaÄ za PZ strelivo tip 2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "SkakaÄ za PZ strelivo tip 3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "PZ verižnopolnilni nabijalec" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "PZ verižnopolnilni nabijalec tip 2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "PZ verižnopolnilni nabijalec tip 3" @@ -8235,17 +8252,17 @@ msgid "Cluster Bombs Bay" msgstr "Oddelek za kasetne bombe" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "Oddelek za VEOP bombe" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "Oddelek za fosforne bombe" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "Oddelek za termitne bombe" @@ -8262,252 +8279,252 @@ msgid "Target Acquisition Bombsight" msgstr "Bombni vid za pridobivanje tarÄ" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Topovski laserski iskalec razdalje" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Topovski laserski oznaÄevalec" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "VEPT topovske granate" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "VEPT topovske granate tip 2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "VEPT topovske granate tip 3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "OPKUOO topovski naboji" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "OPKUOO topovski naboji tip 2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "OPKUOO topovski naboji tip 3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "VHOPKUOO topovski naboji" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "VHOPKUOO topovski naboji tip 2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "VHOPKUOO topovski naboji tip 3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Samonabijalnik topa" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Samonabijalnik topa tip 2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Samonabijalnik topa tip 3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Zelo hiter nabijalnik topa" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Zelo hiter nabijalnik topa tip 2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Zelo hiter nabijalnik topa tip 3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "IzboljÅ¡ano osredotoÄanje laserja" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "IzboljÅ¡ano osredotoÄanje laserja tip 2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "IzboljÅ¡ano osredotoÄanje laserja tip 3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "Visokoenergijski laserski oddajnik" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "Visokoenergijski laserski oddajnik tip 2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "Visokoenergijski laserski oddajnik tip 3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Spodbujevalnik termiÄne palice" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Spodbujevalnik termiÄne palice tip 2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Spodbujevalnik termiÄne palice tip 3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "Visokotemperaturni gel za plamenometalec" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "Visokotemperaturni gel za plamenometalec tip 2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "Visokotemperaturni gel za plamenometalec tip 3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "SupervroÄi gel za plamenometalec" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "SupervroÄi gel za plamenometalec tip 2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "SupervroÄi gel za plamenometalec tip 3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Samonabijalnik plamenometalca" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Samonabijalnik plamenometalca tip 2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Samonabijalnik plamenometalca tip 3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Težki plamenometalec - pekel" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Težka havbica - stresalec zemlje" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Krožna havbica - peklenski vihar" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "TopniÅ¡ke granate s pridobivanjem tarÄ" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "TopniÅ¡ke granate s pridobivanjem tarÄ tip 2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "TopniÅ¡ke granate s predvidevanjem tarÄ" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "VE granate za havbico" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "VE granate za havbico tip 2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "VE granate za havbico tip 3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "VEOP granate za havbico" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "VEOP granate za havbico tip 2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "VEOP granate za havbico tip 3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Samonabijalnik havbice" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Samonabijalnik havbice tip 2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Samonabijalnik havbice tip 3" @@ -8516,57 +8533,57 @@ msgid "Fast Loader" msgstr "Hiter nabijalnik" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Laser - svetilka" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Utrjeni ST naboji" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "OPNOO ST naboji" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "OPNOO ST naboji tip 2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "OPNOO ST naboji tip 3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "ST naboji s konico iz volframa" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "ST naboji s konico iz volframa tip 2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "ST naboji s konico iz volframa tip 3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "ST naboji z osiromaÅ¡enim uranom" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "ST naboji z osiromaÅ¡enim uranom tip 2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "Nadgradnja verižne puÅ¡ke" @@ -8575,142 +8592,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "Nadgradnja brzostrelne verižne puÅ¡ke" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "Nadgradnja hiperstrelne verižne puÅ¡ke" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Izstrelki s predvidevanjem tarÄ" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Izstrelki iÅ¡Äi & uniÄi" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "Napredna bojna glava izstrelka" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "Napredna bojna glava izstrelka tip 2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "Napredna bojna glava izstrelka tip 3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "Napredni sistem razporeditve izstrelkov" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "Napredni sistem razporeditve izstrelkov tip 2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "Napredni sistem razporeditve izstrelkov tip 3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "VEOP bojna glava izstrelka" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "VEOP bojna glava izstrelka tip 2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "VEOP bojna glava izstrelka tip 3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "IzboljÅ¡an sistem nabijanja izstrelkov" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "RaÄunalnik za ciljanje možnarja" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "Možnarske granate s toplotnim slikanjem" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Možnarske granate s pridobivanjem tarÄ" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "VE granate za možnar" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "VE granate za možnar tip 2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "VE granate za možnar tip 3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "VEOP granate za možnar" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "VEOP granate za možnar tip 2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "VEOP granate za možnar tip 3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "Samonabijalnik možnarja" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "Samonabijalnik možnarja tip 2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "Samonabijalnik možnarja tip 3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "Hiter nabijalnik možnarja" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Težki možnar - bombardir" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Krožni možnar - poprnica" @@ -8719,367 +8736,367 @@ msgid "Target Prediction Computer" msgstr "RaÄunalnik za predvidevanje tarÄe" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Utrjeno tirno želo" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Utrjeno tirno želo tip 2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Utrjeno tirno želo tip 3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "HS tirne puÅ¡ke" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "HS tirne puÅ¡ke tip 2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "HS tirne puÅ¡ke tip 3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Uravnotežene mini-rakete" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Uravnotežene mini-rakete tip 2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "VE mini-rakete" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "VE mini-rakete tip 2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "VE mini-rakete tip 3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "VEOP mini-rakete" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "VEOP mini-rakete tip 2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "VEOP mini-rakete tip 3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "Hitrostrelne mini-rakete" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "Hitrostrelne mini-rakete tip 2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "Hitrostrelne mini-rakete tip 3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "Brzostrelne mini-rakete" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "Brzostrelne mini-rakete tip 2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "Brzostrelne mini-rakete tip 3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "IzboljÅ¡ano žiÄno vodenje rakete" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Raketni laserski oznaÄevalec" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Rakete s toplotnim slikanjem" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "VEPT bojna glava rakete" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "VEPT bojna glava rakete tip 2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "VEPT bojna glava rakete tip 3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "VEZG raketna bojna glava" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "VEZG raketna bojna glava tip 2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "VEZG raketna bojna glava tip 3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "Samonabijalnik rakete" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "Samonabijalnik rakete tip 2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "Samonabijalnik rakete tip 3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "PT raketa suliÄar" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Raketa za uniÄevanje bunkerjev" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "Raketa morilec tankov" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Artefakt strojnice" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "PoveljniÅ¡ko srediÅ¡Äe Nove paradigme" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "PoveljniÅ¡ko srediÅ¡Äe Kolektiva" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Plenilska tovarna" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Plenilski strelni stolp" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Plenilski vodoravni zid" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Plenilski generator moÄi" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Plenilski raketni vkop" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "Plenilski PT-raketni vkop" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Plenilski bunker" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Plenilski kotni zid" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Plenilski plamenski stolp" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Plenilski konec s plamenskim stolpom" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "Razgledni stolp" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Stolp s topom" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Artefakt" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Vir nafte" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "Most" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "UniÄena tovarna" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "SkladiÅ¡Äe" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Koliba" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Sod nafte" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Razbitina" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "UniÄen tank" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "UniÄen most" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "UniÄen kombi" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "UniÄeno vozilo" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "UniÄena cisterna" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Delavnica za kiborge" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "Delavnica za napredno vojskovanje" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Delavnica za strojegradnjo" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Delavnica za robotiko" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Delavnica za lasersko optiko" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Delavnica za elektroniko" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Kemijska delavnica" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "Napredno vojskovanje" @@ -9100,7 +9117,7 @@ msgid "MRL Emplacement" msgstr "PloÅ¡Äad z IMR" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "PloÅ¡Äad s tirno puÅ¡ko" @@ -9109,49 +9126,49 @@ msgid "Angel Missile Emplacement" msgstr "PloÅ¡Äad z izstrelki angel" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "PloÅ¡Äad z izstrelki nadangel" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "Kupola za popravila NaoÄarka Gosenice" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "BiÄ" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Razstreljevalec bunkerjev" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Svetilni puÅ¡kar" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "IgliÄni puÅ¡kar" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Sestreljen prevoz" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "Morilec tankov Piton Gosenice" @@ -9160,37 +9177,37 @@ msgid "HPV Cannon Python Tracks" msgstr "HH top Piton Gosenice" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "PZ ciklon Piton Polgosenice" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "JuriÅ¡na puÅ¡ka Piton Gosenice" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Svetilka" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "NVP svetilka" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Krožni ST bunker" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Izstrelitveni silos" @@ -9472,338 +9489,1208 @@ msgstr "Prosim poÄakajte medtem ko tovarna izdeluje novo(e) enoto(e)" msgid "Congratulations commander - you are ready for your first mission" msgstr "ÄŒestitke poveljnik - pripravljeni ste na vaÅ¡o prvo misijo" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "PrihajajoÄe sporoÄilo" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +#, fuzzy +msgid "Transmission from Beta Base" +msgstr "PrihajajoÄe sporoÄilo odposlane skupine." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Cilji Projekta" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Skupina alfa uniÄena" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +#, fuzzy +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "DeÅ¡ifrirali smo prihajajoÄe sporoÄilo za Novo paradigmo..." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "Trenutno sprejemamo to sporoÄilo." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +#, fuzzy +msgid "You are in contravention of the New Paradigm." +msgstr "ÄŒestitke za premaganje Nove paradigme." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "ÄŒestitke za premaganje Nove paradigme." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "Treba jih je ustaviti." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +#, fuzzy +msgid "Secure the LZ and establish a forward base." +msgstr "Zavarujte PC, nato vzpostavite prednjo bazo." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "Nato uniÄite tabor." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "Ko se nismo odzvali, je postal napadalen." + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +#, fuzzy +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "Nexus ima tehnologijo in orožje ter ni prijateljski." + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +#, fuzzy +msgid "You are entering a restricted area." +msgstr "obnaÅ¡ate se neumno." + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +#, fuzzy +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "Prevzeta je bila tehnologija sinaptiÄne povezave!" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +#, fuzzy +msgid "Team Alpha approaches Beta Base" +msgstr "Skupina alfa uniÄena" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +#, fuzzy +msgid "You must defend and hold it at all costs." +msgstr "Morate jo braniti ter obdržati." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +#, fuzzy +msgid "Commander, a new launch has been detected." +msgstr "Poveljnik, premagali smo NEXUS." + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +#, fuzzy +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Vzpostaviti morate varno zavetje za evakuacijo baze beta." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +#, fuzzy +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Iz tega položaja zaznavamo sporoÄila, ki dosegajo visoko orbito." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +#, fuzzy +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS se je sedaj ponovno povezal z NASDA sateliti." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +#, fuzzy +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Poveljnik, v silosu so prisotni izstrelki." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +#, fuzzy +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "UniÄite vse, ki se upirajo Stroju." + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +#, fuzzy +msgid "Attack and destroy all who resist the machine." +msgstr "UniÄite vse, ki se upirajo Stroju." + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "Napad!" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +#, fuzzy +msgid "Cleanse and destroy!!" +msgstr "PoiÅ¡Äite in uniÄite...." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +#, fuzzy +msgid "Warriors of the Collective. You have performed well." +msgstr "Bojevniki Kolektiva..." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "PrihajajoÄe sporoÄilo..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "ÄŒestitke za vaÅ¡o uspeÅ¡no evakuacijo baze beta." + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "Navodila sledijo:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Poglej naslednjega poveljnika" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +#, fuzzy +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Na teh položajih zaznavamo sovražne sile." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Vso sreÄo, poveljnik." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +#, fuzzy +msgid "Commander, welcome to NEXUS!" +msgstr "Poveljnik, premagali smo NEXUS." + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Poveljnik, poskuÅ¡amo se vrniti v bazo." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Jedrski reaktor" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "NaoÄarka ZraÄna blazina Težka popravila" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "Gad TST Kolesa" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "BiÄ Bogomolka ZraÄna blazina" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "MT Bogomolka ZraÄna blazina" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "NaoÄarka TST Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "NaoÄarka ZraÄna blazina TT" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "Å korpijon SuliÄar Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "Å korpijon Težki top Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "Å korpijon SuliÄar NVP" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "Å korpijon UB NVP" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "Gad PoveljniÅ¡ka kupola Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "NaoÄarka PoveljniÅ¡ka kupola Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "Å korpijon PoveljniÅ¡ka kupola Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "Bogomolka PoveljniÅ¡ka kupola Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "NaoÄarka SuliÄar Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "Bogomolka Težki top Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "Bogomolka Morilec tankov Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "Bogomolka BiÄ Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "Å korpijon Težka strojnica Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "Å korpijon Popravila Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Å korpijon Težka popravila ZraÄna blazina" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "NaoÄarka ZraÄna blazina Tovornjak" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Å korpijon ZraÄna blazina Tovornjak" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Bogomolka ZraÄna blazina Tovornjak" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "NaoÄarka z uniÄevalcem bunkerjev in gosenicami" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "Å korpijon z uniÄevalcem bunkerjev in gosenicami" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "Bogomolka UniÄevalec bunkerjev Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "Gad Gosenice SuliÄar" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "NaoÄarka Polgosenice Mini-metalec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "NaoÄarka Gosenice Mini-metalec" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "NaoÄarka Gosenice Mini-raketno topniÅ¡tvo" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "NaoÄarka Pekel Polgosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "Piton HHT ZraÄna blazina" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "Piton BiÄ Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "Piton Gavs top Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "Piton Sunkovni laser Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "Tiger Sunkovni laser Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "Tiger Težki laser Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "Krilata kaÄa Gavs top Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "Krilata kaÄa Sunkovni laser Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "Krilata kaÄa Težki laser Gosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "Gad Strojnica Polgosenice" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "Gad Plamenometalec Polgosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Kupola za težka popravila NaoÄarka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "Težka strojnica Gad Kolesa" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Morilec tankov Bogomolka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "Težka strojnica NaoÄarka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Težki top NaoÄarka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "Težka strojnica NaoÄarka Kolesa" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Težka strojnica NaoÄarka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "Strojnica Gad Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "Dvojna strojnica Gad Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Srednje težki top NaoÄarka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Srednje težki top Å korpijon ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "Srednje težki top Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Srednje težki top Piton ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Težki top Piton ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "Tirna puÅ¡ka Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "Sunkovni laser Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "SuliÄar Piton Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "SuliÄar Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "Morilec tankov MaÅ¡Äevanje Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "Težki top Tiger Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "IgliÄna puÅ¡ka Tiger Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "IgliÄna puÅ¡ka Kazen Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "IgliÄna puÅ¡ka MaÅ¡Äevanje Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "MaÅ¡Äevanje Gosenice Tirna puÅ¡ka" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 #, fuzzy msgid "Vengeance Tracks Gauss Cannon" msgstr "MaÅ¡Äevanje Gosenice Gavs top" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 #, fuzzy msgid "Vengeance Tracks Gauss Scourge" msgstr "MaÅ¡Äevanje Gosenice Gavs biÄ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "NVP Oddelek za kasetne bombe HroÅ¡Ä NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "NVP UniÄevalec bunkerjev HroÅ¡Ä NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "NVP Oddelek za kasetne bombe Å korpijon NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "NVP UniÄevalec bunkerjev Å korpijon NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "NVP SuliÄar HroÅ¡Ä NVP" @@ -9812,7 +10699,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "NVP HH top HroÅ¡Ä NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "NVP SuliÄar Å korpijon NVP" @@ -9822,7 +10709,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "NVP HH top Å korpijon NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "NVP SuliÄar Bogomolka NVP" @@ -9831,127 +10718,127 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "NVP HH top Bogomolka NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "Kupola za popravila Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "SuliÄar Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "Težki top Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "SuliÄar Å korpijon NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "UniÄevalec bunkerjev Å korpijon NVP" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "PoveljniÅ¡ka kupola Gad Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "PoveljniÅ¡ka kupola NaoÄarka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "PoveljniÅ¡ka kupola Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "PoveljniÅ¡ka kupola Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "SuliÄar NaoÄarka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "Težki top Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "Morilec tankov Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "BiÄ Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "Težka strojnica Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "Popravila Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Težka popravila Å korpijon ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Tovornjak NaoÄarka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Tovornjak Å korpijon ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Tovornjak Bogomolka ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "UniÄevalec bunkerjev NaoÄarka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "UniÄevalec bunkerjev Å korpijon Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "UniÄevalec bunkerjev Bogomolka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "SuliÄar Gad Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "Mini-raketa NaoÄarka Polgosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "Mini-raketa NaoÄarka Gosenice" @@ -9961,7 +10848,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "Mini-raketno topniÅ¡tvo NaoÄarka Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "Pekel NaoÄarka Polgosenice" @@ -9970,55 +10857,175 @@ msgid "HPV Cannon Python Hover" msgstr "HH top Piton ZraÄna blazina" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "BiÄ Piton Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "Gavs top Piton Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "Sunkovni laser Piton Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "Sunkovni laser Tiger Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "Težki laser Tiger Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "Gavs top Krilata kaÄa Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "Sunkovni laser Krilata kaÄa Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "Težki laser Krilata kaÄa Gosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "Strojnica Gad Polgosenice" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "Plamenometalec Gad Polgosenice" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "Pekel NaoÄarka Polgosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "Srednje težki top NaoÄarka Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "HH top Piton ZraÄna blazina" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "JuriÅ¡na puÅ¡ka Piton Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "JuriÅ¡na puÅ¡ka Piton Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "Težka strojnica Å korpijon Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "Stražni stolp z juriÅ¡nim topom" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "Stolp s sunkovnim laserjem" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "Stolp s sunkovnim laserjem" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +#, fuzzy +msgid "Rail Gun Tiger Hover" +msgstr "Nadgradnja tirne puÅ¡ke" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "Sunkovni laser Tiger Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "Gavs top Krilata kaÄa Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "Stolp z izstrelki biÄ" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +#, fuzzy +msgid "Flashlight Retribution Hover" +msgstr "Svetilni puÅ¡kar" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "Mini-raketa NaoÄarka Polgosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "Mini-raketno topniÅ¡tvo NaoÄarka Gosenice" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "Oddelek za fosforne bombe" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "NVP oddelek za Veop bombe" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "Srednje težko telo - kazen" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "PovraÄilo" + #: data/mp/messages/resmessages12.rmsg:58 #, fuzzy msgid "Construction speed +10%" @@ -10691,7 +11698,7 @@ msgid "Upgraded battlefield computer system" msgstr "Nadgrajen bojiÅ¡Äni raÄunalniÅ¡ki sistem" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "Prevoz kiborgov" @@ -10722,7 +11729,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "Mini-raketno topniÅ¡tvo NaoÄarka Polgosenice" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Radarski zaznavalec" @@ -10735,649 +11742,664 @@ msgid "Nexus Link" msgstr "Nexus-ova povezava" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Kupola z Nexus-ovo povezavo" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Trdobetonski zid" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Bunker s peklom" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "PZ položaj s tornadom" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "PZ položaj s ciklonom" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Trda toÄka s sunkovnim laserjem" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Stolp s sunkovnim laserjem" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 #, fuzzy msgid "Seraph Missile Array" msgstr "IzboljÅ¡a natanÄnost izstrelkov" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "Mini-raketno topniÅ¡tvo" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "PoveljniÅ¡ka postaja laserskega satelita" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "NVP oddelek za kasetne bombe" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Kolektivov kotni zid" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Nexus-ov zid" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Nexus-ov kotni zid" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "Plasbeton tip 3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "Plasjeklo" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "Plasjeklo tip 2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "Plasjeklo tip 3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "Igra" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 #, fuzzy msgid "Hyper Velocity Cannon Emplacement" msgstr "Hiper-hitrostni top" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 #, fuzzy msgid "Seraph Missile Battery" msgstr "TopniÅ¡ka edinica z izstrelki angel" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Stolp s plamenometalcem" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 #, fuzzy msgid "Hyper Velocity Cannon Hardpoint" msgstr "Hiper-hitrostni top" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Samodejna izdelava" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Samodejna izdelava tip 2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Samodejna izdelava tip 3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Robotska izdelava" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Robotska izdelava tip 2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Robotska izdelava tip 3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "Napredna izdelava" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "Napredna izdelava tip 2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Samoreprodukcijska izdelava" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "Napredna izdelava tip 3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Samodejna stavba za popravila tip 2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Samodejna stavba za popravila tip 3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Robotska stavba za popravila" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Robotska stavba za popravila tip 2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "Napredna stavba za popravila" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Robotska stavba za popravila tip 3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "Napredna stavba za popravila tip 2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "Napredna stavba za popravila tip 3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Samopopravilo" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Kupola za težka popravila" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "Nexus-ov vdorni program" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "Nexus-ovi uporni tokokrogi" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "Nexus-ovi uporni tokokrogi tip 2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "Nexus-ovi uporni tokokrogi tip 3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "Oddelek za kasetne bombe" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "VE bombne granate" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "IzboljÅ¡ana bombna bojna glava" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "Napredna bombna bojna glava" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Hiter nabijalnik havbice" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "Brzostrelna verižna puÅ¡ka" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "RaÄunalnik za predvidevanje tirne tarÄe" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "VE mini-rakete" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "VE mini-rakete tip 2" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "VE mini-rakete tip 3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Stolp z juriÅ¡no puÅ¡ko" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "Popravilo NaoÄarka Gosenice" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "Težki top Piton Gosenice" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "NaoÄarka z uniÄevalcem bunkerjev in zraÄno blazino" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "Nadgradnja senzorjev tip 2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "Nadgradnja senzorjev tip 3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Generator s parno turbino tip 2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Generator s plinsko turbino tip 2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Generator s plinsko turbino tip 3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Generator s parno turbino tip 2" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Kiborg s termitnim plamenometalcem" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Termitni plamenometalec" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Kiborg z grenadirjem" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Grenadir" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Bojni strojegradnik" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Kiborg mehanik" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "Zažigalna havbica" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "PloÅ¡Äad z zažigalno havbico" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Plazmitni plamenometalec" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Bunker s plazmitnim plamenometalcem" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "Zažigalni možnar" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Vkop z zažigalnim možnarjem" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Supergosti toplotni oklep za kiborge" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Supergosti toplotni oklep za kiborge tip 2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Supergosti toplotni oklep za kiborge tip 3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Supergosti toplotni oklep za vozila" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Supergosti toplotni oklep za vozila tip 2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Supergosti toplotni oklep za vozila tip 3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Super težki puÅ¡kar" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Super samo-top kiborg" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Super HH kiborg" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Super kiborg morilec tankov" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Težki laser" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "NVP težki laser" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "PloÅ¡Äad s težkim laserjem" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Dvojni juriÅ¡ni top" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Bunker z dvojnim juriÅ¡nim topom" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "SrediÅ¡Äe za satelitsko povezavo" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "Senzor s Å¡irokim spektrom" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Senzorski stolp s Å¡irokim spektrom" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Plazma top" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "PloÅ¡Äad s plazma topom" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Super kiborg s sunkovnim laserjem" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Super tirni puÅ¡kar" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Super kiborg biÄ" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Stolp z Nexus-ovo povezavo" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "EMS top" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Stolp z EMS topom" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "MnožiÄna poganjalna trdnjava" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "MnožiÄni poganjaÄ" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Topovska trdnjava" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Branik s težko raketo" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "IzstrelniÅ¡ka trdnjava" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "Super težko telo - Krilata kaÄa" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Krilata kaÄa" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 #, fuzzy msgid "Multi Turret Body - Dragon" msgstr "Super težko telo - Zmaj" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Zmaj" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "SupervroÄi plazmitni gel" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "SupervroÄi plazmitni gel tip 2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "SupervroÄi plazmitni gel tip 3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "EMS možnar" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Vkop z EMS možnarjem" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "PZ laser hudournik" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "PloÅ¡Äad s hudournikom" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Trda toÄka z zaÅ¡Äitnikom" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Trda toÄka z zraÄnim vrtincem" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Trda toÄka s ciklonom" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Trda toÄka z maÅ¡Äevalcem" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Dvojna juriÅ¡na puÅ¡ka" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Trda toÄka z dvojno juriÅ¡no puÅ¡ko" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "NVP oddelek za plazmitne bombe" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Plazmitna bomba" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "NVP izstreljevalec EMS izstrelkov" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "Izstreljevalec EMS izstrelkov" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "PoveljniÅ¡ka kupola" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "PoveljniÅ¡ka kupola tip 3" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "PoveljniÅ¡ka kupola" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "NVP hiper-hitrostni top" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "NVP HH top Å korpijon NVP" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 #, fuzzy msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "NVP hiper-hitrostni top" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "Mini-raketno topniÅ¡tvo NaoÄarka Gosenice" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "Težki top Piton ZraÄna blazina" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "Srednje težko telo - kazen" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11511,32 +12533,41 @@ msgstr "" msgid "Latin" msgstr "Latinski" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 #, fuzzy msgid "Enter password here" msgstr "Najprej vnesite geslo" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Ni bilo mogoÄe razreÅ¡iti imena glavnega strežnika (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Ni bilo mogoÄe komunicirati z vežnim strežnikom! Je TCP prehod %u odprt za izhodni promet?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Shrani igro" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11686,15 +12717,15 @@ msgstr "gostitelj" msgid "go directly to host screen" msgstr "pojdi naravnost na gostiteljev zaslon" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Igralec" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Novo vozilo" @@ -11733,18 +12764,18 @@ msgstr "Proizvodnja motorja" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Teža" @@ -11758,127 +12789,127 @@ msgstr "Celotna potrebna moÄ" msgid "Total Body Points" msgstr "Celotne telesne toÄke" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Poraba moÄi" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "Prevoz" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Hidra" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Domet senzorja" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "MoÄ senzorja" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "MoÄ EPU" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "Gradne toÄke" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Domet" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "PoÅ¡kodbe" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "Brzina streljanja" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "ZraÄna hitrost" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "Cestna hitrost" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "Izven cestna hitrost" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "Vodna hitrost" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "Orožja" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "Sistemi" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Igralec odÅ¡el" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" msgstr "Igralec izpadel" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Gradnja ni možna. Vir nafte gori." -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - PoÅ¡kodbe %d%% - IzkuÅ¡enj %d %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - PoÅ¡kodbe %d%% - IzkuÅ¡enj %d %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Tovornjaku ukazana gradnja naftne vrtine" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Tovornjaku ukazana gradnja naftne vrtine" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Tovornjaku ukazana gradnja naftne vrtine" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Enota izgubljena!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Zgradba obnovljena" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" @@ -11887,7 +12918,7 @@ msgstr[1] "Skupina %u izbrana - %u enota" msgstr[2] "Skupina %u izbrana - %u enoti" msgstr[3] "Skupina %u izbrana - %u enote" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" @@ -11896,7 +12927,7 @@ msgstr[1] "%u enota dodeljena skupini %u" msgstr[2] "%u enoti dodeljeni skupini %u" msgstr[3] "%u enote dodeljene skupini %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" @@ -11905,7 +12936,7 @@ msgstr[1] "Centriran na skupino %u - %u enota" msgstr[2] "Centriran na skupino %u - %u enoti" msgstr[3] "Centriran na skupino %u - %u enote" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" @@ -11914,40 +12945,40 @@ msgstr[1] "Poravnava s skupino %u - %u enota" msgstr[2] "Poravnava s skupino %u - %u enoti" msgstr[3] "Poravnava s skupino %u - %u enote" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Novinec" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Zelen" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Izurjen" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "Navaden" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "Poklicni" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Veteran" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Elita" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "Poseben" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Junak" @@ -11993,11 +13024,11 @@ msgstr "UÄŒNE VAJE" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "Nazaj" @@ -12078,19 +13109,19 @@ msgid "Video Playback" msgstr "Igranje posnetkov" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "1X" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "2X" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Cel zaslon" @@ -12099,43 +13130,42 @@ msgid "Screen Shake" msgstr "Tresenje zaslona" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Vklopljeno" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Izklopljeno" @@ -12145,153 +13175,152 @@ msgid "Fog" msgstr "Megla" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Meglica" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Megla vojne" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Podnapisi" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Sence" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "MOŽNOSTI IGRE" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "Glasovi" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "UÄinki" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "Glasba" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "MOŽNOSTI IGRE" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "GrafiÄni naÄin*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Okensko" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "LoÄljivost*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Velikost tekstur" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "Vertkalna sinh*" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* ZaÄne delovati po ponovnem zagonu" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "MOŽNOSTI IGRE" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "Obrnjena miÅ¡ka" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "Ujemi kazalec" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "Možnosti miÅ¡ke" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "MOŽNOSTI IGRE" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "Težavnost" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Lahka" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "ObiÄajna" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Težka" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "Hitrost pomikanja" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Jezik" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Barva enot" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "MOŽNOSTI IGRE" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12324,105 +13353,105 @@ msgstr "Igralec/ka %u si je prigoljufal/a (razhroÅ¡Äevalni meni) novo odliko: % msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Igralec/ka %u si je prigoljufal/a (razhroÅ¡Äevalni meni) novega droida: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Poveljniki (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "ObveÅ¡Äevalni zaslon (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Izdelava (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "NaÄrtovanje (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "Raziskave (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Gradnja (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "MoÄ" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "PloÅ¡Äa" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "Položi ploÅ¡Äe na mapo" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Enota" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "Položi enote na mapo" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Zgradba" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "Položi zgradbe na mapo" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Odlika" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "Položi odlike na mapo" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "Ustavi ali nadaljuj igro" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "Uskladi viÅ¡ino vseh predmetov na mapi" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "KonÄaj" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Zapusti igro" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "ÄŒrta napredka" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Dostavna toÄka tovarne" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Ponavljaj izdelavo" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Tab premakni levo" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Tab premakni desno" @@ -12466,6 +13495,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 msgid "Build Progress" msgstr "Potek gradnje" @@ -12479,7 +13516,7 @@ msgid "Power Accrued" msgstr "MoÄ poveÄana" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "IGRA USTAVLJENA" @@ -12606,289 +13643,289 @@ msgstr "Dodeli NVP tovarniÅ¡ko izdelavo" msgid "Circle" msgstr "Kroži" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Oprostite, ta goljufija je onemogoÄena v igrah z veÄimi igralci." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Opozorilo! Ta goljufija je hroÅ¡Äata. PriporoÄamo, da se je NE uporablja." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Dovoli nam videti kar vidite vi!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "Vredu, prikaz orožja & senzorjev je izklopljen!" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "Igralec/ka %u si je prigoljufal/a (razhroÅ¡Äevalni meni) novega droida: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Igralec %u) uporablja goljufijo :%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Trdo kot žeblji!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Enostavno jemanje stvari!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 velikih!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "Neustavljiva moÄ" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "Nazaj v normalnost!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Postaja zapleteno!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Dvakrat tako dobro!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "Prikaz SNS je omogoÄen." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "Prikaz SNS je onemogoÄen." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "SNS %d; Meja SNS: %d; PIE-ji %d; poliji %d; Ter. poliji %d; Stanja %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Igralec %u) uporablja goljufijo :Å t droidov: %d Å t zgradb: %d Å t odlik: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Neustavljiva moÄ onemogoÄena" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "Neustavljiva moÄ omogoÄena" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Vse zadeve dane na voljo" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Megla vklopljena" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Megla izklopljena" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Opozorilo! Ta goljufija lahko kasneje povzroÄi resne težave! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "KonÄujem misijo." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "GOLJUFIJE SO SEDAJ OMOGOÄŒENE!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "GOLJUFIJE SO SEDAJ ONEMOGOÄŒENE!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Božji naÄin VKLOPLJEN" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Božji naÄin IZKLOPLJEN" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Pogled poravnan na sever" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, fuzzy, c-format msgid "Trap cursor %s" msgstr "Ujemi kazalec" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "Raziskal VSE za vas!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Igralec %u) uporablja goljufijo :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "Raziskano" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "ÄŒrte moÄi prikazane le ob izboru" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Vedno prikazane Ärte moÄi za enote" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Vedno prikazane Ärte moÄi za enote in zgradbe" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Demo naÄin izklopljen - VraÄanje na navadni naÄin igre" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "RazhroÅ¡Äevalni meni je odprt" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Ni mogoÄe najti nobenih Ärpalcev virov!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Oh, vreme zunaj je straÅ¡no... SNEG" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Pojem v dežju, jaz pojem v dežju... DEŽ" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Napoved : jasno nebo za vsa obmoÄja... NI VREMENA" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Opozorilo! To ima lahko drastiÄne posledice, Äe se nepravilno uporabi v misijah" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "Vsi sovražniki uniÄeni z goljufanjem!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "UniÄevanje izbranih droidov in zgradb!" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Centriran na GS igralca, smer SEVER" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Ni mogoÄe najti GS!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Oprostite, ta goljufija je onemogoÄena v igrah z veÄimi igralci." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "Hitrost igre ponastavljena" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "Hitrost igre poveÄana na %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "Hitrost igre zmanjÅ¡ana na %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Gradbeni meni se bo ponovno odprl" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Gradbeni meni se ne bo ponovno odprl" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Radar kaže barve prijateja-sovražnika" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Radar kaže barve igralca" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Radar kaže samo predmete" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Radar združuje teren in viÅ¡ino " -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Radar kaže teren" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "Radar kaže teren" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Radar kaže viÅ¡ino" @@ -13309,8 +14346,8 @@ msgstr "Nadaljuj igro" msgid "GAME SAVED :" msgstr "IGRA SHRANJENA:" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "NaÅ¡li ste %u moÄi v sodu nafte" @@ -13621,21 +14658,21 @@ msgstr "Gostitelj je brcnil %s iz igre!" msgid "Host is Starting Game" msgstr "Gostitelj zaÄenja igro" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Igralci" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13644,27 +14681,27 @@ msgstr "" msgid "Players Still Joining" msgstr "Igralci se Å¡e pridružujejo" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s je zapustil igro" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s se pridružuje igri" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "Sistemsko sporoÄilo:" @@ -13751,48 +14788,48 @@ msgstr "Daj igralcu moÄ" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "ZavezniÅ¡tva" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Zelena" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Oranžna" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Siva" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "ÄŒrna" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "RdeÄa" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Modra" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Roza" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Cijan" @@ -13935,12 +14972,12 @@ msgstr "ZMAGALI STE!" msgid "YOU WERE DEFEATED!" msgstr "BILI STE PREMAGANI!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Prejet poziv od %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Poziv %d" @@ -13971,12 +15008,12 @@ msgstr "Ni mogoÄe najti nobenih senzorskih enot!" msgid "Unable to locate any Commanders!" msgstr "Ni mogoÄe najti nobenih poveljnikov!" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "Meja poveljniÅ¡kega nadzora dosežena - izdelava ustavljena" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" @@ -13985,50 +15022,50 @@ msgstr[1] "%s - %u enota dodeljena" msgstr[2] "%s - %u enoti dodeljeni" msgstr[3] "%s - %u enote dodeljene" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - PoÅ¡kodbe %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - povezane %u od %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - elektronsko poÅ¡kodovan" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Elektronska nagrada - poroÄilo o vidljivosti" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Nagrada tovarne - pogon" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Nagrada tovarne - telo" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Nagrada tovarne - orožje" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Nagrada tovarne - niÄ" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Nagrada stavbe za popravila - popravilo" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Nagrada stavbe za popravila - niÄ" @@ -14037,7 +15074,7 @@ msgstr "Nagrada stavbe za popravila - niÄ" msgid "Launch Transport" msgstr "OdpoÅ¡lji prevoz" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "Okrepitve pristajajo" @@ -14069,6 +15106,18 @@ msgstr "- Zgrajen %s" msgid "Version %s%s%s%s" msgstr "Verzija %s%s%s%s" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "Oddelek za fosforne bombe" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "NVP oddelek za Veop bombe" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "mod" + #, fuzzy #~ msgid "Player %u has the wrong game version. Auto kicking." #~ msgstr "Igralec %u ima napaÄno verzijo igre. Auto brcam." @@ -14112,9 +15161,6 @@ msgstr "Verzija %s%s%s%s" #~ msgid "Software (coloured)" #~ msgstr "Programska oprema (barvno)" -#~ msgid "you are being a jerk." -#~ msgstr "obnaÅ¡ate se neumno." - #~ msgid "English" #~ msgstr "AngleÅ¡ki" @@ -14157,9 +15203,6 @@ msgstr "Verzija %s%s%s%s" #~ msgid "Right-click Orders" #~ msgstr "Desno-klikni ukazi" -#~ msgid "Game" -#~ msgstr "Igra" - #~ msgid "Mayhem" #~ msgstr "Pohabljenje" @@ -14489,33 +15532,15 @@ msgstr "Verzija %s%s%s%s" #~ msgid "Commander" #~ msgstr "Poveljnik" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "ÄŒestitke za premaganje Nove paradigme." - #~ msgid "This sector is now secure." #~ msgstr "Ta sektor je sedaj varen." -#~ msgid "When we failed to respond it became threatening." -#~ msgstr "Ko se nismo odzvali, je postal napadalen." - #~ msgid "Nexus removed itself leaving no trace" #~ msgstr "Nexus se je odstranil brez sledu" #~ msgid "The Nexus Intruder Program has links with the Reed corporation." #~ msgstr "Vdorni program Nexus ima povezave z korporacijo Reed." -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "Nexus ima tehnologijo in orožje ter ni prijateljski." - -#~ msgid "Warriors of the Collective..." -#~ msgstr "Bojevniki Kolektiva..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "UniÄite vse, ki se upirajo Stroju." - -#~ msgid "Attack!" -#~ msgstr "Napad!" - #~ msgid "Analysis of the reactor site indicates The Collective" #~ msgstr "Analiza reaktorjevega položaja kaže, da je Kolektiv" @@ -14600,9 +15625,6 @@ msgstr "Verzija %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "PrihajajoÄ zraÄni napad" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Skupina alfa uniÄena" - #~ msgid "Team Beta Eradicated" #~ msgstr "Skupina beta uniÄena" diff --git a/po/uk_UA.po b/po/uk_UA.po index 10db83dee..11250b868 100644 --- a/po/uk_UA.po +++ b/po/uk_UA.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Warzone 2100 version 2.2.3\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: \n" "Last-Translator: Меденцій ОлекÑандр \n" "Language-Team: \n" @@ -1574,7 +1574,7 @@ msgstr "ВдоÑконалено Виробництво Кіборгів" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "Ðвтоматизоване виробництво Кіборгів" @@ -1606,8 +1606,8 @@ msgstr "Ð’ÑÑ– Фабрики Кіборгів покращуютьÑÑ Ð°Ð²Ñ‚Ð¾ #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "Фабрика Кіборгів" @@ -1768,7 +1768,7 @@ msgstr "ПідвищуєтьÑÑ Ð¡Ñ‚Ñ–Ð¹ÐºÑ–ÑÑ‚ÑŒ до Пошкоджень" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "Ðрмовані Матеріали Ð´Ð»Ñ Ð‘ÑƒÐ´Ñ–Ð²ÐµÐ»ÑŒ Бази" @@ -1941,7 +1941,7 @@ msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð”Ð²Ð¸Ð³ÑƒÐ½Ð° Техніки" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "Інжекторний Двигун" @@ -2098,7 +2098,7 @@ msgstr "ШвидкіÑÑ‚ÑŒ: Ðизька" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "КоліÑна Ходова" @@ -2958,7 +2958,7 @@ msgstr "Ðові роботизовані методи ремонту" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "Роботизоване Виробництво Кіборгів" @@ -2980,7 +2980,7 @@ msgstr "ВдоÑконалюєтьÑÑ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð¸Ð²Ð½Ñ–ÑÑ‚ÑŒ Фабрик #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "Спеціальний Ðналіз Даних Синаптичного Зв'Ñзку" @@ -2989,7 +2989,7 @@ msgstr "Спеціальний Ðналіз Даних Синаптичного #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "Зміцнені Матеріали Будівель Бази" @@ -2998,7 +2998,7 @@ msgstr "Зміцнені Матеріали Будівель Бази" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "Роботизоване Виробництво ВЗІПів" @@ -3034,7 +3034,7 @@ msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ð§Ð°Ñу ÐŸÐ¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð‘Ð¾Ñ”ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚ #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "Ðвтоматизоване ÐŸÐ¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð‘Ð¾Ñ”ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚Ñƒ ВЗІПів" @@ -3165,7 +3165,7 @@ msgstr "ВиÑокі витрати енергії та нижчі темпи в #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "Двигун ОÑнащений Турбіною" @@ -3843,14 +3843,14 @@ msgstr "Парова Турбіна підвищує виробіток енер #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "Ðеврально-Синаптичне ДоÑлідницьке Ядро" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "ВдоÑконалені матеріали Будівель Бази" @@ -3862,14 +3862,14 @@ msgstr "Матеріали Будівель Баз ВиÑокої Ð©Ñ–Ð»ÑŒÐ½Ð¾Ñ #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "ВдоÑконалене виробництво ВЗІП" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "Роботизована перезарÑдка ВЗІПів" @@ -4007,7 +4007,7 @@ msgstr "Дуже виÑока ціна виробництва" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "Газотурбінний Двигун" @@ -4559,14 +4559,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "Лазерний цілеказувач направлÑÑ” та веде набої до цілі" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "МЕТÐ: Знайти Ñ– повернути невральну Ñинаптичну технологію" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "Збудуйте базу, а потім шукайте ДокатаÑтрофну будівлю." #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "Ð¦Ñ Ð±ÑƒÐ´Ñ–Ð²Ð»Ñ Ð¼Ñ–Ñтить технологію життєво важливу Ð´Ð»Ñ ÑƒÑпіху Проекту." @@ -4923,14 +4926,18 @@ msgid "We'll keep you informed of further developments" msgstr "Ми будемо тримати Ð²Ð°Ñ Ñƒ курÑÑ– подальших подій" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "Командире, ви повинні допомогти команді Бета" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "МІСІЯ БÐЗИ БЕТÐ: Східний Сектор" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "По прибутті ви візьмете на Ñебе ÐºÐ¾Ð¼Ð°Ð½Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¾ÑŽ." @@ -4939,16 +4946,19 @@ msgid "You must defend it and hold it." msgstr "Ви маєте захиÑтити Ñ– втримати Ñ—Ñ—." #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "МІСІЯ БÐЗИ БЕТÐ: Захищати на Зміцнювати" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "ОбовÑзково зміцніть периметер та побудуйте проти-повітрÑні захиÑні Ñпоруди" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "ДоÑтупні нові технології." @@ -5245,6 +5255,8 @@ msgid "Good luck, Commander." msgstr "Ðехай щаÑтить, Командире." #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "ТРÐÐСПОРТÐРМІСІЯ: Північний Сектор" @@ -5253,6 +5265,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "ПоздоровлÑємо з уÑпішною евакуацією Бази Бета" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "ÐЕКСУС отримав доÑтуп до Ñдерної зброї Ñ– має намір знищити Проект." @@ -5261,10 +5274,12 @@ msgid "Take your forces to the Northern Sector" msgstr "Відправте Ñвої Ñили до Північного Сектору" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "При прибутті у гори, зачиÑÑ‚Ñ–Ñ‚ÑŒ Зону ВиÑадки. ПіÑÐ»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ збудуйте передову базу." #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "Там з вами звÑжетьÑÑ ÐšÐ¾Ð¼Ð°Ð½Ð´Ð° Гама." @@ -5273,6 +5288,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "ТРÐÐСПОРТÐРМІСІЯ: Збудуйте Передову Базу" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "Командире, уÑпіх Проекту залежить від ваÑ." @@ -5299,6 +5315,7 @@ msgstr "ПереÑилаємо вам координати Зони ВиÑадк #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚ÐµÐ¶ÐµÐ½Ð½Ñ ÐšÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ñ–Ð² Завершене." @@ -5738,7 +5755,7 @@ msgstr "ТранÑпорт" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "Інженер" @@ -5747,7 +5764,7 @@ msgstr "Інженер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "КоліÑна Гадюка з Кулеметом" @@ -5774,7 +5791,7 @@ msgstr "ÐапівгуÑенична Гадюка з Легкою Гармато #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "ÐапівгуÑенична Кобра з Важким Кулеметом" @@ -5805,7 +5822,7 @@ msgstr "ÐапівгуÑенична Гадюка з Ремонтою Башто #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "КоліÑна Гадюка зі Спареним Кулеметом" @@ -5822,7 +5839,7 @@ msgstr "ÐапівгуÑенична Гадюка з Важким Кулемет #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "ГуÑенична Гадюка з Важким Кулеметом" @@ -5846,7 +5863,7 @@ msgstr "КоліÑна Гадюка з Протибункерною ПУ" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "ГуÑенична Кобра з Середньою Гарматою" @@ -5858,7 +5875,7 @@ msgstr "ГуÑенична Кобра з Важкою Гарматою" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "Кобра Інженер" @@ -5868,7 +5885,7 @@ msgstr "ÐапівгуÑенична Кобра з СенÑором" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "ГуÑенична Кобра з Вогнеметом" @@ -5885,7 +5902,7 @@ msgstr "ÐапівгуÑенична Кобра з Командною Башто #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "ÐапівгуÑенична Кобра з ПУ 'СпиÑ'" @@ -5899,26 +5916,26 @@ msgid "Light Cannon Python Tracks" msgstr "ГуÑеничний Пітон з Легкою Гарматою" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "ГуÑеничний Пітон з Середньою Гарматою" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "ГуÑеничний Пітон з Важкою Гарматою" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "ГуÑеничний Пітон з Командною Баштою" @@ -5982,7 +5999,7 @@ msgstr "Цивільний" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "Кулеметник" @@ -5991,9 +6008,9 @@ msgstr "Кулеметник" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "Вогнемет" @@ -6003,8 +6020,8 @@ msgstr "Вогнемет" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "Кіборг з ПУ 'СпиÑ'" @@ -6013,7 +6030,7 @@ msgstr "Кіборг з ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "Кіборг з Важким ОзброєннÑм" @@ -6107,8 +6124,8 @@ msgstr "Z NULL BRAIN" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "Командна Башта" @@ -6212,14 +6229,14 @@ msgstr "ÐапівгуÑениці ІІІ" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "Руховий Механізм Кіборгів ІІ" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "Руховий Механізм Кіборгів ІІІ" @@ -6241,7 +6258,7 @@ msgstr "BaBaLegs" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "Руховий Механізм Кіборгів" @@ -6269,8 +6286,8 @@ msgstr "Z NULL SENSOR" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "СенÑорна Вежа" @@ -6278,15 +6295,15 @@ msgstr "СенÑорна Вежа" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "Зміцнена СенÑорна Вежа" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "СенÑорна Башта" @@ -6310,7 +6327,7 @@ msgstr "Башта з ПБ Радаром" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "Ударна Башта ВЗІП" @@ -6346,7 +6363,7 @@ msgstr "Фабрика" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "Модуль Фабрики" @@ -6358,7 +6375,7 @@ msgstr "Енергогенератор" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "Модуль Енергогенератора" @@ -6370,7 +6387,7 @@ msgstr "ДоÑлідницька СтанціÑ" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "ДоÑлідницький Модуль" @@ -6382,7 +6399,7 @@ msgstr "Зруйнувати Будівлю" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "Ремонтний Центр" @@ -6403,8 +6420,8 @@ msgstr "Залізобетонна Стіна" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "ВЗІП Фабрика" @@ -6415,30 +6432,30 @@ msgstr "Вогнева Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ð’Ð¾Ð³Ð½ÐµÐ¼ÐµÑ‚Ñƒ 'Пекло'" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð’Ð¾Ð³Ð½ÐµÐ¼ÐµÑ‚Ñƒ 'Пекло'" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐœÐ¾Ñ€Ñ‚Ð¸Ñ€Ð¸ 'ПеречницÑ'" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð“Ð°Ð±Ð¸Ñ†Ñ– 'Пекельний Шторм'" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "ПП Зенітна УÑтановка 'Торнадо'" @@ -6449,27 +6466,27 @@ msgstr "ПП Зенітна УÑтановка 'Циклон'" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "ПП Зенітна УÑтановка 'Ураган'" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "ПП Зенітна УÑтановка 'Вихор'" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "Ракетна Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ 'ХвилÑ'" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "Вартова Вежа з Штурмовою Гарматою" @@ -6480,29 +6497,29 @@ msgstr "Вартова Вежа з Штурмовим Кулеметом" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Штурмовим Кулеметом" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Штурмовою Гарматою" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "ПБ Вежа" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "ВЗІП ПБ Вежа" @@ -6512,168 +6529,168 @@ msgstr "ВЗІП Радарна Вежа" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Важким Кулеметом" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Легкою Гарматою" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Середньою Гарматою" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Важкою Гарматою" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Вогнеметом" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "Вартова Вежа з Кулеметом" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "Вартова Вежа зі Спареним Кулеметом" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "Вежа з Важким Кулеметом" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "Вартова Вежа з Вогнеметом" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "Вежа з ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "Вежа з Міні-ракетами" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "Кулеметний Бункер" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "Бункер зі Спареним Кулеметом" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "Бункер з Важким Кулеметом" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "Бункер з Легкою Гарматою" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "Вогнеметний Бункер" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "Бункер з ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "Танкові ПаÑтки" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "Зуби Дракона" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "ВЗІП ПоÑадковий Майданчик" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð“Ð°ÑƒÐ±Ð¸Ñ†Ñ–" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð›Ð°Ð·ÐµÑ€Ñƒ 'Спалах'" @@ -6684,139 +6701,139 @@ msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Лазером 'Спалах'" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Рейлганом" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "Вежа з ПУ 'Батіг'" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "Вежа з Голковою Гарматою" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸ ГауÑа" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "Легка Гармата" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð°" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "Важка Гармата" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "Гіпер-ШвидкіÑна Гармата" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "Штурмова Гармата" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "Вогнемет 'Пекло'" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "ГаубицÑ" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "Ð“Ð°ÑƒÐ±Ð¸Ñ†Ñ 'ЗемлетруÑ'" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð“Ð°ÑƒÐ±Ð¸Ñ†Ñ– 'ЗемлетруÑ'" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "Ð“Ð°ÑƒÐ±Ð¸Ñ†Ñ 'Пекельний Шторм'" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "ІмпульÑний Лазер" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "Кулемет" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "Спарений Кулемет" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "Важкий Кулемет" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "Штурмовий Кулемет" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "ПУ 'Батіг'" @@ -6827,80 +6844,80 @@ msgstr "ПУ 'Ðнгел'" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "ПУ ЗП 'ЗахиÑник' " #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "ПУ 'Ðрхангел'" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "ПУ ЗП 'МеÑник' " #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "ВЗІП пуÑкова уÑтановка типу Батіг" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "Мортира" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐœÐ¾Ñ€Ñ‚Ð¸Ñ€Ð¸" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "Бомбарда" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð‘Ð¾Ð¼Ð±Ð°Ñ€Ð´Ð¸" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "'ПеречницÑ'" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐœÐ¾Ñ€Ñ‚Ð¸Ñ€Ð¸ 'ПеречницÑ'" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "Голкова Гармата" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "Рейлган" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "Гармата ГауÑа" @@ -6910,74 +6927,74 @@ msgid "Mini-Rocket Artillery" msgstr "Міні-ракетна ÐртилеріÑ" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "Протибункерна ПУ" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "ПУ Міні-ракет" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "ПУ 'ХвилÑ' " #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "ВЗІП Протибункерна ПУ" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "ВЗІП уÑтановка Міні-ракет" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "ВЗІП ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "ВЗІП ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "Зенітна Башта 'Торнадо'" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "Зенітна Башта 'Циклон'" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "Зенітна Башта 'Вихор'" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "Зенітна Башта 'Ураган'" @@ -6986,62 +7003,62 @@ msgid "LasSat" msgstr "Супутниковий Лазер" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "ВЗІП Гармата" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "ВЗІП Гіпер-ШвидкіÑна Гармата" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "ВЗІП Штурмова Гармата" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "ВЗІП ІмпульÑний Лазер" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "ВЗІП Кулемет" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "ВЗІП Спарений Кулемет" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "ВЗІП Важкий Кулемет" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "ВЗІП Штурмовий Кулемет" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "ВЗІП Голкова Гармата" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "ВЗІП Рейлган" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "Башта з Бомбами з Детекторами Руху" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "Башта з Супербомбами з Детекторами Руху" @@ -7050,22 +7067,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "ВЗІП ВідÑік КаÑетних Бомб" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "ВЗІП ВідÑік Бронебійних Бомб" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "ВЗІП ВідÑік ФоÑфорних Бомб" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "ВЗІП ВідÑік Термітних Бомб" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Стіна Колективників" @@ -7082,307 +7099,307 @@ msgid "NEXUS CWall" msgstr "ССтіна ÐЕКСУСу" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "CAM1 ДОСЛІДЖЕÐÐЯ" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "ВДОСКОÐÐЛЕÐЕ ДОСЛІДЖЕÐÐЯ" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "CAM1 ТЕХÐІКÐ" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "CAM1 ОЗБРОЄÐÐЯ" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "CAM1 СИСТЕМИ" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "CAM1 ОБОРОÐÐІ СПОРУДИ" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "CAM1 БУДІВЛІ" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "CAM2 ДОСЛІДЖЕÐÐЯ" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "CAM2 ТЕХÐІКÐ" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "CAM2 КІБОРГИ" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "CAM2 ОЗБРОЄÐÐЯ" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "CAM2 СИСТЕМИ" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "CAM2 ОБОРОÐÐІ СПОРУДИ" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "CAM2 БУДІВЛІ" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "CAM3 ДОСЛІДЖЕÐÐЯ" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "Синаптичний Зв'Ñзок" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "Коди ЗапуÑку Ракет" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "Коди ЗапуÑку Ракет Другого РівнÑ" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "Коди ЗапуÑку Ракет Третього РівнÑ" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк2" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк3" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "ВиÑокоефективна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "ВиÑокоефективна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк2" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "ВиÑокоефективна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк3" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк2" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк3" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "Щільний Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "Щільний Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк2" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "Щільний Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк3" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "Ðадщільний Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "Ðадщільний Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк2" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "Ðадщільний Композитний Сплав Ð´Ð»Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк3" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "Кіборг з Протибункерною ПУ" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "Кіборг з Важким ОзброєннÑм" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "Кіборг Вогнеметник" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "Кіборг Кулеметник" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "Кіборг з ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "Кіборг з Штурмовим Кулеметом" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "Кіборг з Голковою Гарматою" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "Кіборг з ПУ 'Батіг'" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "Кіборг з Лазером 'Спалах'" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "Стрибун з Протибункерною ПУ" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "Стрибун з Важким ОзброєннÑм" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "Стрибун з ПУ 'СпиÑ'" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "Стрибун з Штурмовим Кулеметом" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "Стрибун з Голковою Гарматою" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "Стрибун з ПУ 'Батіг'" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "Стрибун з Лазером 'Спалах'" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "Механізм Стрибків Кіборгів" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "Залізобетон" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-Залізобетон" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "ВдоÑконалений Залізобетон" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "ВдоÑконалений Залізобетон Мк2" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "ВдоÑконалений Залізобетон Мк3" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "Ðадміцний Залізобетон" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "Ðадміцний Залізобетон Мк2" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "Ðадміцний Залізобетон Мк3" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "ПлаÑтичний Залізобетон" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "ПлаÑтичний Залізобетон Мк2" @@ -7397,15 +7414,15 @@ msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð“Ð¨ Гармати" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐŸÐ£ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð‘Ð¾Ð¼Ð±Ð°Ñ€Ð´Ð¸" @@ -7414,55 +7431,55 @@ msgid "Angel Missile Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐŸÐ£ 'Ðнгел'" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐŸÐ£ 'Ðрхангел'" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐœÐ¾Ñ€Ñ‚Ð¸Ñ€Ð¸" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐœÑ–Ð½Ñ–-ракет" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "Вогнева ÐŸÐ¾Ð¸Ñ†Ñ–Ñ Ð· ІмпульÑним Лазером" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð· Рейлганом" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð· Штурмовою Гарматою" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð· Штурмовим Кулеметом" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐŸÐ£ ЗП 'МеÑник' " #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐŸÐ£ ЗП 'ЗахиÑник' " @@ -7480,15 +7497,15 @@ msgstr "Вартова Вежа з ПУ Міні-ракет" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ПУ 'Батіг' " #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð· ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²' " @@ -7499,49 +7516,49 @@ msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð· ГШ Гарматою" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Гарматою ГауÑа" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "ПоÑÑ‚ ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐšÐ¾Ð¼Ð°Ð½Ð´Ð¸Ñ€Ð°Ð¼Ð¸" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "Ðвтоматизоване Виробництво Кіборгів Мк2" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "Ðвтоматизоване Виробництво Кіборгів Мк3" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "Роботизоване Виробництво Кіборгів Мк2" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "Роботизоване Виробництво Кіборгів Мк3" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "ВдоÑконалене Виробництво Кіборгів" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "ВдоÑконалене Виробництво Кіборгів Мк2" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "ВдоÑконалене Виробництво Кіборгів Мк3" @@ -7579,54 +7596,54 @@ msgid "Advanced Factory Production Mk3" msgstr "ВдоÑконалений ВипуÑк Фабрики Мк3" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "Ðрмовані Матеріали Будівель Бази Мк2" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "Ðрмовані Матеріали Будівель Бази Мк3" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "Зміцнені Матеріали Будівель Бази Мк2" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "Зміцнені Матеріали Будівель Бази Мк3" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "ВдоÑконалені Матеріали Будівель Бази Мк2" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "ВдоÑконалені Матеріали Будівель Бази Мк3" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "Газотурбінний Генератор" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "Генератор з Паровою Турбіною" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "Ремонтна МайÑтернÑ" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "Ðвтоматизована Ремонтна МайÑтернÑ" @@ -7663,172 +7680,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "ВдоÑконалена Робота Ремонтної МайÑтерні Мк3" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "Ðналіз Даних Синаптичного Зв'Ñзку" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "Ðналіз Даних Синаптичного Зв'Ñзку Мк2" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "Ðналіз Даних Синаптичного Зв'Ñзку Мк3" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "Спеціалізований Ðналіз Синаптичного Зв'Ñзку Мк2" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "Спеціалізований Ðналіз Синаптичного Зв'Ñзку Мк3" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "Ðеврально-Синаптичне ДоÑлідницьке Ядро Мк2" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "Ðеврально-Синаптичне ДоÑлідницьке Ядро Мк3" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "Ðвтоматизоване ÐŸÐµÑ€ÐµÐ¾Ð·Ð±Ñ€Ð¾Ñ”Ð½Ð½Ñ Ð’Ð—Ð†ÐŸÑ–Ð² Мк2" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "Ðвтоматизоване ÐŸÐµÑ€ÐµÐ¾Ð·Ð±Ñ€Ð¾Ñ”Ð½Ð½Ñ Ð’Ð—Ð†ÐŸÑ–Ð² Мк3" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "Роботизоване ÐŸÐµÑ€ÐµÐ¾Ð·Ð±Ñ€Ð¾Ñ”Ð½Ð½Ñ Ð’Ð—Ð†ÐŸÑ–Ð² Мк2" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "Роботизоване ÐŸÐµÑ€ÐµÐ¾Ð·Ð±Ñ€Ð¾Ñ”Ð½Ð½Ñ Ð’Ð—Ð†ÐŸÑ–Ð² Мк3" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "Роботизоване ÐŸÐµÑ€ÐµÐ¾Ð·Ð±Ñ€Ð¾Ñ”Ð½Ð½Ñ Ð’Ð—Ð†ÐŸÑ–Ð² Мк4" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "Роботизоване Виробництво ВЗІПів Мк2" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "Роботизоване Виробництво ВЗІПів Мк3" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "ВдоÑконалене Виробництво ВЗІПів Мк2" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "ВдоÑконалене Виробництво ВЗІПів Мк3" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "Саморемонт Кіборгів" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "Ðвтоматизований Ремонт Кіборгів Мк2" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "Ðвтоматизований Ремонт Кіборгів Мк3" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "Ðвторемонт ЗахиÑних Споруд" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "Ðвтоматизований Ремонт ЗахиÑних Споруд Мк2" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "Ðвтоматизований Ремонт ЗахиÑних Споруд Мк3" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "Ðвторемонт Будівель" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "Ðвтоматизований Ремонт Будівель Мк2" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "Ðвтоматизований Ремонт Будівель Мк3" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "Саморемонт Техніки" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "Ðвтоматизований Ремонт Техніки Мк2" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "Ðвтоматизований Ремонт Техніки Мк3" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð¡ÐµÐ½Ñору" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "Будівельний Підрозділ" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "Інженіринг" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "Покращений Інженіринг" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "ВдоÑконалений Інженіринг" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "Мобільна Ремонтна Башта" @@ -7838,84 +7855,84 @@ msgstr "Важка Мобільна Ремонтна Башта" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ ÐœÐ¾Ð±Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ремонту" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ ÐœÐ¾Ð±Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ремонту Мк2" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "ПБ Башта" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ ÐŸÐ‘ СенÑора" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ ÐŸÐ‘ СенÑора 2" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ ÐŸÐ‘ СенÑора 3" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "ВЗІП ПБ Башта" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð’Ð—Ð†ÐŸ ПБ" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð’Ð—Ð†ÐŸ ПБ 2" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð’Ð—Ð†ÐŸ ПБ 3" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð’Ð—Ð†ÐŸ Ударної Башти" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð’Ð—Ð†ÐŸ Ударної Башти Мк2" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð’Ð—Ð†ÐŸ Ударної Башти Мк3" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "ВЗІП Ударна Вежа" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "ВдоÑконалений Генератор Перешкод" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "Башта Генератора Перешкод Мк2" @@ -7936,292 +7953,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "МікроÑхеми Стійкі до ÐЕКСУСу Мк3" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "ÐÐ°Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¡ÐµÐ½Ñору" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "Термальна БронÑ" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐœÐº2" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐœÐº3" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "ВиÑокоефективна Термальна БронÑ" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "ВиÑокоефективна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐœÐº2" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "ВиÑокоефективна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐœÐº3" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "Легкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Гадюка" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "Легкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Леопард" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "Легкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Відплата" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "Легкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Жук" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "Середній ÐšÐ¾Ñ€Ð¿ÑƒÑ - Кобра" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "Середній ÐšÐ¾Ñ€Ð¿ÑƒÑ - Пантера" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "Середній ÐšÐ¾Ñ€Ð¿ÑƒÑ - Кара" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "Середній ÐšÐ¾Ñ€Ð¿ÑƒÑ - Скорпіон" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "Важкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Тигр" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "Важкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - ПомÑта" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "Важкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Пітон" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "Важкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Богомол" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "Інжекторний Двигун Мк2" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "Інжекторний Двигун Мк3" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "Двигун ОÑнащений Турбіною Мк2" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "Двигун ОÑнащений Турбіною Мк3" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "Газотурбінний Двигун Мк2" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "Газотурбінний Двигун Мк3" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "Композитний Сплав" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "Композитний Сплав Мк2" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "Композитний Сплав Мк3" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "Щільний Композитний Сплав" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "Щільний Композитний Сплав Мк2" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "Щільний Композитний Сплав Мк3" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "Ðадщільний Композитний Сплав" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "Ðадщільний Композитний Сплав Мк2" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "Ðадщільний Композитний Сплав Мк3" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "Ходова Ðмфібії" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "Ходова Ðмфібії ІІ" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "ÐапівгуÑенична Ходова" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "ÐапівгуÑенична Ходова ІІ" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "ГуÑенична Ходова" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "ГуÑенична Ходова ІІ" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "ВЗІП Ходова" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "ВЗІП Ходова ІІ" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "КоліÑна Ходова ІІ" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "ПП Термальний СенÑор" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "ПП Самонавідні ЗарÑди" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "ПП Комп'ютерний Цілевказувач" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "ПП Вибухові Зенітні ЗарÑди" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "ПП Вибухові Зенітні ЗарÑди Мк2" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "ПП Вибухові Зенітні ЗарÑди Мк3" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "ПП Вибухові Бронебійні ЗарÑди" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "ПП Вибухові Бронебійні ЗарÑди Мк2" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "ПП Вибухові Бронебійні ЗарÑди Мк3" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "ПП ЗарÑдний Механізм" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "ПП ЗарÑдний Механізм Мк2" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "ПП ЗарÑдний Механізм Мк3" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "ПП Ланцюговий ЗарÑдний ПриÑтрій" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "ПП Ланцюговий ЗарÑдний ПриÑтрій Мк2" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "ПП Ланцюговий ЗарÑдний ПриÑтрій Мк3" @@ -8230,17 +8247,17 @@ msgid "Cluster Bombs Bay" msgstr "ВідÑік КаÑетних Бомб" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "ВідÑік Бронебійних Бомб" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "ВідÑік ФоÑфорних Бомб" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "ВідÑік Термітних Бомб" @@ -8257,252 +8274,252 @@ msgid "Target Acquisition Bombsight" msgstr "Бомби з СамоÑтійним ÐаведеннÑм" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "Лазерний приціл Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "Лазерний Цілевказувач Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "Вибухові Протитанкові ЗарÑди" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "Вибухові Протитанкові ЗарÑди Мк2" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "Вибухові Протитанкові ЗарÑди Мк3" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "БСПРÐабої Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "БСПРÐабої Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸ Мк2" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "БСПРÐабої Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸ Мк3" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "ГШБСПРÐабої Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "ГШБСПРÐабої Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸ Мк2" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "ГШБСПРÐабої Ð´Ð»Ñ Ð“Ð°Ñ€Ð¼Ð°Ñ‚Ð¸ Мк3" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "Ðвтоматичний ЗарÑдник Гармати" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "Ðвтоматичний ЗарÑдник Гармати Мк2" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "Ðвтоматичний ЗарÑдник Гармати Мк3" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "Швидкий ЗарÑдник Гармати" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "Швидкий ЗарÑдник Гармати Мк2" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "Швидкий ЗарÑдник Гармати Мк3" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "ВдоÑконалене ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð›Ð°Ð·ÐµÑ€Ñƒ" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "ВдоÑконалене ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð›Ð°Ð·ÐµÑ€Ñƒ Мк2" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "ВдоÑконалене ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð›Ð°Ð·ÐµÑ€Ñƒ Мк3" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "ВиÑоко-Температурний Лазерний Промінь" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "ВиÑоко-Температурний Лазерний Промінь Мк2" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "ВиÑоко-Температурний Лазерний Промінь Мк3" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "Елемент Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð· Термальним Стержнем" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "Елемент Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð· Термальним Стержнем Мк2" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "Елемент Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð· Термальним Стержнем Мк3" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "ВиÑокотемпературний Гель Вогнемета" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "ВиÑокотемпературний Гель Вогнемета Мк2" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "ВиÑокотемпературний Гель Вогнемета Мк3" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "ÐадвиÑокотемпературний Гель Вогнемета" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "ÐадвиÑокотемпературний Гель Вогнемета Мк2" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "ÐадвиÑокотемпературний Гель Вогнемета Мк3" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "Ðвтоматичний ЗарÑдник Вогнемету" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "Ðвтоматичний ЗарÑдник Вогнемету Мк2" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "Ðвтоматичний ЗарÑдник Вогнемету Мк3" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "Важкий Вогнемет - 'Пекло'" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "Важка Ð“Ð°ÑƒÐ±Ð¸Ñ†Ñ - 'ЗемлетруÑ'" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "Роторна Ð“Ð°ÑƒÐ±Ð¸Ñ†Ñ - 'Пекельний Шторм'" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "Самонавідні ÐртилерійÑькі ЗарÑди" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "Самонавідні ÐртилерійÑькі ЗарÑди Мк2" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "ÐртилерійÑькі ЗарÑди, що Передбачають Рух Цілі" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "Вибухові ЗарÑди Гаубиці" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "Вибухові ЗарÑди Гаубиці Мк2" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "Вибухові ЗарÑди Гаубиці Мк3" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "Бронебійні ЗарÑди Гаубиці" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "Бронебійні ЗарÑди Гаубиці Мк2" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "Бронебійні ЗарÑди Гаубиці Мк3" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "Ðвтоматичний ЗарÑдник Гаубиці" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "Ðвтоматичний ЗарÑдник Гаубиці Мк2" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "Ðвтоматичний ЗарÑдник Гаубиці Мк3" @@ -8511,57 +8528,57 @@ msgid "Fast Loader" msgstr "Швидкий ЗарÑдний ПриÑтрій" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "Лазер - 'Спалах'" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "Зміцнені Кулі Кулемета" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "БПК Ðабої до Кулемета" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "БПК Ðабої до Кулемета Мк2" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "БПК Ðабої до Кулемета Мк3" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "Кулеметні Кулі з Вольфрамовим Ðаконечником" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "Кулеметні Кулі з Вольфрамовим Ðаконечником Мк2" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "Кулеметні Кулі з Вольфрамовим Ðаконечником Мк3" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "Кулеметні Кулі з Розщепленого Урану" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "Кулеметні Кулі з Розщепленого Урану Мк2" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð›Ð°Ð½Ñ†ÑŽÐ³Ð¾Ð²Ð¾Ð³Ð¾ Кулемету" @@ -8570,142 +8587,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "ШвидкоÑтрільний Ланцюговий Кулемет" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "ГіпершвидкіÑний Ланцюговий Кулемет" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "Ракети з ПередбачаннÑм Цілей" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "Ракети 'Знайти та Знищити'" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "ВдоÑконалена Ракетна Боєголовка" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "ВдоÑконалена Ракетна Боєголовка Мк2" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "ВдоÑконалена Ракетна Боєголовка Мк3" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "ВдоÑконалена СиÑтема ÐÐ°Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "ВдоÑконалена СиÑтема ÐÐ°Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð Ð°ÐºÐµÑ‚ Мк2" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "ВдоÑконалена СиÑтема ÐÐ°Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð Ð°ÐºÐµÑ‚ Мк3" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "Бронебійна Ракетна Боєголовка" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "Бронебійна Ракетна Боєголовка Мк2" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "Бронебійна Ракетна Боєголовка Мк3" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "ВдоÑконалена СиÑтема ЗарÑÐ´Ð¶Ð°Ð½Ð½Ñ Ð Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "Ðавідний Комп'ютер Мортири" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "ЗарÑди Мортири з Термальним Сканером" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "Самонавідні ЗарÑди Мортири" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "Вибухові ЗарÑди Мортири" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "Вибухові ЗарÑди Мортири Мк2" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "Вибухові ЗарÑди Мортири Мк3" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "Бронебійні ЗарÑди Мортири" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "Бронебійні ЗарÑди Мортири Мк2" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "Бронебійні ЗарÑди Мортири Мк3" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "ÐвтозÑÑ€Ñдник Мортири" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "ÐвтозÑÑ€Ñдник Мортири Мк2" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "ÐвтозÑÑ€Ñдник Мортири Мк3" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "ÐвтозÑÑ€Ñдник Мортири Мк3" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "Важка Мортира - Бомбарда" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "Роторна Мортира - 'ПеречницÑ'" @@ -8714,367 +8731,367 @@ msgid "Target Prediction Computer" msgstr "Комп'ютерний Цілевказувач" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "Зміцнений ЗарÑд Рейлгану" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "Зміцнений ЗарÑд Рейлгану Мк2" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "Зміцнений ЗарÑд Рейлгану Мк3" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "ШвидкоÑтрільніÑÑ‚ÑŒ Рейлгану" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "ШвидкоÑтрільніÑÑ‚ÑŒ Рейлгану Мк2" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "ШвидкоÑтрільніÑÑ‚ÑŒ Рейлгану Мк3" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "Стабілізовані Міні-Ракети" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "Стабілізовані Міні-Ракети Мк2" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "Вибухові Міні-Ракети" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "Вибухові Міні-Ракети Мк2" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "Вибухові Міні-Ракети Мк3" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "Бронебійні Міні-Ракети" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "Бронебійні Міні-Ракети Мк2" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "Бронебійні Міні-Ракети Мк3" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "ШвидкоÑтрільні Міні-Ракети" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "ШвидкоÑтрільні Міні-Ракети Мк2" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "ШвидкоÑтрільні Міні-Ракети Мк3" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "ÐадшвидкоÑтрільні Міні-Ракети" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "ÐадшвидкоÑтрільні Міні-Ракети Мк2" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "ÐадшвидкоÑтрільні Міні-Ракети Мк3" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "ВдоÑконалений Механізм ÐÐ°Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð Ð°ÐºÐµÑ‚" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "Лазерний Цілевказувач Ракет" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "Ракети з Термальним ÐаведеннÑм" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "ВдоÑконалена Протитанкова Ракетна Боєголовка" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "ВдоÑконалена Протитанкова Ракетна Боєголовка Мк2" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "ВдоÑконалена Протитанкова Ракетна Боєголовка Мк3" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "ВдоÑконалена Вибухова Ракетна Боєголовка" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "ВдоÑконалена Вибухова Ракетна Боєголовка Мк2" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "ВдоÑконалена Вибухова Ракетна Боєголовка Мк3" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "ÐвтозарÑдник Ракет" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "ÐвтозарÑдник Ракет Мк2" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "ÐвтозарÑдник Ракет Мк3" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "ПТ ПуÑкова УÑтановка 'СпиÑ'" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "Протибункерна ПуÑкова УÑтановка" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "ПуÑкова УÑтановка 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "Кулеметний Ðртефакт" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "Командний Центр 'Ðової Пардигми'" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Командний Центр 'Колективників'" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "Фабрика Звалищників" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "Кулеметна Вежа Звалищників" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "Горизонтальна Стіна Звалищників" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "Енергогенератор Звалищників" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "Ракетна Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð—Ð²Ð°Ð»Ð¸Ñ‰Ð½Ð¸ÐºÑ–Ð²" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "ПТ Ракетна Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð—Ð²Ð°Ð»Ð¸Ñ‰Ð½Ð¸ÐºÑ–Ð²" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "Бункер Звалищників" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "Кутова Стіна Звалищників" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "Вегнеметна Вежа Звалищників" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "Кінцева Вогнеметна Вежа Звалищників" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "ОглÑдова Вежа" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "Гарматна Вежа" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "Ðртефакт" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "Ðафтове Родовище" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "МіÑÑ‚" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "Зруйнована Фабрика" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "Склад" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "Хатка" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "Бочка з Ðафтою" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "Уламки" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "Зруйнований Танк" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "Зруйновнаий МіÑÑ‚" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "Зруйнований Фургон" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "Зруйнована Техніка" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "Зруйнований Танкер" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ñ–Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "ВдоÑконална ВійÑькова ЛабораторіÑ" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "Інженерна ЛабораторіÑ" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ñ–Ñ Ð Ð¾Ð±Ð¾Ñ‚Ñ–Ð²" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ñ–Ñ Ð›Ð°Ð·ÐµÑ€Ð½Ð¾Ñ— Оптики" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ñ–Ñ Ð•Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ñ–ÐºÐ¸" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "Хімічна ЛабораторіÑ" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "ВдоÑконалене ОзброєннÑ" @@ -9095,7 +9112,7 @@ msgid "MRL Emplacement" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐœÑ–Ð½Ñ–-Ракетної Ðртилерії" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð· Рейлганом" @@ -9104,49 +9121,49 @@ msgid "Angel Missile Emplacement" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐŸÑƒÑкової УÑтановки 'Ðнгел'" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐŸÑƒÑкової УÑтановки 'Ðрхангел'" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "ГуÑенична Кобра з Ремонтною Вежею" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "ПуÑкова УÑтановка 'Батіг'" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "Знищувач Бункерів" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "Кіборг з Лазером 'Спалах'" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "Кіборг з Голковою Гарматою" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "Збитий ТранÑпорт" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "ГуÑеничний Пітон з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" @@ -9155,37 +9172,37 @@ msgid "HPV Cannon Python Tracks" msgstr "ГуÑеничний Пітон з ГШ Гарматою" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "ÐапівгуÑеничний Пітон з ПП ЗУ 'Циклон'" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "ГуÑеничний Пітон з Штурмовим Кулеметом" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "Лазер 'Спалах'" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "ВЗІП 'Спалах'" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "Бункер з Роторним Кулеметом" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "Ракетна Шахта" @@ -9467,554 +9484,1511 @@ msgstr "Будь-лаÑка зачекайте поки фабрика виро msgid "Congratulations commander - you are ready for your first mission" msgstr "ПоздоровлÑємо, командире - тепер ви готові до Ñвоєї першої міÑÑ–Ñ—" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "Вхідне ПовідомленнÑ" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +#, fuzzy +msgid "Transmission from Beta Base" +msgstr "Вхідне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ далекої групи." + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "Цілі Проекту" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +#, fuzzy +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "Ми розшифрували вхідне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ðової Парадигми." + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "Ми щойно отримали наÑтупне повідомленнÑ." + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "Ми розшифрували вхідне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ðової Парадигми." + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "Їм необхідно завадити." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +#, fuzzy +msgid "Secure the LZ and establish a forward base." +msgstr "ЗачиÑÑ‚Ñ–Ñ‚ÑŒ Зону ВиÑадки, піÑÐ»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ збудуйте передову базу." + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "Рпотім знищити табір." + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +#, fuzzy +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "Технологію Ñинаптичного зв’Ñзку знайдено!" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +#, fuzzy +msgid "You must defend and hold it at all costs." +msgstr "Ви маєте захиÑтити Ñ– втримати Ñ—Ñ—." + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +#, fuzzy +msgid "Commander, a new launch has been detected." +msgstr "Командире, ми перемогли ÐЕКСУС" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +#, fuzzy +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "Ви повинні організувати безпечну зону Ð´Ð»Ñ ÐµÐ²Ð°ÐºÑƒÐ°Ñ†Ñ–Ñ— Бази Бета." + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +#, fuzzy +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "Ми перехопили Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· цього центру, Ñкі доÑÑгають зовнішньої орбіти." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +#, fuzzy +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "Зараз ÐЕКСУС відновив Ñвій зв'Ñзок із Ñупутниками NASDA." + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +#, fuzzy +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "Командире, у шахтах Ñ” ракети." + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +#, fuzzy +msgid "Cleanse and destroy!!" +msgstr "Знайти та знищити ...." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "Вхідне ПовідомленнÑ..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "ПоздоровлÑємо з уÑпішною евакуацією Бази Бета" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "ПочинаєтьÑÑ Ð‘Ñ€Ð¸Ñ„Ñ–Ð½Ð³:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "Показати наÑтупного Командира" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +#, fuzzy +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "Ми фікÑуємо ворожі Ñили на цих територіÑÑ…." + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "Ðехай щаÑтить, Командире." + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +#, fuzzy +msgid "Commander, welcome to NEXUS!" +msgstr "Командире, ми перемогли ÐЕКСУС" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "Командире, ми намагаємоÑÑŒ повернутиÑÑŒ на базу." + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "Ядерний Реактор" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "Ð’Ñюдихідна Кобра з Важкою Вемонтою Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "КоліÑна Гадюка з Важким Кулеметом" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "Ð’Ñюдихідний Богомол з ПУ 'Батіг'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "Ð’Ñюдихідний Богомол з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "ГуÑенична Кобра з Важким Кулеметом" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "Ð’Ñюдихідна Кобра з Важкою Гарматою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "ГуÑеничний Скорпіон з ПУ 'СпиÑ'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "ГуÑеничний Скорпіон з Важкою Гарматою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "ВЗІП Скорпіон з ПУ 'СпиÑ'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "ВЗІП Скорпіон з Протибункерною ПУ" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "ГуÑенична Гадюка з Командною Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "ГуÑенична Кобра з Командною Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "ГуÑеничний Скорпіон з Командною Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "ГуÑеничний Богомол з Командною Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "ГуÑенична Кобра з ПУ 'СпиÑ'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "ГуÑеничний Богомол з Важкою Гарматою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "ГуÑеничний Богомол з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "ГуÑеничний Богомол з ПУ 'Батіг'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "ГуÑеничний Скорпіон з Важким Кулеметом" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "ГуÑеничний Скорпіон з Ремонтною Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "Ð’Ñюдихіднаий Скорпіон з Важкою Ремонтною Баштою" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "Ð’Ñюдихідна Кобра Інженер" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "Ð’Ñюдихідний Скорпіон Інженер" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "Ð’Ñюдихідний Богомол Інженер" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "ГуÑенична Кобра з Протибункерною ПУ" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "ГуÑеничний Скорпіон з Протибункерною ПУ" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "ГуÑеничний Богомол з Протибункерною ПУ" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "ГуÑенична Гадюка з ПУ 'СпиÑ'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "ÐапівгуÑенична Кобра з Міні-Ракетами" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "ГуÑенична Кобра з Міні-Ракетами" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "ГуÑенична Кобра з Міні-Ракетною Ðртилерією" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "ÐапівгуÑенична Кобра з Вогнеметом 'Пекло'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "ÐÐ¼Ñ„Ñ–Ð±Ñ–Ñ ÐŸÑ–Ñ‚Ð¾Ð½ з ГШГ" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "ГуÑеничний Пітон з ПУ 'Батіг'" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "ГуÑеничний Пітон з Гарматою ГауÑа" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "ГуÑеничний Пітон з ІмпульÑним Лазером" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "ГуÑеничний Тигр з ІмпульÑним Лазером" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "ГуÑеничний Тигр з Важким Лазером" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "ГуÑенична Виверна з Гарматою ГауÑа" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "ГуÑенична Виверна з ІмпульÑним Лазером" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "ГуÑенична Виверна з Важким Лазером" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "ÐапівгуÑенична Гадюка з Кулеметом" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "ÐапівгуÑенична Гадюка з Вогнеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "Ð’Ñюдихідна Кобра з Важкою Ремонтною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "КоліÑна Гадюка з Важким Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "Ð’Ñюдихідний Богомол з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "ГуÑенична Кобра з Важким Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "Ð’Ñюдихідна Кобра з Важкою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "КоліÑна Кобра з Важким Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "Ð’Ñюдихідна Кобра з Важким Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "ГуÑенична Гадюка з Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "ГуÑенична Гадюка зі Спареним Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "Ð’Ñюдихідна Кобра з Середньою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "Ð’Ñюдихідний Скрпіон з Середньою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "ГуÑеничний Скрпіон з Середньою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "Ð’Ñюдихідний Пітон з Середньою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "Ð’Ñюдихідний Пітон з Важкою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "ГуÑеничний Богомол з Рейлганом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "ГуÑеничний Богомол з ІмпульÑним Лазером" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "ГуÑеничний Пітон з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "ГуÑеничний Богомол з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "ГуÑеничниа ПомÑта з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "ГуÑеничний Тигр з Важкою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "ГуÑеничний Тигр з Голковою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "ГуÑенична Кара з Голковою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "ГуÑенична ПомÑта з Голковою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "ГуÑенична ПомÑта з Голковою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 msgid "Vengeance Tracks Gauss Cannon" msgstr "ГуÑенична ПомÑта з Гарматою ГауÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "ГуÑенична ПомÑта з ГауÑовою ПУ 'Батіг'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "ВЗІП Жук з КаÑетними Бомбами" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "ВЗІП Жук з Протибункерною ПУ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "ВЗІП Скорпіон з ВідÑіком КаÑетних Бомб" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "ВЗІП Скорпіон з Протибункерно ПУ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "ВЗІП Жук з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1874 -#, fuzzy msgid "VTOL HPV Cannon Bug VTOL" msgstr "ВЗІП Жук з ГШ Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "ВЗІП Скорпіон з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1876 -#, fuzzy msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "ВЗІП Скорпіон з ГШ Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "ВЗІП Богомол з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1878 -#, fuzzy msgid "VTOL HPV Cannon Mantis VTOL" msgstr "ВЗІП Богомол з ГШ Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "ГуÑеничний Богомол з Ремонтою Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "ГуÑеничний Скорпіон з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "ГуÑеничний Скорпіон з Важкою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "ВЗІП Скорпіон з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "ВЗІП Скорпіон з Протибункерною ПУ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "ГуÑенична Гадюка з Командною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "ГуÑенична Кобра з Командною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "ГуÑеничний Скорпіон з Командною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "ГуÑеничний Богомол з Командною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "ГуÑенична Кобра з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "ГуÑеничний Богомол з Важкою Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "ГуÑеничний Богомол з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "ГуÑеничний Богомол з ПУ 'Батіг'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 msgid "Heavy Machinegun Scorpion Tracks" msgstr "ГуÑеничний Скорпіон з Важким Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "ГуÑеничний Скорпіон з Ремотною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "Ð’Ñюдихідний Скорпіон з Важкою Ремонтною Баштою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "Ð’Ñюдихідна Кобра Інженер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "Ð’Ñюдихідний Скорпіон Інженер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "Ð’Ñюдихідний Богомол Інженер" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "ГуÑенична Кобра з Протибункерною ПУ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "ГуÑеничний Скорпіон з Протибункерною ПУ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "ГуÑеничний Богомол з Протибункерною ПУ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "ГуÑенична Гадюка з ПУ 'СпиÑ'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "ÐапівгуÑенична Кобра з Міні-Ракетами" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "ГуÑенична Кобра з Міні-Ракетами" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1917 -#, fuzzy msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "ГуÑенична Кобра з Міні-Ракетною Ðртилерією" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "ÐапівгуÑенична Кобра з Вогнеметом 'Пекло'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1920 -#, fuzzy msgid "HPV Cannon Python Hover" -msgstr "Ð’Ñюдихідний Пітон з Важкою Гарматою" +msgstr "Ð’Ñюдихідний Пітон з ГШ Гарматою" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "ГуÑеничний Пітон з ПУ 'Батіг'" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "ГуÑеничний Пітон з Гарматою ГауÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "ГуÑеничний Пітон з ІмпульÑним Лазером" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "ГуÑеничний Тигр з ІмпульÑним Лазером" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "ГуÑеничний Тигр з Важким Лазером" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "ГуÑенична Виверна з Гарматою ГауÑа" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "ГуÑенична Виверна з ІмпульÑним Лазером" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "ГуÑенична Виверна з Важким Лазером" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "ÐапівгуÑенична Гадюка з Кулеметом" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "ÐапівгуÑенична Гадюка з Вогнеметом" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +msgid "Inferno Cobra Hover" +msgstr "Ð’Ñюдихідна Кобра з Вогнеметом 'Пекло'" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +msgid "Medium Cannon Cobra Half Track" +msgstr "ÐапівгуÑенична Кобра з Середньою Гарматою" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +msgid "Inferno Python Hover" +msgstr "Ð’Ñюдихідний Пітон з Вогнеметом 'Пекло'" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +msgid "Assault Gun Python Hover" +msgstr "Ð’Ñюдихідний Пітон з Штурмовим Кулеметом" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +msgid "Assault Gun Python Half Track" +msgstr "ÐапівгуÑеничний Пітон з Штурмовим Кулеметом" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "ÐапівгуÑеничний Скорпіон з Важким Кулеметом" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +msgid "Assault Cannon Mantis Hover" +msgstr "Ð’Ñюдихідний Богомол з Штурмовою Гарматою" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +msgid "Pulse Laser Leopard Hover" +msgstr "Ð’Ñюдихідний Леопард з ІмпульÑним Лазером" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +msgid "Pulse Laser Panther Hover" +msgstr "Ð’Ñюдихідна Пантера з ІмпульÑним Лазером" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "Ð’Ñюдихідний Тигр з Рейлганом" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +msgid "Pulse Laser Tiger Hover" +msgstr "Ð’Ñюдихідний Тигр з ІмпульÑним Лазером" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +msgid "Plasma Cannon Wyvern Tracks" +msgstr "ГуÑенична Виверна з Плазмовою Гарматою" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +msgid "Scourge Missile Wyvern Tracks" +msgstr "ГУÑенична Виверна з ПУ 'Батіг'" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "Ð’Ñюдихідна з Кара Лазером 'Спалах'" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +msgid "Mini-Rocket Viper Half Track" +msgstr "ÐапівгуÑенична Гадюка з Міні-Ракетами" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +msgid "Mini-Rocket Array Viper Half Track" +msgstr "ÐапівгуÑенична Гадюка з Міні-Ракетною Ðртилерією" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "ВЗІП Богомол з ФоÑфорними Бомбами" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "ВЗІП Богомол з Бронебійними Бомбами" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "ВЗІП Кара з Бронебійними Бомбами" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +msgid "Scourge Retaliation VTOL" +msgstr "ВЗІП Відплата з ПУ 'Батіг'" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "ШвидкіÑÑ‚ÑŒ будівництва +10%" @@ -10628,7 +11602,7 @@ msgid "Upgraded battlefield computer system" msgstr "ВдоÑконалена польова комп'ютерна ÑиÑтема" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "ТранÑпорт Кіборгів" @@ -10657,7 +11631,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "ÐапівгуÑенична Кобра з Міні-Ракетною Ðртилерією" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "Детектор Радарів" @@ -10670,633 +11644,644 @@ msgid "Nexus Link" msgstr "Зв'Ñзок з ÐЕКСУСом" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Башта Зв'Ñзку з ÐЕКСУСом" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "Залізобетонна Стіна" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 msgid "Inferno Bunker" msgstr "Бункер з Вогнеметом 'Пекло'" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "ПП Зенітна УÑтановка 'Торнадо'" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "ПП Зенітна УÑтановка 'Циклон'" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ІмпульÑним Лазером" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 msgid "Pulse Laser Tower" msgstr "Вежа з ІмпульÑним Лазером" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "Ракетна Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ 'Серафим'" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 msgid "Mini-Rocket Array" msgstr "ÐÑ€Ñ‚Ð¸Ð»ÐµÑ€Ñ–Ñ ÐœÑ–Ð½Ñ–-Ракет" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "Командний Пункт Лезорного Супутника" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "ВЗІП ВідÑік КаÑетних Бомб" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Кутова Стіна 'Колективників'" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "Стіна ÐЕКСУСу" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "Кутова Стіна ÐЕКСУСу" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "ПлаÑтичний Бетон Мк3" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "ПлаÑтичний Бетон Ðрмований Сталлю" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "ПлаÑтичний Бетон Ðрмований Сталлю Мк2" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "ПлаÑтичний Бетон Ðрмований Сталлю Мк3" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +msgid "Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð“Ñ–Ð¿ÐµÑ€-ШвидкіÑної Гармати" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "Ракетна Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ 'Серафим'" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "Вогнеметна Вежа" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· Гіпер-ШвидкіÑною Гарматою" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "Ðвтоматизоване Виробництво" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "Ðвтоматизоване Виробництво Мк2" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 msgid "Automated Manufacturing Mk3" msgstr "Ðвтоматизоване Виробництво Мк3" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 msgid "Robotic Manufacturing" msgstr "Роботизоване Виробництво" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 msgid "Robotic Manufacturing Mk2" msgstr "Роботизоване Виробництво Мк2" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 msgid "Robotic Manufacturing Mk3" msgstr "Роботизоване Виробництво Мк3" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 msgid "Advanced Manufacturing" msgstr "ВдоÑконалене Виробництво" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 msgid "Advanced Manufacturing Mk2" msgstr "ВдоÑконалене Виробництво Мк2" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 msgid "Self-Replicating Manufacturing" msgstr "Само-відновне Виробництво" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "ВдоÑконалене Виробництво Мк3" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "Ðвтоматизована Ремонтна МайÑÑ‚ÐµÑ€Ð½Ñ ÐœÐº2" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "Ðвтоматизована Ремонтна МайÑÑ‚ÐµÑ€Ð½Ñ ÐœÐº3" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 msgid "Robotic Repair Facility" msgstr "Роботизована Ремонтна МайÑтернÑ" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "Роботизована Ремонтна МайÑÑ‚ÐµÑ€Ð½Ñ ÐœÐº2" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 msgid "Advanced Repair Facility" msgstr "ВдоÑконалена Ремонтна МайÑтернÑ" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "Роботизована Ремонтна МайÑÑ‚ÐµÑ€Ð½Ñ ÐœÐº3" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "ВдоÑконалена Ремонтна МайÑÑ‚ÐµÑ€Ð½Ñ ÐœÐº2" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "ВдоÑконалена Ремонтна МайÑÑ‚ÐµÑ€Ð½Ñ ÐœÐº3" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "Само-ремонт" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "Важка Ремонтна Башта" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "ВіруÑна Програма ÐЕКСУС" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "МікроÑхеми Стійкі до ÐЕКСУСу" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "МікроÑхеми Стійкі до ÐЕКСУСу Мк2" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "МікроÑхеми Стійкі до ÐЕКСУСу Мк3" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 msgid "Cluster Bomb Bay" msgstr "ВідÑік КаÑетних Бомб" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "Вибухові ЗарÑди Бомб" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "Покращена Бомбова Боєголовка" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "ВдоÑконалена Бомбова Боєголовка" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "Швидкий ЗарÑдник Гаубиці" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "ШвидкоÑтрільний Ланцюговий Кулемет" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "Комп'ютерний Цілевказувач Рейлгану" -#: data/mp/messages/strings/names.txt:1174 -#, fuzzy +#: data/mp/messages/strings/names.txt:1177 msgid "HESH Mini-Rockets" msgstr "Вибухові Міні-Ракети" -#: data/mp/messages/strings/names.txt:1175 -#, fuzzy +#: data/mp/messages/strings/names.txt:1178 msgid "HESH Mini-Rockets Mk2" msgstr "Вибухові Міні-Ракети Мк2" -#: data/mp/messages/strings/names.txt:1176 -#, fuzzy +#: data/mp/messages/strings/names.txt:1179 msgid "HESH Mini-Rockets Mk3" msgstr "Вибухові Міні-Ракети Мк3" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "Вежа з Штурмовим Кулеметом" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "ГуÑенична Кобра з Ремонтною Баштою" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 msgid "Hyper Velocity Cannon Python Tracks" msgstr "ГуÑеничний Пітон з ГШ Гарматою" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "Ð’Ñюдихідна Кобра з Протибункерною ПУ" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð¡ÐµÐ½Ñору Мк2" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "ÐŸÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð¡ÐµÐ½Ñору Мк3" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "Генератор з Паровою Турбіною Мк2" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "Газотурбінний Генератор Мк2" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "Газотурбінний Генератор Мк3" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "Генератор з Паровою Турбіною Мк3" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "Кіборг з Термітним Вогнеметом" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "Термітний Вогнеметник" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "Кіборг Гренадир" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "Гренадир" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "Польовий Інженер" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "Кіборг Механік" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "ФугаÑна ГаубицÑ" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð¤ÑƒÐ³Ð°Ñної Гаубиці" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "Плазмовий Вогнемет" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "Бункер з Плазмовим Вогнеметом" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "ФугаÑна Мортира" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð¤ÑƒÐ³Ð°Ñної Мортири" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "Ðадщільна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð²" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "Ðадщільна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк2" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "Ðадщільна Термальна Ð‘Ñ€Ð¾Ð½Ñ ÐšÑ–Ð±Ð¾Ñ€Ð³Ñ–Ð² Мк3" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "Ðадщільна Термальна Ð‘Ñ€Ð¾Ð½Ñ Ð¢ÐµÑ…Ð½Ñ–ÐºÐ¸" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "Ðадщільна Термальна Ð‘Ñ€Ð¾Ð½Ñ Ð¢ÐµÑ…Ð½Ñ–ÐºÐ¸ Мк2" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "Ðадщільна Термальна Ð‘Ñ€Ð¾Ð½Ñ Ð¢ÐµÑ…Ð½Ñ–ÐºÐ¸ Мк3" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "Супер Кіборг з Важким ОзброєннÑм" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "Супер Кіборг з Ðвтоматичною Гарматою" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "Супер Кіборг з ГШ Гарматою" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "Супур Кіборг з ПУ 'Ð’Ð±Ð¸Ð²Ñ†Ñ Ð¢Ð°Ð½ÐºÑ–Ð²'" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "Важкий Лазер" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "ВЗІП Важкий Лазер" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð’Ð°Ð¶ÐºÐ¾Ð³Ð¾ Лазеру" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "Спарена Штурмова Гармата" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "Бункер зі Спареною Штурмовою Гарматою" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "Центр Супутникового Зв'Ñзку" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "СенÑор Широкого Спектру" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "Вежа з СенÑором Широкого Спектру" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "Плазмова Гармата" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐŸÐ»Ð°Ð·Ð¼Ð¾Ð²Ð¾Ñ— Гармати" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "Супер Кіборг з ІмпульÑним Лазером" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "Супер Кіборг з Рейлганом" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "Супер Кіборг з ПУ 'Батіг'" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Вежа зі Зв'Ñзком з ÐЕКСУСом" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "ЕМІ Гармата" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "Вежа з ЕМІ Гарматою" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "Ð¤Ð¾Ñ€Ñ‚ÐµÑ†Ñ Ð· Гарматою Ðнтиматерії" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "Гармата Ðнтиматерії" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "Ð¤Ð¾Ñ€Ñ‚ÐµÑ†Ñ Ð· Гарматою" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "Важкий Ракетний БаÑтіон" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" -msgstr "Ð¤Ð¾Ñ€Ñ‚ÐµÑ†Ñ Ð· Ракетною ПуÑковою УÑтановкою" +msgstr "Ð¤Ð¾Ñ€Ñ‚ÐµÑ†Ñ Ð· Самонавідною ПуÑковою УÑтановкою" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 msgid "Heavy Body - Wyvern" msgstr "Важкий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Виверна" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "Виверна" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "Мульти-Баштовий ÐšÐ¾Ñ€Ð¿ÑƒÑ - Дракон" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "Дракон" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "ÐадвиÑоко-температурний Плазмовий Гель" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "ÐадвиÑоко-температурний Плазмовий Гель Мк2" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "ÐадвиÑоко-температурний Плазмовий Гель Мк3" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "ЕМІ Мортира" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ Ð•ÐœÐ† Мортири" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "ПП Лазер 'Шторм'" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "Вогнева ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÐŸÐŸ Лазеру 'Шторм'" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ПУ ЗП 'ЗахиÑник'" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ПП Зенітним Кулеметом 'Вихор'" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ПП Зенітною УÑтановкою 'Циклон'" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð· ПУ ЗП 'МеÑник'" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "Спарений Штурмовий Кулемет" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "Ð£ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ñ– Спареним Штурмовим Кулеметом" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "ВЗІП ВідÑік Плазмових Бомб" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "Плазмова Бомба" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "ВЗІП ПУ ЕМІ Ракет" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "ПУ ЕМІ Ракет" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 msgid "Command Turret II" msgstr "Командна Башта ІІ" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 msgid "Command Turret III" msgstr "Командна Башта ІІІ" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 msgid "Command Turret IV" msgstr "Командна Башта IV" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "ВЗІП Жук з ГШ Гарматою" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "ВЗІП Скорпіон з ГШ Гарматою" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "ВЗІП Богомол з ГШ Гарматою" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 msgid "Mini-Rocket Array Cobra Tracks" msgstr "ГуÑенична Кобра з Міні-Ракетною Ðртилерією" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 msgid "Hyper Velocity Cannon Python Hover" msgstr "ГуÑеничний Пітон з ГШ Гарматою" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "ВЗІП Кара з Бронебійними Бомбами" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11426,31 +12411,40 @@ msgstr "Традиційна КитайÑька" msgid "Latin" msgstr "Латинь" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "Визначте Пароль" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "Ðеможливо отримати ім'Ñ Ð¾Ñновного Ñервера (%s)!" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "Ðеможливо зв'ÑзатиÑÑŒ з Ñервером лоббі! Чи відкритий TCP порт %u Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ трафіку?" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " -msgstr ", моди: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "Зберегти Гру" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" +msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11600,15 +12594,15 @@ msgstr "хоÑÑ‚" msgid "go directly to host screen" msgstr "перейти безпоÑередньо до екрану хоÑту" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "Гравець" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "Ðовий Підрозділ" @@ -11647,18 +12641,18 @@ msgstr "ПотужніÑÑ‚ÑŒ Двигуна" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "Вага" @@ -11672,198 +12666,198 @@ msgstr "Загальна Ціна Енергії" msgid "Total Body Points" msgstr "Ð—Ð°Ð¿Ð°Ñ ÐœÑ–Ñ†Ð½Ð¾ÑÑ‚Ñ– КорпуÑу" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "Ціна Енергії" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "ТранÑпорт" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "Гідра " -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "Ð Ð°Ð´Ñ–ÑƒÑ Ð”Ñ–Ñ— СенÑора" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "ПотужніÑÑ‚ÑŒ СенÑора" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" -msgstr "ПотужніÑÑ‚ÑŒ Електромгнітних Хвиль" +msgstr "ПотужніÑÑ‚ÑŒ ЕМ Хвиль" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "ЕфективніÑÑ‚ÑŒ Інженерного ОбладнаннÑ" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "Ð Ð°Ð´Ñ–ÑƒÑ Ð”Ñ–Ñ—" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "Сила" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "ШвидкоÑтрільніÑÑ‚ÑŒ" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "ШвидкіÑÑ‚ÑŒ у Повітрі" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "ШвидкіÑÑ‚ÑŒ на Дорозі" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "ШвидкіÑÑ‚ÑŒ по Бездоріжжю" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "ШвидкіÑÑ‚ÑŒ на Воді" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "ОзброєннÑ" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "СиÑтеми" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player left" msgstr "Гравець вийшов" -#: src/display3d.c:562 +#: src/display3d.c:566 msgid "Player dropped" -msgstr "Гравець " +msgstr "Гравець здавÑÑ" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "Будівництво Ðеможливе. Через пожежу на Ðафтовому Родовищі" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - Пошкоджень %d%% - Вбито %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - Союзник - Пошкоджень %d%% - Вбито %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "Інженеру наказано побудувати Бурову Вежу" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "Інженеру наказано побудувати Бурову Вежу" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "Інженеру наказано побудувати Бурову Вежу" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "Втрачено Бойову Одиницю!" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "Будівлю Відновлено" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "Групу %u обрано - %u Підрозділ" msgstr[1] "Групу %u обрано - %u Підрозділів" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u підрозділ призначено у Групу %u" msgstr[1] "%u підрозділів призначено у Групу %u" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "Центр екрану на Групі %u - %u Підрозділ" msgstr[1] "Центр екрану на Групі %u - %u Підрозділів" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð· Групою %u - %u Підрозділ" msgstr[1] "Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð· Групою %u - %u Підрозділів" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "Ðовобранець" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "Зелений" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "Рекрут" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "ДоÑвідчений" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "ПрофеÑіонал" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "Ветеран" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "Елітний" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "ОÑобливий" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "Герой" #: src/frontend.c:252 msgid "Single Player" -msgstr "Режим Одного ГравцÑ" +msgstr "Один Гравець" #: src/frontend.c:253 msgid "Multi Player" -msgstr "Режим Кількох Гравців" +msgstr "Кілька Гравців" #: src/frontend.c:254 #: src/frontend.c:312 @@ -11899,11 +12893,11 @@ msgstr "ÐÐВЧÐÐÐЯ" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "ПовернутиÑÑŒ" @@ -11983,19 +12977,19 @@ msgid "Video Playback" msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð’Ñ–Ð´ÐµÐ¾" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "1X" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "2X" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "Повний Екран" @@ -12004,43 +12998,42 @@ msgid "Screen Shake" msgstr "ТрÑÑÑ–Ð½Ð½Ñ Ð•ÐºÑ€Ð°Ð½Ñƒ" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "Ввімкнено" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "Вимкнено" @@ -12050,148 +13043,147 @@ msgid "Fog" msgstr "Туман" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "Імла" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "Туман Війни" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "Субтитри" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "Тіні" -#: src/frontend.c:729 +#: src/frontend.c:721 msgid "GRAPHICS OPTIONS" msgstr "ОПЦІЇ ГРÐФІКИ" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "ГучніÑÑ‚ÑŒ Звуку" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "ГучніÑÑ‚ÑŒ Ефектів" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "ГучніÑÑ‚ÑŒ Музики" -#: src/frontend.c:875 +#: src/frontend.c:867 msgid "AUDIO OPTIONS" msgstr "ОПЦІЇ ЗВУКУ" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "Режим Графіки*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "Віконний Режим" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "Роздільна ЗдатніÑÑ‚ÑŒ*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "Розмір ТекÑтур" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "Вертикальна СинхронізаціÑ*" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* Зміни вÑупають в Ñилу піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸" -#: src/frontend.c:976 +#: src/frontend.c:968 msgid "VIDEO OPTIONS" msgstr "ОПЦІЇ ВІДЕО" -#: src/frontend.c:1134 +#: src/frontend.c:1126 msgid "Reverse Rotation" msgstr "Зворотнє ОбертаннÑ" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "ЗафікÑувати КурÑор" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "Кольорові КурÑори*" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "ПомінÑти ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐšÐ½Ð¾Ð¿Ð¾Ðº Миші" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "* Може негативно вплинути на роботу" -#: src/frontend.c:1183 +#: src/frontend.c:1175 msgid "MOUSE OPTIONS" msgstr "ОПЦІЇ МИШКИ" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "ВажкіÑÑ‚ÑŒ" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "Легко" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "Ðормально" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "Важко" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "ШвидкіÑÑ‚ÑŒ Прокрутки" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "Мова" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "Колір Підрозділів" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "ІГРОВІ ОПЦІЇ" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " -msgstr "Ðктивувати моди:" +msgid "Mod: " +msgstr ", моди: " #: src/hci.c:1363 msgid "MAP SAVED!" @@ -12222,105 +13214,105 @@ msgstr "Гравець %u за допомогою шахрайÑтва (меню msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "Гравець %u за допомогою шахрайÑтва (меню налагодженнÑ) здобув(ла) нову одиницю : %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "Командири (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "Показати Розвіддані (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "Виробництво (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "КонÑÑ‚Ñ€ÑƒÑŽÐ²Ð°Ð½Ð½Ñ (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "Будівництво (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "ЕнергіÑ" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "Клітинка" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "РозміÑтити клітинки на мапі" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "Підрозділ" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "РозміÑтити Підрозділ на мапі" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "Struct" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "РозміÑтити Будівлі на мапі" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "Feat" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "РозміÑтити ОÑобливоÑÑ‚Ñ– на мапі" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "ПоÑтавити гру на паузу, або знÑти з паузи" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "ВирівнÑти виÑоту уÑÑ–Ñ… об'єктів на мапі" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "Вийти" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "Покинути Гру" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "Індикатор ПрогреÑу" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "Точка ДоÑтавки Фабрики" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "Зациклити Виробництво" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "Прогорнути Вкладку ліворуч" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "Прогорнути Вкладку праворуч" @@ -12365,6 +13357,17 @@ msgstr "Гра не може продовжуватиÑÑŒ без хоÑту." msgid "--> QUIT <--" msgstr "--> ВИХІД <--" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" +"Ðеобхідний мод не був завантажений: %s\n" +"\n" +"Warzone Ñпробує запуÑтити гру без нього." + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12380,7 +13383,7 @@ msgid "Power Accrued" msgstr "Ðакопичена ЕнергіÑ" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "ПÐУЗÐ" @@ -12507,287 +13510,287 @@ msgstr "Призначити Виробництво на ВЗІП Фабриці msgid "Circle" msgstr "Коло" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "Ðа жаль, це шахрайÑтво не діє у мультиплеєрі." -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "Обережно! Це шахрайÑтво неÑтабільне. Ми рекомендуємо його не заÑтоÑовувати." -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "Давай глÑнем що ти бачиш!" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "Добре, показ радіуÑу ÑенÑору на зброї вимкнено!" -#: src/keybind.c:357 -#, fuzzy, c-format +#: src/keybind.c:358 +#, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." -msgstr "Гравець %u за допомогою шахрайÑтва (меню налагодженнÑ) здобув(ла) нову одиницю : %s." +msgstr "Гравець %u за допомогою шахрайÑтва здобув(ла) нову одиницю : %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "(Гравець %u) заÑтоÑовує шахрайÑтво :%s" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "Твердий Ñк цвÑÑ…!!!" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "Живи проÑтіше!" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 та ще й великих!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "ОÑÑŒ тобі Ñ‚Ð²Ð¾Ñ Ð´Ð¾Ñ€Ð¾Ð³Ð¾Ñ†Ñ–Ð½Ð½Ð° енергіÑ" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ норми!" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "Спробуємо взÑти хитріÑÑ‚ÑŽ!" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "Два краще, ніж один!" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "Показ FPS задіÑно." -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "Показ FPS вимкнено." -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS-ліміт: %d; PIEs %d; polys %d; Terr. polys %d; States %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "(Гравець %u) заÑтоÑував шахрайÑтво :КількіÑÑ‚ÑŒ Одиниць: %d КількіÑÑ‚ÑŒ Будівель: %d КількіÑÑ‚ÑŒ ВлаÑтивоÑтей: %d" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "Вимкнено необмежену енергію" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "ЗадіÑно необмежену енергію" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "Стало доÑтупне вÑе" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "Туман ввімкнено" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "Туман вимкнено" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "Обережно! Це шахрайÑтво може викликати Ñерйозні проблеми пізніше! [%s]" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "МіÑÑ–Ñ Ð—Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑÑ." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "ШÐХРÐЙСТВРЗÐРÐЗ ЗÐДІЯÐІ!" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "ШÐХРÐЙСТВРЗÐРÐЗ ВИМКÐЕÐІ!" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "Режим Бога ЗадіÑно" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "Режим Бога Вимкнено" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "Вид на Північ" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "ЗафікÑувати курÑор %s" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "За Ð²Ð°Ñ Ð’Ð¡Ð• вже винайшли!" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "(Гарвець %u) викориÑтовує шахрайÑтво :%s %s" -#: src/keybind.c:1482 +#: src/keybind.c:1478 msgid "Researched" msgstr "ДоÑліджено" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "Стрічки енергії показуютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ при виділенні" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "Завжди показуютьÑÑ Ñтрічки енергії підрозділів" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "Завжди показуютьÑÑ Ñтрічки енергії підрозділів та будівель" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "Демо режим вимкнено - ПовертаємоÑÑŒ до нормального режиму гри" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "Меню Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¾" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ жодних добувачів реÑурÑів!" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "Ох, погода на дворі жахлива... СÐІГ" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "Дощику, дощику... зварю тобі борщику... ДОЩ" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "Прогноз погоди : ЯÑне небо у вÑÑ–Ñ… районах... ЖОДÐИХ ЗМІРПОГОДИ" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "Обережно! Це може призвеÑти до непередбачуваних наÑлідків при неправильному заÑтоÑуванні на міÑÑ–ÑÑ…." -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "Ð’ÑÑ–Ñ… ворогів знищено за допомогою шахрайÑтва!" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "Обрані підрозділи та будівлі буде знищено!" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "Вид відцентровано на Штабі Ð³Ñ€Ð°Ð²Ñ†Ñ Ñƒ північному напрÑмку" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Штаб!" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð¶ÐºÐ¾ÑÑ‚Ñ– формації було видалено з гри через баги." -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "ÐапрÑмок вертикального обертаннÑ: Ðормальний" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "ÐапрÑмок вертикального обертаннÑ: Обернений" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "ТрÑÑÑ–Ð½Ð½Ñ ÐµÐºÑ€Ð°Ð½Ñƒ при знищенні підрозділів: Вимкнене" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "ТрÑÑÑ–Ð½Ð½Ñ ÐµÐºÑ€Ð°Ð½Ñƒ при знищенні підрозділів: ЗадіÑне" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "Ðа жаль, швидкіÑÑ‚ÑŒ гри не можу бути змінена у мультиплеєрі." -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "ШвидкіÑÑ‚ÑŒ Гри Ðормалізовано" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "ШвидкіÑÑ‚ÑŒ Гри Підвищено до %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "ШвидкіÑÑ‚ÑŒ Гри Знижено до %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "Меню будівництва буде повторно відкриватиÑÑŒ" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "Меню будівництва не буде повторно відкриватиÑÑŒ" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "Радар показує кольори Ñвій-чужий" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "Радар показує кольори гравців" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "Радар показує лише об’єкти" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "Радар відображає міÑцевіÑÑ‚ÑŒ та рельєф" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "Радар показує міÑцевіÑÑ‚ÑŒ" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "Радар показує розвідану міÑцевіÑÑ‚ÑŒ" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "Радар показує рельєф" @@ -13206,8 +14209,8 @@ msgstr "Продовжити Гру" msgid "GAME SAVED :" msgstr "ГРУ ЗБЕРЕЖЕÐО:" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "Ви знайшли %u енергії в бочці нафти." @@ -13255,7 +14258,7 @@ msgstr "%s Розірвав Союз З %s" #: src/multigifts.c:416 #, c-format msgid "%s Forms An Alliance With %s" -msgstr "%s Зформував Союз З %s" +msgstr "%s Сформував Союз З %s" #: src/multigifts.c:780 #, c-format @@ -13509,21 +14512,21 @@ msgstr "ХоÑÑ‚ викинув %s з гри!" msgid "Host is Starting Game" msgstr "ХоÑÑ‚ Починає Гру" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "Гравці" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " -msgstr "" +msgstr "ВідправлÑєтьÑÑ ÐšÐ°Ñ€Ñ‚Ð°: %d%% " -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "Мапа: %d%% завантажена" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "ХОСТ" @@ -13532,27 +14535,27 @@ msgstr "ХОСТ" msgid "Players Still Joining" msgstr "Гравці Продовжують ПриєднуватиÑÑŒ" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s покинув Гру" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." -msgstr "" +msgstr "Передача файлу була перервана Ð´Ð»Ñ %d." -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "%s (%u) має неÑуміÑний мод, отже був викинутий." -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s ПриєднавÑÑ Ð´Ð¾ Гри" -#: src/multijoin.c:397 +#: src/multijoin.c:398 msgid "System message:" msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑиÑтеми:" @@ -13562,7 +14565,7 @@ msgstr "ПрийнÑти Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° ЗамовченнÑм та По #: src/multilimit.c:316 msgid "Limits reset to default values" -msgstr "" +msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°ÑŽÑ‚ÑŒÑÑ Ð´Ð¾ початкових значень" #: src/multimenu.c:609 msgid "Technology level 1" @@ -13638,47 +14641,47 @@ msgstr "Ðадати Енергію Гравцю" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "Викидуємо Ð³Ñ€Ð°Ð²Ñ†Ñ %s, тому що він намагавÑÑ Ð¾Ð±Ñ–Ð¹Ñ‚Ð¸ перевірку ціліÑноÑÑ‚Ñ– даних!" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 msgid "(allies" msgstr "(Ñоюзники" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "(приватно до" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "[невірний]" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "Зелений" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "Помаранчовий" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "Сірий" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "Чорний" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "Червоний" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "Синій" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "Рожевий" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "Блакитний" @@ -13821,12 +14824,12 @@ msgstr "ВИ ПЕРЕМОГЛИ!" msgid "YOU WERE DEFEATED!" msgstr "ВИ ЗÐЗÐÐЛИ ПОРÐЗКИ!" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "Отримано Сигнал від %s!" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "Сигнал %d" @@ -13855,63 +14858,63 @@ msgstr "Ðе можу знайти жодного СенÑорного Підр msgid "Unable to locate any Commanders!" msgstr "Ðе можу знайти жодного Командира!" -#: src/structure.c:2838 +#: src/structure.c:2837 #, fuzzy msgid "Command Control Limit Reached - Production Halted" msgstr "ДоÑÑгнуто Межі Контролю - Виробництво Призупинене" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - %u Підрозділ закріплено" msgstr[1] "%s - %u Підрозділи закріплено" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - Пошкоджено %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - Під'єднано %u з %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - Електронних Ушкоджень" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "Електронна Винагорода - Звіт про Зону ВидимоÑÑ‚Ñ–" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "Винагорода Фабрики - Ходова" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "Винагорода Фабрики - КорпуÑ" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "Винагорода Фабрики - ОзброєннÑ" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "Винагорода Фабрики - Ðічого" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "Винагорода Ремонтної МайÑтерні - Ремонт" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "Винагорода Ремонтної МайÑтерні - Ðічого" @@ -13920,7 +14923,7 @@ msgstr "Винагорода Ремонтної МайÑтерні - Ðічог msgid "Launch Transport" msgstr "ЗапуÑтити ТранÑпорт" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "ВиÑаджуєтьÑÑ ÐŸÑ–Ð´ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ." @@ -13955,5 +14958,15 @@ msgstr "ВерÑÑ–Ñ %s%s%s%s" #~ msgid ": Unknown cheat code." #~ msgstr ": Ðевідомий щахрайÑький код." +#~ msgid "(Player %u) has detected the borg 'legs' bug! Please enter legs in your console and upload the files to us!" +#~ msgstr "(Гравець %u) виÑвив баг з ногами кіборгів! Будь-лаÑка введіть ноги через конÑоль та завантажте нам файли!" + #~ msgid "You found %u power in an oil drum" #~ msgstr "Ви знайшли %u енергії в бочці нафти." + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr ", моди: " + +#~ msgid "Active mods: " +#~ msgstr "Ðктивувати моди:" diff --git a/po/update-po.sh b/po/update-po.sh index 454a81c04..afd3f0b39 100755 --- a/po/update-po.sh +++ b/po/update-po.sh @@ -8,4 +8,8 @@ cat > po/POTFILES.in << EOF # List of source files which contain translatable strings. EOF -find lib src data -type f | grep -v '\/.svn\/' | grep -e '\.c\(pp\|xx\)\?$' -e 'data.*strings.*\.txt$' -e '\.slo$' -e '\.rmsg$' | grep -v -e '\.lex\.c\(pp\|xx\)\?$' -e '\.tab\.c\(pp\|xx\)\?$' -e 'sqlite3\.c' -e 'GLee\.c' | sort >> po/POTFILES.in +find lib src data -type f | + grep -v '\/.svn\/' | + grep -e '\.c\(pp\|xx\)\?$' -e 'data.*strings.*\.txt$' -e 'data.*sequenceaudio.*\.tx.$' -e '\.slo$' -e '\.rmsg$' | + grep -v -e '\.lex\.c\(pp\|xx\)\?$' -e '\.tab\.c\(pp\|xx\)\?$' -e 'lib/netplay/miniupnpc/*' -e 'GLee\.c' | + sort >> po/POTFILES.in diff --git a/po/zh_CN.po b/po/zh_CN.po index 9bd303c43..e8ac5fa07 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2009-05-13 16:12+0800\n" "Last-Translator: Terra \n" "Language-Team: Simplified Chinese \n" @@ -1583,7 +1583,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "" @@ -1615,8 +1615,8 @@ msgstr "" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "生化人制造工厂" @@ -1777,7 +1777,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "" @@ -1950,7 +1950,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "燃油喷射å‘动机" @@ -2107,7 +2107,7 @@ msgstr "" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "" @@ -2967,7 +2967,7 @@ msgstr "" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "" @@ -2989,7 +2989,7 @@ msgstr "" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "" @@ -2998,7 +2998,7 @@ msgstr "" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "" @@ -3007,7 +3007,7 @@ msgstr "" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "" @@ -3043,7 +3043,7 @@ msgstr "" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "" @@ -3174,7 +3174,7 @@ msgstr "" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "涡轮增压å‘动机" @@ -3852,14 +3852,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "" @@ -3871,14 +3871,14 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "" @@ -4016,7 +4016,7 @@ msgstr "" #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "燃气涡轮å‘动机" @@ -4568,14 +4568,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "ä»» 务 ç›® æ ‡ : æœ å¯» 并 获 å¾— 神 ç» å…ƒ çª è§¦ 科 技" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "建 ç«‹ 一 个 基 地 , 并 æœ ç´¢ æ–‡ 明 é— è¿¹ã€‚" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "è¿™ 个 é— è¿¹ ä¿ å­˜ ç€ å¯¹ 我 们 çš„ 计 划 æž ä¸º é‡ è¦ çš„ 科 技。" @@ -4932,14 +4935,18 @@ msgid "We'll keep you informed of further developments" msgstr "" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "" @@ -4948,16 +4955,19 @@ msgid "You must defend it and hold it." msgstr "" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "" @@ -5254,6 +5264,8 @@ msgid "Good luck, Commander." msgstr "ç¥æ‚¨å¥½è¿ï¼ŒæŒ‡æŒ¥å®˜ã€‚" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "" @@ -5262,6 +5274,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "" @@ -5270,10 +5283,12 @@ msgid "Take your forces to the Northern Sector" msgstr "" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "" @@ -5282,6 +5297,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "" @@ -5308,6 +5324,7 @@ msgstr "" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "" @@ -5747,7 +5764,7 @@ msgstr "è¿é€" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "工程车" @@ -5756,7 +5773,7 @@ msgstr "工程车" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" @@ -5787,7 +5804,7 @@ msgstr "轻型加农炮地堡" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 #, fuzzy msgid "Heavy Machinegun Cobra Half-tracks" msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" @@ -5823,7 +5840,7 @@ msgstr "" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 #, fuzzy msgid "Twin Machinegun Viper Wheels" msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" @@ -5843,7 +5860,7 @@ msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 #, fuzzy msgid "Heavy Machinegun Viper Tracks" msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" @@ -5871,7 +5888,7 @@ msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 #, fuzzy msgid "Medium Cannon Cobra Tracks" msgstr "中型加农炮" @@ -5885,7 +5902,7 @@ msgstr "é‡åž‹åŠ å†œç‚®" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "" @@ -5896,7 +5913,7 @@ msgstr "åŠå±¥å¸¦å¼" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "" @@ -5915,7 +5932,7 @@ msgstr "指挥炮塔" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "" @@ -5930,10 +5947,10 @@ msgid "Light Cannon Python Tracks" msgstr "轻型加农炮地堡" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 #, fuzzy msgid "Medium Cannon Python Tracks" msgstr "中型加农炮" @@ -5941,9 +5958,9 @@ msgstr "中型加农炮" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 #, fuzzy msgid "Heavy Cannon Python Tracks" msgstr "é‡åž‹åŠ å†œç‚®" @@ -5951,7 +5968,7 @@ msgstr "é‡åž‹åŠ å†œç‚®" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 #, fuzzy msgid "Command Turret Python Tracks" msgstr "指挥炮塔" @@ -6016,7 +6033,7 @@ msgstr "" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "" @@ -6025,9 +6042,9 @@ msgstr "" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "" @@ -6037,8 +6054,8 @@ msgstr "" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "" @@ -6047,7 +6064,7 @@ msgstr "" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "" @@ -6141,8 +6158,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "指挥炮塔" @@ -6246,14 +6263,14 @@ msgstr "åŠå±¥å¸¦å¼ä¸‰åž‹" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "生化步兵二型" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "生化步兵三型" @@ -6275,7 +6292,7 @@ msgstr "" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "生化步兵" @@ -6304,8 +6321,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "" @@ -6313,15 +6330,15 @@ msgstr "" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "" @@ -6345,7 +6362,7 @@ msgstr "" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "" @@ -6381,7 +6398,7 @@ msgstr "制造工厂" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "制造工厂扩展设施" @@ -6393,7 +6410,7 @@ msgstr "能æºç”µåŽ‚" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "能æºç”µåŽ‚扩展设施" @@ -6405,7 +6422,7 @@ msgstr "科技研究机构" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "科技研究机构扩展设施" @@ -6417,7 +6434,7 @@ msgstr "拆除建筑物" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "维修中心" @@ -6438,8 +6455,8 @@ msgstr "" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "" @@ -6450,30 +6467,30 @@ msgstr "" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "" @@ -6484,27 +6501,27 @@ msgstr "" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "" @@ -6515,29 +6532,29 @@ msgstr "" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "" @@ -6547,170 +6564,170 @@ msgstr "" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "机枪防御塔" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "åŒç®¡æœºæžªé˜²å¾¡å¡”" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 #, fuzzy msgid "Heavy Machinegun Tower" msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "å–·ç«å™¨é˜²å¾¡å¡”" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 #, fuzzy msgid "Lancer Tower" msgstr "å–·ç«å™¨é˜²å¾¡å¡”" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 msgid "Mini-Rocket Tower" msgstr "" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "机枪地堡" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "åŒç®¡æœºæžªåœ°å ¡" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "é‡åž‹æœºæžªåœ°å ¡" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "轻型加农炮地堡" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "å–·ç«å™¨åœ°å ¡" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "" @@ -6721,139 +6738,139 @@ msgstr "" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "轻型加农炮" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "中型加农炮" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "é‡åž‹åŠ å†œç‚®" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "机枪" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "åŒç®¡æœºæžª" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "é‡åž‹æœºæžª" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "çªå‡»ç‚®" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "鞭挞导弹" @@ -6864,80 +6881,80 @@ msgstr "天使导弹" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "ä¿æŠ¤è€…防空导弹" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "大天使导弹" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "" @@ -6947,74 +6964,74 @@ msgid "Mini-Rocket Artillery" msgstr "" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 msgid "Mini-Rocket Pod" msgstr "" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "å¦å…‹æ€æ‰‹" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 msgid "VTOL Mini-Rocket" msgstr "" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "" @@ -7023,62 +7040,62 @@ msgid "LasSat" msgstr "" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "" @@ -7087,22 +7104,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "" @@ -7119,310 +7136,310 @@ msgid "NEXUS CWall" msgstr "" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 #, fuzzy msgid "Flamer Cyborg" msgstr "å–·ç«å™¨åœ°å ¡" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 #, fuzzy msgid "Machinegunner Cyborg" msgstr "机枪地堡" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 #, fuzzy msgid "Assault Gunner Cyborg" msgstr "çªå‡»ç‚®" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "" @@ -7437,15 +7454,15 @@ msgstr "" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "" @@ -7454,55 +7471,55 @@ msgid "Angel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "" @@ -7521,15 +7538,15 @@ msgstr "机枪防御塔" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "" @@ -7540,49 +7557,49 @@ msgstr "" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "" @@ -7620,54 +7637,54 @@ msgid "Advanced Factory Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "" #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "" @@ -7704,172 +7721,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "" @@ -7879,84 +7896,84 @@ msgstr "" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "" @@ -7977,292 +7994,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "è½»é‡çº§è½¦ä½“ - è°è›‡" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "è½»é‡çº§è½¦ä½“ - 美洲豹" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "è½»é‡çº§è½¦ä½“ - å击者" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "è½»é‡çº§è½¦ä½“ - 虫å¼" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "中é‡çº§è½¦ä½“ - 眼镜蛇" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "中é‡çº§è½¦ä½“ - 黑豹" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "中é‡çº§è½¦ä½“ - 惩罚者" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "中é‡çº§è½¦ä½“ - 毒èŽ" #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "é‡é‡çº§è½¦ä½“ - 猛虎" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "é‡é‡çº§è½¦ä½“ - å¤ä»‡è€…" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "é‡é‡çº§è½¦ä½“ - 蟒蛇" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "é‡é‡çº§è½¦ä½“ - 螳螂" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "燃油喷射å‘动机Mk2åž‹" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "燃油喷射å‘动机Mk3åž‹" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "涡轮增压å‘动机Mk2åž‹" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "涡轮增压å‘动机Mk3åž‹" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "燃气涡轮å‘动机Mk2åž‹" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "燃气涡轮å‘动机Mk3åž‹" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "å¤åˆåˆé‡‘" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "" @@ -8271,17 +8288,17 @@ msgid "Cluster Bombs Bay" msgstr "" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "" @@ -8298,252 +8315,252 @@ msgid "Target Acquisition Bombsight" msgstr "" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "" #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "" @@ -8552,57 +8569,57 @@ msgid "Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "淬硬å­å¼¹" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "脱壳穿甲弹" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "脱壳穿甲弹Mk2åž‹" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "脱壳穿甲弹Mk3åž‹" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "钨核å­å¼¹ï¼ˆæœºæžªæ”»å‡»åŠ›å¢žåŠ ï¼‰" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "钨核å­å¼¹Mk2型(机枪攻击力增加)" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "钨核å­å¼¹Mk3型(机枪攻击力增加)" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "è´«é“€å­å¼¹ï¼ˆæœºæžªæ”»å‡»åŠ›å¢žåŠ ï¼‰" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "è´«é“€å­å¼¹Mk2型(机枪攻击力增加)" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "链å¼æœºæžªå‡çº§" @@ -8611,142 +8628,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "高速链å¼æœºæžªå‡çº§" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "超速速射链å¼æœºæžªå‡çº§" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "" @@ -8755,368 +8772,368 @@ msgid "Target Prediction Computer" msgstr "" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 #, fuzzy msgid "Machinegun Artifact" msgstr "机枪" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "" @@ -9137,7 +9154,7 @@ msgid "MRL Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "" @@ -9146,49 +9163,49 @@ msgid "Angel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 msgid "Repair Turret Cobra Tracks" msgstr "" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "" @@ -9197,37 +9214,37 @@ msgid "HPV Cannon Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "" @@ -9509,351 +9526,1191 @@ msgstr "" msgid "Congratulations commander - you are ready for your first mission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 -msgid "Cobra Hover Heavy-Repair" +#: data/base/sequenceaudio/cam1/c001end.txt:1 +msgid "Incoming Transmission" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 -msgid "Viper HMG Wheels" +#: data/base/sequenceaudio/cam1/c001end.txt:3 +msgid "Transmission from Beta Base" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 -#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 -msgid "Scourge Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 -msgid "TK Mantis Hover" +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 -msgid "Cobra HMG Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 -msgid "Cobra Hover HC" +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 -msgid "Scorpion Lancer Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 -msgid "Scorpion Heavy Cannon Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "计划目标" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 -msgid "Scorpion Lancer VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 -msgid "Scorpion BB VTOL" +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 -msgid "Viper Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txa:10 +msgid "Team Alpha nears its destination" msgstr "" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 -msgid "Cobra Command Turret Tracks" +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +msgid "Commander, we are receiving this transmission." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +msgid "You are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +msgid "They are in contravention of the New Paradigm." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +msgid "They must be eradicated." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +msgid "Secure the LZ and establish a forward base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +msgid "Then destroy the New Paradigm's base." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +msgid "Team Alpha approaches Beta Base" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +msgid "You must defend and hold it at all costs." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +msgid "Commander, a new launch has been detected." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +msgid "Attack and destroy all who resist the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +msgid "Cleanse and destroy!!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +msgid "Warriors of the Collective. You have performed well." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +msgid "Decoding Transmission..." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "简报开始: " + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "查看下一个指挥官" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "ç¥æ‚¨å¥½è¿ï¼ŒæŒ‡æŒ¥å®˜ã€‚" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +msgid "Commander, welcome to NEXUS!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +msgid "Commander, we are experiencing interference with our equipment." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +msgid "Nuclear Winter" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1313 -msgid "Scorpion Command Turret Tracks" +msgid "Cobra Hover Heavy-Repair" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1314 -msgid "mantis Command Turret Tracks" +msgid "Viper HMG Wheels" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1315 -msgid "Cobra Lancer Tracks" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 +msgid "Scourge Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1316 -msgid "Mantis Heavy Cannon Tracks" +msgid "TK Mantis Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1317 -msgid "Mantis Tank Killer Tracks" +msgid "Cobra HMG Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1318 -msgid "Mantis Scourge Tracks" +msgid "Cobra Hover HC" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1319 -msgid "Scorpion Heavy Machinegun Tracks" +msgid "Scorpion Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1320 -msgid "Scorpion Repair Tracks" +msgid "Scorpion Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1321 -msgid "Scorpion Heavy Repair Hover" +msgid "Scorpion Lancer VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1322 -msgid "Cobra Hover Truck" +msgid "Scorpion BB VTOL" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1323 -msgid "Scorpion Hover Truck" +msgid "Viper Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1324 -msgid "Mantis Hover Truck" +msgid "Cobra Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1325 -msgid "Cobra Bunker Buster Tracks" +msgid "Scorpion Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1326 -msgid "Scorpion Bunker Buster Tracks" +msgid "mantis Command Turret Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1327 -msgid "Mantis Bunker Buster Tracks" +msgid "Cobra Lancer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1328 -msgid "Viper Tracks Lancer" +msgid "Mantis Heavy Cannon Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1329 -msgid "Cobra Half-Tracks Mini-Pod" +msgid "Mantis Tank Killer Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1330 -msgid "Cobra Tracks Mini-Pod" +msgid "Mantis Scourge Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1331 -msgid "Cobra Tracks Mini-Rocket Artillery" +msgid "Scorpion Heavy Machinegun Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1332 -msgid "Cobra Inferno Half-track" +msgid "Scorpion Repair Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1333 -msgid "Python HVC Hover" +msgid "Scorpion Heavy Repair Hover" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1334 -msgid "Python Scourge Tracks" +msgid "Cobra Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1335 -msgid "Python Gauss Cannon Tracks" +msgid "Scorpion Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1336 -msgid "Python Pulse Laser Tracks" +msgid "Mantis Hover Truck" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1337 -msgid "Tiger Pulse Laser Tracks" +msgid "Cobra Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1338 -msgid "Tiger Heavy Laser Tracks" +msgid "Scorpion Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1339 -msgid "Wyvern Gauss Cannon Tracks" +msgid "Mantis Bunker Buster Tracks" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1340 -msgid "Wyvern Pulse Laser Tracks" +msgid "Viper Tracks Lancer" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1341 -msgid "Wyvern Heavy Laser Tracks" +msgid "Cobra Half-Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1342 -msgid "Viper Machinegun Half-Track" +msgid "Cobra Tracks Mini-Pod" msgstr "" #: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +msgid "Cobra Tracks Mini-Rocket Artillery" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +msgid "Cobra Inferno Half-track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +msgid "Python HVC Hover" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 +msgid "Python Scourge Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 +msgid "Python Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 +msgid "Python Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 +msgid "Tiger Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 +msgid "Tiger Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 +msgid "Wyvern Gauss Cannon Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 +msgid "Wyvern Pulse Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 +msgid "Wyvern Heavy Laser Tracks" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 +msgid "Viper Machinegun Half-Track" +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 #, fuzzy msgid "Heavy Machinegun Viper Wheels" msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 #, fuzzy msgid "Tank Killer Mantis Hover" msgstr "å¦å…‹æ€æ‰‹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 #, fuzzy msgid "Heavy Machinegun Cobra Tracks" msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 #, fuzzy msgid "Heavy Cannon Cobra Hover" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 #, fuzzy msgid "Heavy Machinegun Cobra Wheels" msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 #, fuzzy msgid "Heavy Machinegun Cobra Hover" msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 #, fuzzy msgid "Machinegun Viper Tracks" msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 #, fuzzy msgid "Twin Machinegun Viper Tracks" msgstr "åŒç®¡æœºæžªé˜²å¾¡å¡”" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 #, fuzzy msgid "Medium Cannon Cobra Hover" msgstr "中型加农炮" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 #, fuzzy msgid "Medium Cannon Scorpion Hover" msgstr "中é‡çº§è½¦ä½“ - 毒èŽ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 #, fuzzy msgid "Medium Cannon Scorpion Tracks" msgstr "中é‡çº§è½¦ä½“ - 毒èŽ" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 #, fuzzy msgid "Medium Cannon Python Hover" msgstr "中型加农炮" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 #, fuzzy msgid "Heavy Cannon Python Hover" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 #, fuzzy msgid "Heavy Cannon Tiger Tracks" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 #, fuzzy msgid "Vengeance Tracks Gauss Cannon" msgstr "蟒蛇 å±¥å¸¦å¼ é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 msgid "Vengeance Tracks Gauss Scourge" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 msgid "VTOL Bunker Buster Bug VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "" @@ -9863,7 +10720,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "" @@ -9873,7 +10730,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "" @@ -9883,136 +10740,136 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 msgid "Repair Turret Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 #, fuzzy msgid "Heavy Cannon Scorpion Tracks" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 #, fuzzy msgid "Command Turret Viper Tracks" msgstr "指挥炮塔" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 #, fuzzy msgid "Command Turret Cobra Tracks" msgstr "指挥炮塔" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 #, fuzzy msgid "Command Turret Scorpion Tracks" msgstr "指挥炮塔" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 #, fuzzy msgid "Command Turret Mantis Tracks" msgstr "指挥炮塔" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 #, fuzzy msgid "Heavy Cannon Mantis Tracks" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 #, fuzzy msgid "Tank Killer Mantis Tracks" msgstr "å¦å…‹æ€æ‰‹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 #, fuzzy msgid "Scourge Mantis Tracks" msgstr "鞭挞导弹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 msgid "Mini-Rocket Cobra Half-Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 msgid "Mini-Rocket Cobra Tracks" msgstr "" @@ -10022,7 +10879,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "机枪防御塔" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "" @@ -10032,56 +10889,174 @@ msgid "HPV Cannon Python Hover" msgstr "é‡åž‹åŠ å†œç‚®" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 #, fuzzy msgid "Machinegun Viper Half-Tracks" msgstr "è½®å¼è°è›‡å¦å…‹ï¼ˆæœºæžªï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "é‡åž‹åŠ å†œç‚®" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "中型加农炮" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "é‡åž‹åŠ å†œç‚®" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "çªå‡»ç‚®" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "çªå‡»ç‚®" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "é‡åž‹æœºæžªé˜²å¾¡å¡”" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "é‡åž‹åŠ å†œç‚®" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "å–·ç«å™¨é˜²å¾¡å¡”" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "å–·ç«å™¨é˜²å¾¡å¡”" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +msgid "Rail Gun Tiger Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "å–·ç«å™¨é˜²å¾¡å¡”" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "é‡åž‹åŠ å†œç‚®" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "鞭挞导弹" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +msgid "Flashlight Retribution Hover" +msgstr "" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "机枪防御塔" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "机枪防御塔" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "中é‡çº§è½¦ä½“ - 惩罚者" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "中é‡çº§è½¦ä½“ - 惩罚者" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "中é‡çº§è½¦ä½“ - 惩罚者" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "å击者å¦å…‹" + #: data/mp/messages/resmessages12.rmsg:58 msgid "Construction speed +10%" msgstr "" @@ -10712,7 +11687,7 @@ msgid "Upgraded battlefield computer system" msgstr "" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "" @@ -10744,7 +11719,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "åŠå±¥å¸¦å¼" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10757,660 +11732,674 @@ msgid "Nexus Link" msgstr "" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +msgid "Hardcrete Gate" +msgstr "" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 #, fuzzy msgid "Inferno Bunker" msgstr "å–·ç«å™¨åœ°å ¡" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 msgid "Pulse Laser Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 #, fuzzy msgid "Pulse Laser Tower" msgstr "å–·ç«å™¨é˜²å¾¡å¡”" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 msgid "Seraph Missile Array" msgstr "" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "机枪防御塔" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 msgid "VTOL Cluster Bomb Bay" msgstr "" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "游æˆ" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 msgid "Hyper Velocity Cannon Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 msgid "Seraph Missile Battery" msgstr "" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 #, fuzzy msgid "Flamer Tower" msgstr "å–·ç«å™¨é˜²å¾¡å¡”" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 msgid "Hyper Velocity Cannon Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 msgid "Automated Manufacturing" msgstr "" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 msgid "Automated Manufacturing Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:807 -msgid "Automated Manufacturing Mk3" -msgstr "" - -#: data/mp/messages/strings/names.txt:808 -#, fuzzy -msgid "Robotic Manufacturing" -msgstr "生产å•ä½" - -#: data/mp/messages/strings/names.txt:809 -msgid "Robotic Manufacturing Mk2" -msgstr "" - #: data/mp/messages/strings/names.txt:810 -msgid "Robotic Manufacturing Mk3" +msgid "Automated Manufacturing Mk3" msgstr "" #: data/mp/messages/strings/names.txt:811 #, fuzzy -msgid "Advanced Manufacturing" +msgid "Robotic Manufacturing" msgstr "生产å•ä½" #: data/mp/messages/strings/names.txt:812 -msgid "Advanced Manufacturing Mk2" +msgid "Robotic Manufacturing Mk2" msgstr "" #: data/mp/messages/strings/names.txt:813 -msgid "Self-Replicating Manufacturing" +msgid "Robotic Manufacturing Mk3" msgstr "" #: data/mp/messages/strings/names.txt:814 +#, fuzzy +msgid "Advanced Manufacturing" +msgstr "生产å•ä½" + +#: data/mp/messages/strings/names.txt:815 +msgid "Advanced Manufacturing Mk2" +msgstr "" + +#: data/mp/messages/strings/names.txt:816 +msgid "Self-Replicating Manufacturing" +msgstr "" + +#: data/mp/messages/strings/names.txt:817 msgid "Advanced Manufacturing Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 msgid "Automated Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 msgid "Automated Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "科技研究机构" -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 msgid "Robotic Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "科技研究机构" -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 msgid "Robotic Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 msgid "Advanced Repair Facility Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 msgid "Advanced Repair Facility Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 #, fuzzy msgid "Cluster Bomb Bay" msgstr "电浆炸弹" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 msgid "HE Bomb Shells" msgstr "" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 msgid "Improved Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 msgid "Advanced Bomb Warhead" msgstr "" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "机枪防御塔" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "机枪防御塔" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "机枪防御塔" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 #, fuzzy msgid "Assault Gun Tower" msgstr "çªå‡»ç‚®" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "é‡åž‹åŠ å†œç‚®" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 #, fuzzy msgid "Sensor Upgrade Mk2" msgstr "传感器åŠå¾„" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 #, fuzzy msgid "Sensor Upgrade Mk3" msgstr "传感器åŠå¾„" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 #, fuzzy msgid "Vapor Turbine Generator Mk2" msgstr "燃气涡轮å‘动机Mk2åž‹" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 #, fuzzy msgid "Gas Turbine Generator Mk2" msgstr "燃气涡轮å‘动机Mk2åž‹" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 #, fuzzy msgid "Gas Turbine Generator Mk3" msgstr "燃气涡轮å‘动机Mk3åž‹" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 #, fuzzy msgid "Vapor Turbine Generator Mk3" msgstr "燃气涡轮å‘动机Mk3åž‹" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 msgid "Incendiary Howitzer" msgstr "" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 msgid "Incendiary Howitzer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 #, fuzzy msgid "Plasmite Flamer Bunker" msgstr "å–·ç«å™¨åœ°å ¡" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 msgid "Incendiary Mortar" msgstr "" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 msgid "Incendiary Mortar Pit" msgstr "" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 -msgid "Super Tank-Killer Cyborg" -msgstr "" - +#: data/mp/messages/strings/names.txt:1679 #: data/mp/messages/strings/names.txt:1680 #: data/mp/messages/strings/names.txt:1681 -msgid "Heavy Laser" -msgstr "" - -#: data/mp/messages/strings/names.txt:1682 -msgid "VTOL Heavy Laser" +msgid "Super Tank-Killer Cyborg" msgstr "" #: data/mp/messages/strings/names.txt:1683 #: data/mp/messages/strings/names.txt:1684 +msgid "Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1685 +msgid "VTOL Heavy Laser" +msgstr "" + +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 -msgid "Plasma Cannon" -msgstr "" - -#: data/mp/messages/strings/names.txt:1718 #: data/mp/messages/strings/names.txt:1719 -msgid "Plasma Cannon Emplacement" +#: data/mp/messages/strings/names.txt:1720 +msgid "Plasma Cannon" msgstr "" #: data/mp/messages/strings/names.txt:1721 #: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 +msgid "Plasma Cannon Emplacement" +msgstr "" + #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "é‡é‡çº§è½¦ä½“ - 猛虎" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 msgid "Multi Turret Body - Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 -msgid "EMP Mortar" -msgstr "" - -#: data/mp/messages/strings/names.txt:1777 #: data/mp/messages/strings/names.txt:1779 -msgid "EMP Mortar Pit" +#: data/mp/messages/strings/names.txt:1781 +msgid "EMP Mortar" msgstr "" #: data/mp/messages/strings/names.txt:1780 #: data/mp/messages/strings/names.txt:1782 +msgid "EMP Mortar Pit" +msgstr "" + +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "åŒç®¡çªå‡»ç‚®" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 #, fuzzy msgid "Twin Assault Gun Hardpoint" msgstr "åŒç®¡çªå‡»ç‚®" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 #, fuzzy msgid "VTOL Plasmite Bomb Bay" msgstr "电浆炸弹" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "电浆炸弹" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "指挥炮塔" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "指挥炮塔" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "指挥炮塔" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "é‡åž‹åŠ å†œç‚®" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "机枪防御塔" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "é‡åž‹åŠ å†œç‚®" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "中é‡çº§è½¦ä½“ - 惩罚者" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11547,31 +12536,40 @@ msgstr "" msgid "Latin" msgstr "拉ä¸è¯­" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "ä¿å­˜æ¸¸æˆ" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11722,15 +12720,15 @@ msgstr "" msgid "go directly to host screen" msgstr "" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "玩家" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "设计新å•ä½" @@ -11769,18 +12767,18 @@ msgstr "å‘动机输出功率" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "é‡é‡" @@ -11794,191 +12792,191 @@ msgstr "总体能æºéœ€æ±‚" msgid "Total Body Points" msgstr "总体æˆæœ¬" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "能æºå ç”¨" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "è¿è¾“å ä½" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "传感器åŠå¾„" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "传感器能æº" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM 能æº" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "生产æˆæœ¬" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "攻击范围" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "攻击力" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "ç«åŠ›è¯„ä¼°" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "飞行移动速度" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "公路移动速度" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "野地移动速度" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "æ°´é¢ç§»åŠ¨é€Ÿåº¦" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "武器" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "系统" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "玩家" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "玩家" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "油井在燃烧, 无法建造钻油塔" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - æŸä¼¤ %d%% - ç»éªŒ %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - æŸä¼¤ %d%% - ç»éªŒ %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "命令工程车建造钻油塔" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "命令工程车建造钻油塔" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "命令工程车建造钻油塔" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "å•ä½è¢«æ‘§æ¯! " -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "é‡å»ºå»ºç­‘物" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "已选择 %u å·ç¼–队 - %u å•ä½" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "%u å•ä½å·²æŒ‡æ´¾ä¸º %u å·ç¼–队" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "移动视野中心到 %u å·ç¼–队 - %u å•ä½" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "" msgstr[1] "" -#: src/droid.c:3249 +#: src/droid.c:3274 #, fuzzy msgid "Rookie" msgstr "新兵部队: %u" -#: src/droid.c:3250 +#: src/droid.c:3275 #, fuzzy msgctxt "rank" msgid "Green" msgstr "绿色" -#: src/droid.c:3251 +#: src/droid.c:3276 #, fuzzy msgid "Trained" msgstr "作训部队: %u" -#: src/droid.c:3252 +#: src/droid.c:3277 #, fuzzy msgid "Regular" msgstr "标准部队: %u" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "专业部队" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "è€å…µéƒ¨é˜Ÿ" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "ç²¾é”部队" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "特ç§éƒ¨é˜Ÿ" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "英雄部队" @@ -12025,11 +13023,11 @@ msgstr "游æˆæ•™ç¨‹" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "返回" @@ -12110,19 +13108,19 @@ msgid "Video Playback" msgstr "视频回放" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "å…¨å±æ˜¾ç¤º" @@ -12131,43 +13129,42 @@ msgid "Screen Shake" msgstr "å±å¹•éœ‡åŠ¨" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "å¼€" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "å…³" @@ -12177,152 +13174,151 @@ msgid "Fog" msgstr "迷雾" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "薄雾(å¯ä»¥çœ‹è§åœ°å½¢ï¼‰" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "战争迷雾" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "字幕" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "阴影" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "游æˆé€‰é¡¹" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "语音音é‡" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "声效音é‡" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "音ä¹éŸ³é‡" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "游æˆé€‰é¡¹" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "图形模å¼*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "窗å£" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "å±å¹•åˆ†è¾¨çŽ‡*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "è´¨æ尺寸" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "* é‡å¯æ¸¸æˆåŽç”Ÿæ•ˆ" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "游æˆé€‰é¡¹" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "翻转鼠标" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "" -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 msgid "Switch Mouse Buttons" msgstr "" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "游æˆé€‰é¡¹" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "游æˆéš¾åº¦" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "容易" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "正常" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "å›°éš¾" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "å±å¹•å·åŠ¨é€Ÿåº¦" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "语言" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "å•ä½é¢œè‰²" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "游æˆé€‰é¡¹" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12356,106 +13352,106 @@ msgstr "" msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "" -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "指挥官 (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "情报显示 (F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "å•ä½ç”Ÿäº§ (F1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "å•ä½è®¾è®¡ (F4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "科技研究 (F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "建造建筑 (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "能æº" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "å•ä½" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "" -#: src/hci.c:4115 +#: src/hci.c:4117 #, fuzzy msgid "Pause or unpause the game" msgstr "æš‚åœ/继续游æˆ" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "退出" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "退出游æˆ" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "进度æ¡" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "循环生产" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "" @@ -12499,6 +13495,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12513,7 +13517,7 @@ msgid "Power Accrued" msgstr "" #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "æš‚åœ" @@ -12641,289 +13645,289 @@ msgstr "" msgid "Circle" msgstr "" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "抱歉, 多人游æˆæ—¶æ— æ³•ä½¿ç”¨ä½œå¼Šç " -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "" -#: src/keybind.c:357 +#: src/keybind.c:358 #, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "" -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "å¼€å¯ FPS 显示" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "关闭 FPS 显示" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPS上é™: %d; PIEs %d; polys %d; Terr. polys %d; çŠ¶æ€ %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "迷雾 å¼€" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "迷雾 å…³" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 msgid "Ending Mission." msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, c-format msgid "Trap cursor %s" msgstr "" -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "研究科技" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "演示模å¼å…³é—­ - 正在返回正常游æˆæ¨¡å¼" -#: src/keybind.c:1546 +#: src/keybind.c:1542 msgid "Debug menu is Open" msgstr "" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 msgid "All enemies destroyed by cheating!" msgstr "" -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "抱歉, 多人游æˆæ—¶æ— æ³•ä½¿ç”¨ä½œå¼Šç " -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "" -#: src/keybind.c:2740 +#: src/keybind.c:2736 msgid "Radar showing revealed terrain" msgstr "" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "" @@ -13347,8 +14351,8 @@ msgstr "继续游æˆ" msgid "GAME SAVED :" msgstr "游æˆå·²ä¿å­˜! " -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13659,21 +14663,21 @@ msgstr "主玩家将 %s 踢出游æˆ!" msgid "Host is Starting Game" msgstr "主玩家正在开始游æˆ" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "玩家" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13682,27 +14686,27 @@ msgstr "" msgid "Players Still Joining" msgstr "" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s 已离开游æˆ" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s 正在进入游æˆ" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "系统语言" @@ -13792,48 +14796,48 @@ msgstr "" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "åŒç›Ÿ" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "绿色" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "橙色" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "ç°è‰²" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "黑色" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "红色" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "è“色" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "粉红色" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "é’绿色" @@ -13976,12 +14980,12 @@ msgstr "ä½ å–得了胜利! " msgid "YOU WERE DEFEATED!" msgstr "你被击败了! " -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "" @@ -14009,61 +15013,61 @@ msgstr "" msgid "Unable to locate any Commanders!" msgstr "未能定ä½ä»»ä½•æŒ‡æŒ¥å®˜" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "已达到å¯æŽ§åˆ¶å•ä½æ€»æ•°ä¸Šé™ - åœæ­¢ç”Ÿäº§æ–°å•ä½" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - 已指派 %u å•ä½" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - æŸä¼¤ %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s - 电å­ä¼¤å®³" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "" @@ -14072,7 +15076,7 @@ msgstr "" msgid "Launch Transport" msgstr "å‘å°„è¿è¾“飞船" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "" @@ -14104,6 +15108,14 @@ msgstr "" msgid "Version %s%s%s%s" msgstr "" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "中é‡çº§è½¦ä½“ - 惩罚者" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "中é‡çº§è½¦ä½“ - 惩罚者" + #, fuzzy #~ msgid ": Unknown cheat code." #~ msgstr "è¿è¡Œåœ¨ä½œå¼Šæ¨¡å¼" @@ -14201,8 +15213,5 @@ msgstr "" #~ msgid "Minimal" #~ msgstr "最å°" -#~ msgid "Game" -#~ msgstr "游æˆ" - #~ msgid "Mayhem" #~ msgstr "玩家对战" diff --git a/po/zh_TW.po b/po/zh_TW.po index 79d4a3462..a2c9e5b54 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: warzone2100\n" "Report-Msgid-Bugs-To: warzone-dev@gna.org\n" -"POT-Creation-Date: 2010-03-14 16:07+0100\n" +"POT-Creation-Date: 2010-04-24 15:51+0200\n" "PO-Revision-Date: 2009-05-11 00:21+0800\n" "Last-Translator: \n" "Language-Team: zh_TW\n" @@ -1583,7 +1583,7 @@ msgstr "改善生化人生產速度" #: data/base/messages/resmessages1.rmsg:278 #: data/base/messages/strings/names.txt:783 #: data/mp/messages/resmessages1.rmsg:278 -#: data/mp/messages/strings/names.txt:794 +#: data/mp/messages/strings/names.txt:797 msgid "Automated Cyborg Production" msgstr "åˆéšŽè‡ªå‹•åŒ–生化人生產" @@ -1615,8 +1615,8 @@ msgstr "所有生化人工廠自動å‡ç´š" #: data/base/messages/strings/names.txt:399 #: data/base/messages/strings/names.txt:782 #: data/mp/messages/resmessages1.rmsg:291 -#: data/mp/messages/strings/names.txt:406 -#: data/mp/messages/strings/names.txt:793 +#: data/mp/messages/strings/names.txt:407 +#: data/mp/messages/strings/names.txt:796 msgid "Cyborg Factory" msgstr "生化人步兵工廠" @@ -1777,7 +1777,7 @@ msgstr "增加攻擊抵抗能力" #: data/base/messages/resmessages1.rmsg:369 #: data/base/messages/strings/names.txt:805 #: data/mp/messages/resmessages1.rmsg:370 -#: data/mp/messages/strings/names.txt:816 +#: data/mp/messages/strings/names.txt:819 msgid "Reinforced Base Structure Materials" msgstr "åˆéšŽå¼·åŒ–建æ一型" @@ -1950,7 +1950,7 @@ msgstr "車輛引擎å‡ç´š" #: data/base/messages/resmessages1.rmsg:460 #: data/base/messages/strings/names.txt:942 #: data/mp/messages/resmessages1.rmsg:461 -#: data/mp/messages/strings/names.txt:955 +#: data/mp/messages/strings/names.txt:958 msgid "Fuel Injection Engine" msgstr "燃油噴射引擎一型" @@ -2107,7 +2107,7 @@ msgstr "移動速度:慢" #: data/base/messages/resmessages1.rmsg:525 #: data/base/messages/strings/names.txt:976 #: data/mp/messages/resmessages1.rmsg:526 -#: data/mp/messages/strings/names.txt:989 +#: data/mp/messages/strings/names.txt:992 msgid "Wheeled Propulsion" msgstr "推進動力:輪" @@ -2967,7 +2967,7 @@ msgstr "新的機器人修ç†ç§‘技" #: data/base/messages/strings/names.txt:786 #: data/base/messages/strings/resstrings.txt:348 #: data/mp/messages/resmessages2.rmsg:343 -#: data/mp/messages/strings/names.txt:797 +#: data/mp/messages/strings/names.txt:800 #: data/mp/messages/strings/resstrings.txt:374 msgid "Robotic Cyborg Production" msgstr "中階自動化生化人生產" @@ -2989,7 +2989,7 @@ msgstr "工廠生產速率增加" #: data/base/messages/strings/names.txt:835 #: data/base/messages/strings/resstrings.txt:390 #: data/mp/messages/resmessages2.rmsg:369 -#: data/mp/messages/strings/names.txt:846 +#: data/mp/messages/strings/names.txt:849 #: data/mp/messages/strings/resstrings.txt:416 msgid "Dedicated Synaptic Link Data Analysis" msgstr "專注çªè§¸é€£çµè³‡æ–™åˆ†æžä¸€åž‹" @@ -2998,7 +2998,7 @@ msgstr "專注çªè§¸é€£çµè³‡æ–™åˆ†æžä¸€åž‹" #: data/base/messages/strings/names.txt:808 #: data/base/messages/strings/resstrings.txt:400 #: data/mp/messages/resmessages2.rmsg:382 -#: data/mp/messages/strings/names.txt:819 +#: data/mp/messages/strings/names.txt:822 #: data/mp/messages/strings/resstrings.txt:426 msgid "Hardened Base Structure Materials" msgstr "中階強化建æ一型" @@ -3007,7 +3007,7 @@ msgstr "中階強化建æ一型" #: data/base/messages/strings/names.txt:851 #: data/base/messages/strings/resstrings.txt:412 #: data/mp/messages/resmessages2.rmsg:395 -#: data/mp/messages/strings/names.txt:862 +#: data/mp/messages/strings/names.txt:865 #: data/mp/messages/strings/resstrings.txt:438 msgid "Robotic VTOL Production" msgstr "中階自動化VTOL生產" @@ -3043,7 +3043,7 @@ msgstr "VTOL補給時間縮短" #: data/base/messages/strings/names.txt:843 #: data/base/messages/strings/resstrings.txt:422 #: data/mp/messages/resmessages2.rmsg:408 -#: data/mp/messages/strings/names.txt:854 +#: data/mp/messages/strings/names.txt:857 #: data/mp/messages/strings/resstrings.txt:448 msgid "Automated VTOL Rearming" msgstr "åˆéšŽè‡ªå‹•åŒ–VTOL補給一型" @@ -3174,7 +3174,7 @@ msgstr "需è¦çš„資æºåŠç”Ÿç”¢æ™‚間比眼é¡è›‡å¤š" #: data/base/messages/strings/names.txt:945 #: data/base/messages/strings/resstrings.txt:560 #: data/mp/messages/resmessages2.rmsg:499 -#: data/mp/messages/strings/names.txt:958 +#: data/mp/messages/strings/names.txt:961 #: data/mp/messages/strings/resstrings.txt:593 msgid "Turbo-Charged Engine" msgstr "渦輪增壓引擎一型" @@ -3852,14 +3852,14 @@ msgstr "蒸氣渦輪增加能æºè¼¸å‡ºæ•ˆçŽ‡" #: data/base/messages/resmessages3.rmsg:447 #: data/base/messages/strings/names.txt:838 #: data/mp/messages/resmessages3.rmsg:447 -#: data/mp/messages/strings/names.txt:849 +#: data/mp/messages/strings/names.txt:852 msgid "Neural Synapse Research Brain" msgstr "神經çªè§¸æ™ºæ…§ç ”究一型" #: data/base/messages/resmessages3.rmsg:460 #: data/base/messages/strings/names.txt:811 #: data/mp/messages/resmessages3.rmsg:460 -#: data/mp/messages/strings/names.txt:822 +#: data/mp/messages/strings/names.txt:825 msgid "Advanced Base Structure Materials" msgstr "高階強化建æ一型" @@ -3871,14 +3871,14 @@ msgstr "高密度基礎建築ææ–™" #: data/base/messages/resmessages3.rmsg:486 #: data/base/messages/strings/names.txt:854 #: data/mp/messages/resmessages3.rmsg:486 -#: data/mp/messages/strings/names.txt:865 +#: data/mp/messages/strings/names.txt:868 msgid "Advanced VTOL Production" msgstr "高階自動化VTOL 生產" #: data/base/messages/resmessages3.rmsg:499 #: data/base/messages/strings/names.txt:846 #: data/mp/messages/resmessages3.rmsg:499 -#: data/mp/messages/strings/names.txt:857 +#: data/mp/messages/strings/names.txt:860 msgid "Robotic VTOL Rearming" msgstr "中階自動化VTOL補給一型" @@ -4016,7 +4016,7 @@ msgstr "éžå¸¸è²´..." #: data/base/messages/resmessages3.rmsg:668 #: data/base/messages/strings/names.txt:948 #: data/mp/messages/resmessages3.rmsg:668 -#: data/mp/messages/strings/names.txt:961 +#: data/mp/messages/strings/names.txt:964 msgid "Gas Turbine Engine" msgstr "燃氣渦輪增壓引擎一型" @@ -4568,14 +4568,17 @@ msgid "Laser designator paints and guides rounds to the target" msgstr "雷射指å‘器æ供武器導引指å‘目標功能" #: data/base/messages/strings/cam1strings.txt:3 +#: data/base/sequenceaudio/cam1/c001.txa:12 msgid "OBJECTIVE: Locate and recover neural synapse technology" msgstr "目標:æœå°‹ä¸¦ç²å¾—神經çªè§¸ç§‘技" #: data/base/messages/strings/cam1strings.txt:4 +#: data/base/sequenceaudio/cam1/c001.txa:13 msgid "Establish a base, then search for a Pre-Collapse structure." msgstr "建立一個基地並æœå°‹æ–‡æ˜Žçš„éºè·¡" #: data/base/messages/strings/cam1strings.txt:5 +#: data/base/sequenceaudio/cam1/c001.txa:14 msgid "This structure contains technology vital for the success of the Project." msgstr "這個éºè·¡å­˜åœ¨è‘—å°æˆ‘們的計畫來說相當é‡è¦çš„科技" @@ -4932,14 +4935,18 @@ msgid "We'll keep you informed of further developments" msgstr "我們會æŒçºŒé€šçŸ¥ä½ æ–°çš„發展" #: data/base/messages/strings/cam1strings.txt:157 +#: data/base/sequenceaudio/cam1/c001end.txt:7 msgid "Commander you are to assist Team Beta" msgstr "指æ®å®˜ï¼ç«‹åˆ»æ´¾å…µå”助BETA中隊ï¼" #: data/base/messages/strings/cam2strings.txt:4 +#: data/base/sequenceaudio/cam2/c002.txa:8 +#: data/base/sequenceaudio/cam2/c002.txa:14 msgid "BETA BASE MISSION: Eastern Sector" msgstr "BETA基地任務:æ±éƒ¨åœ°å€" #: data/base/messages/strings/cam2strings.txt:5 +#: data/base/sequenceaudio/cam2/c002.txa:9 msgid "Upon arrival you are to assume command of the base." msgstr "當你的部隊抵é”此地,你將負擔起這個基地的指æ®ä»»å‹™" @@ -4948,16 +4955,19 @@ msgid "You must defend it and hold it." msgstr "你必須防禦所有的攻擊並ä¿ä½é€™å€‹åŸºåœ°" #: data/base/messages/strings/cam2strings.txt:9 +#: data/base/sequenceaudio/cam2/c002.txa:16 msgid "BETA BASE MISSION: Defend and Fortify" msgstr "BETA基地任務:防禦並建造防禦工事" #: data/base/messages/strings/cam2strings.txt:10 #: data/base/messages/strings/cam2strings.txt:33 +#: data/base/sequenceaudio/cam2/c002.txa:17 msgid "Be sure to fortify the perimeter and establish anti-aircraft defenses." msgstr "防禦基地的週邊並建造防空武力系統" #: data/base/messages/strings/cam2strings.txt:11 #: data/base/messages/strings/cam2strings.txt:34 +#: data/base/sequenceaudio/cam2/c002.txa:18 msgid "New technologies are available." msgstr "å¯ä½¿ç”¨æ–°çš„科技" @@ -5254,6 +5264,8 @@ msgid "Good luck, Commander." msgstr "ç¥ä½ å¥½é‹ï¼ŒæŒ‡æ®å®˜ã€‚" #: data/base/messages/strings/cam3strings.txt:4 +#: data/base/sequenceaudio/cam3/c003.txa:4 +#: data/base/sequenceaudio/cam3/c003.txa:14 msgid "TRANSPORT MISSION: Northern Sector" msgstr "é‹è¼¸ä»»å‹™ï¼šåŒ—方地å€" @@ -5262,6 +5274,7 @@ msgid "Congratulations on your successful evacuation of Beta Base." msgstr "æ­å–œä½ ï¼æˆåŠŸçš„ç–散了BETA基地" #: data/base/messages/strings/cam3strings.txt:6 +#: data/base/sequenceaudio/cam3/c003.txa:6 msgid "NEXUS has gained access to nuclear weapons and is determined to destroy the Project." msgstr "NEXUS已經æˆåŠŸçš„控制了核彈系統並決定è¦æ‘§æ¯€Project" @@ -5270,10 +5283,12 @@ msgid "Take your forces to the Northern Sector" msgstr "帶領你的部隊往北方å‰é€²" #: data/base/messages/strings/cam3strings.txt:10 +#: data/base/sequenceaudio/cam3/c003.txa:15 msgid "Once at the mountains secure an LZ. Then establish a forward base." msgstr "在山谷中確ä¿é™è½é»žçš„安全,並建立一個å‰é€²åŸºåœ°" #: data/base/messages/strings/cam3strings.txt:11 +#: data/base/sequenceaudio/cam3/c003.txa:16 msgid "Team Gamma will contact you there." msgstr "GAMMA中隊會在那裡跟你è¯çµ¡" @@ -5282,6 +5297,7 @@ msgid "TRANSPORT MISSION: Establish A Forward Base" msgstr "é‹è¼¸ä»»å‹™ï¼šå»ºç«‹ä¸€å€‹å‰é€²åŸºåœ°" #: data/base/messages/strings/cam3strings.txt:15 +#: data/base/sequenceaudio/cam3/c003.txt:7 msgid "Commander, the success of the Project lies with you." msgstr "指æ®å®˜ï¼ŒProjectçš„æˆåŠŸè¦ä»°è³´ä½ äº†" @@ -5308,6 +5324,7 @@ msgstr "我們正在傳é€é è¿‘飛彈發射點ä½ç½®çš„é™è½é»žåº§æ¨™" #: data/base/messages/strings/cam3strings.txt:25 #: data/base/messages/strings/cam3strings.txt:61 +#: data/base/sequenceaudio/cam3/cam32pl2.txt:1 msgid "Coordinate Download Completed." msgstr "座標傳é€å®Œç•¢" @@ -5747,7 +5764,7 @@ msgstr "é‹è¼¸è‰¦" #: data/mp/messages/strings/names.txt:16 #: data/mp/messages/strings/names.txt:154 #: data/mp/messages/strings/names.txt:314 -#: data/mp/messages/strings/names.txt:1473 +#: data/mp/messages/strings/names.txt:1476 msgid "Truck" msgstr "工程車" @@ -5756,7 +5773,7 @@ msgstr "工程車" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1832 #: data/mp/messages/strings/names.txt:17 #: data/mp/messages/strings/names.txt:176 -#: data/mp/messages/strings/names.txt:1832 +#: data/mp/messages/strings/names.txt:1835 msgid "Machinegun Viper Wheels" msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆæ©Ÿæ§ï¼‰" @@ -5783,7 +5800,7 @@ msgstr "履帶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆè¼•åž‹åŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:148 #: data/base/messages/strings/names.txt:1421 #: data/mp/messages/strings/names.txt:149 -#: data/mp/messages/strings/names.txt:1437 +#: data/mp/messages/strings/names.txt:1440 msgid "Heavy Machinegun Cobra Half-tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" @@ -5815,7 +5832,7 @@ msgstr "åŠå±¥å¸¶å¼éŸ¿å°¾è›‡ä¿®ç†è»Š" #: data/base/messages/strings/names.txt:174 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1833 #: data/mp/messages/strings/names.txt:177 -#: data/mp/messages/strings/names.txt:1833 +#: data/mp/messages/strings/names.txt:1836 msgid "Twin Machinegun Viper Wheels" msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé›™ç®¡æ©Ÿæ§ï¼‰" @@ -5832,7 +5849,7 @@ msgstr "åŠå±¥å¸¶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" #: data/base/messages/strings/names.txt:177 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1840 #: data/mp/messages/strings/names.txt:180 -#: data/mp/messages/strings/names.txt:1840 +#: data/mp/messages/strings/names.txt:1843 msgid "Heavy Machinegun Viper Tracks" msgstr "履帶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" @@ -5859,7 +5876,7 @@ msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" #: data/base/messages/strings/names.txt:183 #: data/mp/messages/strings/names.txt:186 -#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1365 msgid "Medium Cannon Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆä¸­åž‹åŠ è¾²ç ²ï¼‰" @@ -5871,7 +5888,7 @@ msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:185 #: data/base/messages/strings/names.txt:1344 #: data/mp/messages/strings/names.txt:188 -#: data/mp/messages/strings/names.txt:1360 +#: data/mp/messages/strings/names.txt:1363 msgid "Cobra Truck" msgstr "眼é¡è›‡å·¥ç¨‹è»Š" @@ -5882,7 +5899,7 @@ msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡é›·é”車" #: data/base/messages/strings/names.txt:187 #: data/mp/messages/strings/names.txt:190 -#: data/mp/messages/strings/names.txt:1361 +#: data/mp/messages/strings/names.txt:1364 msgid "Flamer Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆç«ç„°å™´å°„)" @@ -5899,7 +5916,7 @@ msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆæŒ‡æ®å®˜ï¼‰" #: data/base/messages/strings/names.txt:190 #: data/base/messages/strings/names.txt:1420 #: data/mp/messages/strings/names.txt:193 -#: data/mp/messages/strings/names.txt:1436 +#: data/mp/messages/strings/names.txt:1439 msgid "Lancer Cobra Half-tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" @@ -5914,26 +5931,26 @@ msgid "Light Cannon Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆè¼•åž‹åŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:194 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1357 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1923 #: data/mp/messages/strings/names.txt:197 -#: data/mp/messages/strings/names.txt:1923 +#: data/mp/messages/strings/names.txt:1926 msgid "Medium Cannon Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆä¸­åž‹åŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:195 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1848 #: data/mp/messages/strings/names.txt:198 -#: data/mp/messages/strings/names.txt:1359 -#: data/mp/messages/strings/names.txt:1513 -#: data/mp/messages/strings/names.txt:1848 +#: data/mp/messages/strings/names.txt:1362 +#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1851 msgid "Heavy Cannon Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜é€ŸåŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:196 #: data/base/messages/strings/names.txt:1422 #: data/mp/messages/strings/names.txt:199 -#: data/mp/messages/strings/names.txt:1438 +#: data/mp/messages/strings/names.txt:1441 msgid "Command Turret Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆæŒ‡æ®å®˜ï¼‰" @@ -5997,7 +6014,7 @@ msgstr "平民" #: data/base/messages/strings/names.txt:537 #: data/mp/messages/strings/names.txt:215 #: data/mp/messages/strings/names.txt:221 -#: data/mp/messages/strings/names.txt:544 +#: data/mp/messages/strings/names.txt:545 msgid "Machinegunner" msgstr "生化人步兵(機æ§ï¼‰" @@ -6006,9 +6023,9 @@ msgstr "生化人步兵(機æ§ï¼‰" #: data/base/messages/strings/names.txt:538 #: data/base/messages/strings/names.txt:1058 #: data/mp/messages/strings/names.txt:216 -#: data/mp/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:545 -#: data/mp/messages/strings/names.txt:1071 +#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:546 +#: data/mp/messages/strings/names.txt:1074 msgid "Flamer" msgstr "ç«ç„°å™´å°„" @@ -6018,8 +6035,8 @@ msgstr "ç«ç„°å™´å°„" #: data/base/messages/strings/names.txt:536 #: data/mp/messages/strings/names.txt:217 #: data/mp/messages/strings/names.txt:224 -#: data/mp/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:543 +#: data/mp/messages/strings/names.txt:530 +#: data/mp/messages/strings/names.txt:544 msgid "Lancer" msgstr "æ§é¨Žå…µç«ç®­" @@ -6028,7 +6045,7 @@ msgstr "æ§é¨Žå…µç«ç®­" #: data/base/messages/strings/names.txt:534 #: data/mp/messages/strings/names.txt:218 #: data/mp/messages/strings/names.txt:223 -#: data/mp/messages/strings/names.txt:541 +#: data/mp/messages/strings/names.txt:542 msgid "Heavy Gunner" msgstr "生化人步兵(é‡æ©Ÿæ§ï¼‰" @@ -6122,8 +6139,8 @@ msgstr "" #: data/base/messages/strings/names.txt:542 #: data/base/messages/strings/names.txt:648 #: data/mp/messages/strings/names.txt:303 -#: data/mp/messages/strings/names.txt:549 -#: data/mp/messages/strings/names.txt:655 +#: data/mp/messages/strings/names.txt:550 +#: data/mp/messages/strings/names.txt:656 msgid "Command Turret" msgstr "指æ®å®˜" @@ -6227,14 +6244,14 @@ msgstr "åŠå±¥å¸¶å¼ä¸‰åž‹" #: data/base/messages/strings/names.txt:330 #: data/base/messages/strings/names.txt:693 #: data/mp/messages/strings/names.txt:333 -#: data/mp/messages/strings/names.txt:702 +#: data/mp/messages/strings/names.txt:703 msgid "Cyborg Propulsion II" msgstr "生化人步兵二型" #: data/base/messages/strings/names.txt:331 #: data/base/messages/strings/names.txt:694 #: data/mp/messages/strings/names.txt:334 -#: data/mp/messages/strings/names.txt:703 +#: data/mp/messages/strings/names.txt:704 msgid "Cyborg Propulsion III" msgstr "生化人步兵三型" @@ -6256,7 +6273,7 @@ msgstr "野蠻人步兵" #: data/base/messages/strings/names.txt:341 #: data/base/messages/strings/names.txt:692 #: data/mp/messages/strings/names.txt:344 -#: data/mp/messages/strings/names.txt:701 +#: data/mp/messages/strings/names.txt:702 msgid "Cyborg Propulsion" msgstr "生化人步兵" @@ -6284,8 +6301,8 @@ msgstr "" #: data/base/messages/strings/names.txt:423 #: data/base/messages/strings/names.txt:888 #: data/mp/messages/strings/names.txt:373 -#: data/mp/messages/strings/names.txt:430 -#: data/mp/messages/strings/names.txt:901 +#: data/mp/messages/strings/names.txt:431 +#: data/mp/messages/strings/names.txt:904 msgid "Sensor Tower" msgstr "é›·é”å¡”" @@ -6293,15 +6310,15 @@ msgstr "é›·é”å¡”" #: data/base/messages/strings/names.txt:424 #: data/base/messages/strings/names.txt:889 #: data/mp/messages/strings/names.txt:374 -#: data/mp/messages/strings/names.txt:431 -#: data/mp/messages/strings/names.txt:902 +#: data/mp/messages/strings/names.txt:432 +#: data/mp/messages/strings/names.txt:905 msgid "Hardened Sensor Tower" msgstr "強化雷é”å¡”" #: data/base/messages/strings/names.txt:369 #: data/base/messages/strings/names.txt:887 #: data/mp/messages/strings/names.txt:375 -#: data/mp/messages/strings/names.txt:900 +#: data/mp/messages/strings/names.txt:903 msgid "Sensor Turret" msgstr "é›·é”" @@ -6325,7 +6342,7 @@ msgstr "å砲兵雷é”" #: data/base/messages/strings/names.txt:376 #: data/base/messages/strings/names.txt:906 #: data/mp/messages/strings/names.txt:383 -#: data/mp/messages/strings/names.txt:919 +#: data/mp/messages/strings/names.txt:922 msgid "VTOL Strike Turret" msgstr "VTOL攻擊雷é”" @@ -6361,7 +6378,7 @@ msgstr "工廠" #: data/base/messages/strings/names.txt:386 #: data/base/messages/strings/names.txt:793 #: data/mp/messages/strings/names.txt:393 -#: data/mp/messages/strings/names.txt:804 +#: data/mp/messages/strings/names.txt:807 msgid "Factory Module" msgstr "工廠模組" @@ -6373,7 +6390,7 @@ msgstr "發電廠" #: data/base/messages/strings/names.txt:388 #: data/base/messages/strings/names.txt:816 #: data/mp/messages/strings/names.txt:395 -#: data/mp/messages/strings/names.txt:827 +#: data/mp/messages/strings/names.txt:830 msgid "Power Module" msgstr "發電模組" @@ -6385,7 +6402,7 @@ msgstr "研發中心" #: data/base/messages/strings/names.txt:390 #: data/base/messages/strings/names.txt:831 #: data/mp/messages/strings/names.txt:397 -#: data/mp/messages/strings/names.txt:842 +#: data/mp/messages/strings/names.txt:845 msgid "Research Module" msgstr "研發模組" @@ -6397,7 +6414,7 @@ msgstr "破壞建築物" #: data/base/messages/strings/names.txt:393 #: data/base/messages/strings/names.txt:1448 #: data/mp/messages/strings/names.txt:400 -#: data/mp/messages/strings/names.txt:1464 +#: data/mp/messages/strings/names.txt:1467 msgid "Repair Center" msgstr "ä¿®ç†å» " @@ -6418,8 +6435,8 @@ msgstr "鈦鋼筋牆" #: data/base/messages/strings/names.txt:398 #: data/base/messages/strings/names.txt:850 -#: data/mp/messages/strings/names.txt:405 -#: data/mp/messages/strings/names.txt:861 +#: data/mp/messages/strings/names.txt:406 +#: data/mp/messages/strings/names.txt:864 msgid "VTOL Factory" msgstr "VTOL工廠" @@ -6430,30 +6447,30 @@ msgstr "地ç„ç«ç ²å°" #: data/base/messages/strings/names.txt:403 #: data/base/messages/strings/names.txt:773 -#: data/mp/messages/strings/names.txt:410 -#: data/mp/messages/strings/names.txt:784 +#: data/mp/messages/strings/names.txt:411 +#: data/mp/messages/strings/names.txt:787 msgid "Inferno Hardpoint" msgstr "地ç„ç«è¦å¡ž" #: data/base/messages/strings/names.txt:404 #: data/base/messages/strings/names.txt:747 -#: data/mp/messages/strings/names.txt:411 -#: data/mp/messages/strings/names.txt:758 +#: data/mp/messages/strings/names.txt:412 +#: data/mp/messages/strings/names.txt:761 msgid "Pepperpot Pit" msgstr "旋轉迫擊砲砲å‘" #: data/base/messages/strings/names.txt:405 #: data/base/messages/strings/names.txt:488 #: data/base/messages/strings/names.txt:745 -#: data/mp/messages/strings/names.txt:412 -#: data/mp/messages/strings/names.txt:495 -#: data/mp/messages/strings/names.txt:756 +#: data/mp/messages/strings/names.txt:413 +#: data/mp/messages/strings/names.txt:496 +#: data/mp/messages/strings/names.txt:759 msgid "Hellstorm Emplacement" msgstr "地ç„風暴砲å°" #: data/base/messages/strings/names.txt:409 #: data/base/messages/strings/names.txt:715 -#: data/mp/messages/strings/names.txt:726 +#: data/mp/messages/strings/names.txt:729 msgid "Tornado AA Flak Site" msgstr "é¾æ²é¢¨ç´šé«˜å°„ç ²" @@ -6464,27 +6481,27 @@ msgstr "暴風級高射砲" #: data/base/messages/strings/names.txt:411 #: data/base/messages/strings/names.txt:713 -#: data/mp/messages/strings/names.txt:418 -#: data/mp/messages/strings/names.txt:724 +#: data/mp/messages/strings/names.txt:419 +#: data/mp/messages/strings/names.txt:727 msgid "Hurricane AA Site" msgstr "颶風級高射砲" #: data/base/messages/strings/names.txt:412 #: data/base/messages/strings/names.txt:714 -#: data/mp/messages/strings/names.txt:419 -#: data/mp/messages/strings/names.txt:725 +#: data/mp/messages/strings/names.txt:420 +#: data/mp/messages/strings/names.txt:728 msgid "Whirlwind AA Site" msgstr "旋風級高射砲" #: data/base/messages/strings/names.txt:414 #: data/base/messages/strings/names.txt:726 -#: data/mp/messages/strings/names.txt:421 -#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:422 +#: data/mp/messages/strings/names.txt:740 msgid "Ripple Rocket Battery" msgstr "多管ç«ç®­ç ²å°" #: data/base/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:424 +#: data/mp/messages/strings/names.txt:425 msgid "Assault Cannon Guard Tower" msgstr "çªæ“ŠåŠ è¾²ç ²é˜²è¡›å¡”" @@ -6495,29 +6512,29 @@ msgstr "çªæ“Šæ§é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:419 #: data/base/messages/strings/names.txt:770 -#: data/mp/messages/strings/names.txt:426 -#: data/mp/messages/strings/names.txt:781 +#: data/mp/messages/strings/names.txt:427 +#: data/mp/messages/strings/names.txt:784 msgid "Assault Gun Hardpoint" msgstr "çªæ“Šæ§è¦å¡ž" #: data/base/messages/strings/names.txt:420 #: data/base/messages/strings/names.txt:771 -#: data/mp/messages/strings/names.txt:427 -#: data/mp/messages/strings/names.txt:782 +#: data/mp/messages/strings/names.txt:428 +#: data/mp/messages/strings/names.txt:785 msgid "Assault Cannon Hardpoint" msgstr "çªæ“ŠåŠ è¾²ç ²è¦å¡ž" #: data/base/messages/strings/names.txt:426 #: data/base/messages/strings/names.txt:892 -#: data/mp/messages/strings/names.txt:433 -#: data/mp/messages/strings/names.txt:905 +#: data/mp/messages/strings/names.txt:434 +#: data/mp/messages/strings/names.txt:908 msgid "CB Tower" msgstr "å砲兵雷é”" #: data/base/messages/strings/names.txt:427 #: data/base/messages/strings/names.txt:899 -#: data/mp/messages/strings/names.txt:434 -#: data/mp/messages/strings/names.txt:912 +#: data/mp/messages/strings/names.txt:435 +#: data/mp/messages/strings/names.txt:915 msgid "VTOL CB Tower" msgstr "VTOLå砲兵雷é”" @@ -6527,80 +6544,80 @@ msgstr "VTOLé›·é”" #: data/base/messages/strings/names.txt:431 #: data/base/messages/strings/names.txt:764 -#: data/mp/messages/strings/names.txt:438 -#: data/mp/messages/strings/names.txt:775 +#: data/mp/messages/strings/names.txt:439 +#: data/mp/messages/strings/names.txt:778 msgid "Heavy Machinegun Hardpoint" msgstr "é‡æ©Ÿæ§è¦å¡ž" #: data/base/messages/strings/names.txt:432 #: data/base/messages/strings/names.txt:765 -#: data/mp/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:776 +#: data/mp/messages/strings/names.txt:440 +#: data/mp/messages/strings/names.txt:779 msgid "Light Cannon Hardpoint" msgstr "輕型加農砲è¦å¡ž" #: data/base/messages/strings/names.txt:433 #: data/base/messages/strings/names.txt:766 -#: data/mp/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:777 +#: data/mp/messages/strings/names.txt:441 +#: data/mp/messages/strings/names.txt:780 msgid "Medium Cannon Hardpoint" msgstr "中型加農砲è¦å¡ž" #: data/base/messages/strings/names.txt:434 #: data/base/messages/strings/names.txt:767 -#: data/mp/messages/strings/names.txt:441 -#: data/mp/messages/strings/names.txt:778 +#: data/mp/messages/strings/names.txt:442 +#: data/mp/messages/strings/names.txt:781 msgid "Heavy Cannon Hardpoint" msgstr "é‡åž‹åŠ è¾²ç ²è¦å¡ž" #: data/base/messages/strings/names.txt:435 #: data/base/messages/strings/names.txt:768 -#: data/mp/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:779 +#: data/mp/messages/strings/names.txt:443 +#: data/mp/messages/strings/names.txt:782 msgid "Flamer Hardpoint" msgstr "ç«ç„°å™´å°„è¦å¡ž" #: data/base/messages/strings/names.txt:436 #: data/base/messages/strings/names.txt:769 -#: data/mp/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:780 +#: data/mp/messages/strings/names.txt:444 +#: data/mp/messages/strings/names.txt:783 msgid "Lancer Hardpoint" msgstr "æ§é¨Žå…µç«ç®­è¦å¡ž" #: data/base/messages/strings/names.txt:438 #: data/base/messages/strings/names.txt:755 -#: data/mp/messages/strings/names.txt:445 -#: data/mp/messages/strings/names.txt:766 +#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:769 msgid "Machinegun Guard Tower" msgstr "æ©Ÿæ§é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:439 -#: data/mp/messages/strings/names.txt:446 +#: data/mp/messages/strings/names.txt:447 msgid "Twin Machinegun Guard Tower" msgstr "雙管機æ§é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:440 -#: data/mp/messages/strings/names.txt:447 -#: data/mp/messages/strings/names.txt:767 +#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:770 msgid "Heavy Machinegun Tower" msgstr "é‡æ©Ÿæ§é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:441 #: data/base/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:448 +#: data/mp/messages/strings/names.txt:449 msgid "Flamer Guard Tower" msgstr "ç«ç„°å™´å°„防衛塔" #: data/base/messages/strings/names.txt:442 -#: data/mp/messages/strings/names.txt:449 -#: data/mp/messages/strings/names.txt:748 -#: data/mp/messages/strings/names.txt:769 +#: data/mp/messages/strings/names.txt:450 +#: data/mp/messages/strings/names.txt:751 +#: data/mp/messages/strings/names.txt:772 msgid "Lancer Tower" msgstr "æ§é¨Žå…µç«ç®­é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:443 -#: data/mp/messages/strings/names.txt:450 -#: data/mp/messages/strings/names.txt:770 +#: data/mp/messages/strings/names.txt:451 +#: data/mp/messages/strings/names.txt:773 #, fuzzy msgid "Mini-Rocket Tower" msgstr "è¿·ä½ ç«ç®­ç‚®é˜²è¡›å¡”" @@ -6608,88 +6625,88 @@ msgstr "è¿·ä½ ç«ç®­ç‚®é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:446 #: data/base/messages/strings/names.txt:496 #: data/base/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:453 -#: data/mp/messages/strings/names.txt:503 -#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:454 +#: data/mp/messages/strings/names.txt:504 +#: data/mp/messages/strings/names.txt:747 msgid "Machinegun Bunker" msgstr "æ©Ÿæ§ç¢‰å ¡" #: data/base/messages/strings/names.txt:447 #: data/base/messages/strings/names.txt:498 -#: data/mp/messages/strings/names.txt:454 -#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:455 +#: data/mp/messages/strings/names.txt:506 msgid "Twin Machinegun Bunker" msgstr "雙管機æ§ç¢‰å ¡" #: data/base/messages/strings/names.txt:448 #: data/base/messages/strings/names.txt:500 #: data/base/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:455 -#: data/mp/messages/strings/names.txt:507 -#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:456 +#: data/mp/messages/strings/names.txt:508 +#: data/mp/messages/strings/names.txt:748 msgid "Heavy Machinegun Bunker" msgstr "é‡æ©Ÿæ§ç¢‰å ¡" #: data/base/messages/strings/names.txt:449 #: data/base/messages/strings/names.txt:735 -#: data/mp/messages/strings/names.txt:456 -#: data/mp/messages/strings/names.txt:746 +#: data/mp/messages/strings/names.txt:457 +#: data/mp/messages/strings/names.txt:749 msgid "Light Cannon Bunker" msgstr "輕型加農砲碉堡" #: data/base/messages/strings/names.txt:450 #: data/base/messages/strings/names.txt:736 -#: data/mp/messages/strings/names.txt:457 -#: data/mp/messages/strings/names.txt:747 +#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:750 msgid "Flamer Bunker" msgstr "ç«ç„°å™´å°„碉堡" #: data/base/messages/strings/names.txt:451 #: data/base/messages/strings/names.txt:737 -#: data/mp/messages/strings/names.txt:458 +#: data/mp/messages/strings/names.txt:459 msgid "Lancer Bunker" msgstr "æ§é¨Žå…µç«ç®­ç¢‰å ¡" #: data/base/messages/strings/names.txt:454 #: data/base/messages/strings/names.txt:456 #: data/base/messages/strings/names.txt:752 -#: data/mp/messages/strings/names.txt:461 -#: data/mp/messages/strings/names.txt:463 -#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:462 +#: data/mp/messages/strings/names.txt:464 +#: data/mp/messages/strings/names.txt:766 msgid "Tank Traps" msgstr "å¦å…‹é™·é˜±" #: data/base/messages/strings/names.txt:455 #: data/base/messages/strings/names.txt:457 #: data/base/messages/strings/names.txt:753 -#: data/mp/messages/strings/names.txt:462 -#: data/mp/messages/strings/names.txt:464 -#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:463 +#: data/mp/messages/strings/names.txt:465 +#: data/mp/messages/strings/names.txt:767 msgid "Dragon's Teeth" msgstr "é¾ä¹‹ç‰™" #: data/base/messages/strings/names.txt:460 #: data/base/messages/strings/names.txt:842 -#: data/mp/messages/strings/names.txt:467 -#: data/mp/messages/strings/names.txt:853 +#: data/mp/messages/strings/names.txt:468 +#: data/mp/messages/strings/names.txt:856 msgid "VTOL Rearming Pad" msgstr "VTOL補給點" #: data/base/messages/strings/names.txt:463 #: data/base/messages/strings/names.txt:484 #: data/base/messages/strings/names.txt:719 -#: data/mp/messages/strings/names.txt:470 -#: data/mp/messages/strings/names.txt:491 -#: data/mp/messages/strings/names.txt:730 +#: data/mp/messages/strings/names.txt:471 +#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:733 msgid "Howitzer Emplacement" msgstr "榴彈砲砲å°" #: data/base/messages/strings/names.txt:464 #: data/base/messages/strings/names.txt:740 #: data/base/messages/strings/names.txt:1362 -#: data/mp/messages/strings/names.txt:471 -#: data/mp/messages/strings/names.txt:751 -#: data/mp/messages/strings/names.txt:1378 +#: data/mp/messages/strings/names.txt:472 +#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:1381 msgid "Flashlight Emplacement" msgstr "激光雷射砲å°" @@ -6700,139 +6717,139 @@ msgstr "激光雷射è¦å¡ž" #: data/base/messages/strings/names.txt:467 #: data/base/messages/strings/names.txt:777 -#: data/mp/messages/strings/names.txt:474 -#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:475 +#: data/mp/messages/strings/names.txt:791 msgid "Rail Gun Hardpoint" msgstr "軌é“ç ²è¦å¡ž" #: data/base/messages/strings/names.txt:469 #: data/base/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:476 -#: data/mp/messages/strings/names.txt:772 +#: data/mp/messages/strings/names.txt:477 +#: data/mp/messages/strings/names.txt:775 msgid "Scourge Missile Tower" msgstr "天譴飛彈防衛塔" #: data/base/messages/strings/names.txt:470 #: data/base/messages/strings/names.txt:762 -#: data/mp/messages/strings/names.txt:477 -#: data/mp/messages/strings/names.txt:773 +#: data/mp/messages/strings/names.txt:478 +#: data/mp/messages/strings/names.txt:776 msgid "Needle Gun Tower" msgstr "é‡åˆºç ²é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:471 #: data/base/messages/strings/names.txt:743 -#: data/mp/messages/strings/names.txt:478 -#: data/mp/messages/strings/names.txt:754 +#: data/mp/messages/strings/names.txt:479 +#: data/mp/messages/strings/names.txt:757 msgid "Gauss Cannon Emplacement" msgstr "高斯加農砲砲å°" #: data/base/messages/strings/names.txt:474 #: data/base/messages/strings/names.txt:1033 -#: data/mp/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:1046 +#: data/mp/messages/strings/names.txt:482 +#: data/mp/messages/strings/names.txt:1049 msgid "Light Cannon" msgstr "輕型加農砲" #: data/base/messages/strings/names.txt:475 #: data/base/messages/strings/names.txt:1034 -#: data/mp/messages/strings/names.txt:482 -#: data/mp/messages/strings/names.txt:1047 +#: data/mp/messages/strings/names.txt:483 +#: data/mp/messages/strings/names.txt:1050 msgid "Medium Cannon" msgstr "中型加農砲" #: data/base/messages/strings/names.txt:476 #: data/base/messages/strings/names.txt:1035 -#: data/mp/messages/strings/names.txt:483 -#: data/mp/messages/strings/names.txt:1048 +#: data/mp/messages/strings/names.txt:484 +#: data/mp/messages/strings/names.txt:1051 msgid "Heavy Cannon" msgstr "é‡åž‹åŠ è¾²ç ²" #: data/base/messages/strings/names.txt:477 #: data/base/messages/strings/names.txt:1036 -#: data/mp/messages/strings/names.txt:484 -#: data/mp/messages/strings/names.txt:1049 +#: data/mp/messages/strings/names.txt:485 +#: data/mp/messages/strings/names.txt:1052 msgid "Hyper Velocity Cannon" msgstr "高速加農砲" #: data/base/messages/strings/names.txt:478 #: data/base/messages/strings/names.txt:1037 -#: data/mp/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:1050 +#: data/mp/messages/strings/names.txt:486 +#: data/mp/messages/strings/names.txt:1053 msgid "Assault Cannon" msgstr "çªæ“ŠåŠ è¾²ç ²" #: data/base/messages/strings/names.txt:481 -#: data/mp/messages/strings/names.txt:488 +#: data/mp/messages/strings/names.txt:489 msgid "Inferno" msgstr "地ç„ç«" #: data/base/messages/strings/names.txt:483 #: data/base/messages/strings/names.txt:1061 -#: data/mp/messages/strings/names.txt:490 -#: data/mp/messages/strings/names.txt:1074 +#: data/mp/messages/strings/names.txt:491 +#: data/mp/messages/strings/names.txt:1077 msgid "Howitzer" msgstr "榴彈砲" #: data/base/messages/strings/names.txt:485 -#: data/mp/messages/strings/names.txt:492 +#: data/mp/messages/strings/names.txt:493 msgid "Ground Shaker" msgstr "撼地者級榴彈砲" #: data/base/messages/strings/names.txt:486 #: data/base/messages/strings/names.txt:722 #: data/base/messages/strings/names.txt:1453 -#: data/mp/messages/strings/names.txt:493 -#: data/mp/messages/strings/names.txt:733 -#: data/mp/messages/strings/names.txt:1469 +#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:736 +#: data/mp/messages/strings/names.txt:1472 msgid "Ground Shaker Emplacement" msgstr "撼地者級榴彈砲砲塔" #: data/base/messages/strings/names.txt:487 -#: data/mp/messages/strings/names.txt:494 +#: data/mp/messages/strings/names.txt:495 msgid "Hellstorm" msgstr "地ç„風暴" #: data/base/messages/strings/names.txt:492 #: data/base/messages/strings/names.txt:1083 -#: data/mp/messages/strings/names.txt:499 -#: data/mp/messages/strings/names.txt:1096 +#: data/mp/messages/strings/names.txt:500 +#: data/mp/messages/strings/names.txt:1099 msgid "Pulse Laser" msgstr "脈è¡é›·å°„" #: data/base/messages/strings/names.txt:495 #: data/base/messages/strings/names.txt:540 #: data/base/messages/strings/names.txt:1098 -#: data/mp/messages/strings/names.txt:502 -#: data/mp/messages/strings/names.txt:547 -#: data/mp/messages/strings/names.txt:1111 +#: data/mp/messages/strings/names.txt:503 +#: data/mp/messages/strings/names.txt:548 +#: data/mp/messages/strings/names.txt:1114 msgid "Machinegun" msgstr "æ©Ÿæ§" #: data/base/messages/strings/names.txt:497 #: data/base/messages/strings/names.txt:1099 -#: data/mp/messages/strings/names.txt:504 -#: data/mp/messages/strings/names.txt:1112 +#: data/mp/messages/strings/names.txt:505 +#: data/mp/messages/strings/names.txt:1115 msgid "Twin Machinegun" msgstr "雙管機æ§" #: data/base/messages/strings/names.txt:499 #: data/base/messages/strings/names.txt:1100 -#: data/mp/messages/strings/names.txt:506 -#: data/mp/messages/strings/names.txt:1113 +#: data/mp/messages/strings/names.txt:507 +#: data/mp/messages/strings/names.txt:1116 msgid "Heavy Machinegun" msgstr "é‡æ©Ÿæ§" #: data/base/messages/strings/names.txt:501 #: data/base/messages/strings/names.txt:1101 -#: data/mp/messages/strings/names.txt:508 -#: data/mp/messages/strings/names.txt:1114 +#: data/mp/messages/strings/names.txt:509 +#: data/mp/messages/strings/names.txt:1117 msgid "Assault Gun" msgstr "çªæ“Šæ§" #: data/base/messages/strings/names.txt:504 #: data/base/messages/strings/names.txt:1120 -#: data/mp/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:1133 +#: data/mp/messages/strings/names.txt:512 +#: data/mp/messages/strings/names.txt:1136 msgid "Scourge Missile" msgstr "天譴飛彈" @@ -6843,80 +6860,80 @@ msgstr "天使飛彈" #: data/base/messages/strings/names.txt:506 #: data/base/messages/strings/names.txt:1119 -#: data/mp/messages/strings/names.txt:513 -#: data/mp/messages/strings/names.txt:1132 +#: data/mp/messages/strings/names.txt:514 +#: data/mp/messages/strings/names.txt:1135 msgid "Vindicator SAM" msgstr "æ“護者級地å°ç©ºé£›å½ˆ" #: data/base/messages/strings/names.txt:507 #: data/base/messages/strings/names.txt:1122 -#: data/mp/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:1135 +#: data/mp/messages/strings/names.txt:515 +#: data/mp/messages/strings/names.txt:1138 msgid "Archangel Missile" msgstr "大天使飛彈" #: data/base/messages/strings/names.txt:509 #: data/base/messages/strings/names.txt:1118 -#: data/mp/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:1131 +#: data/mp/messages/strings/names.txt:517 +#: data/mp/messages/strings/names.txt:1134 msgid "Avenger SAM" msgstr "復仇者級地å°ç©ºé£›å½ˆ" #: data/base/messages/strings/names.txt:511 -#: data/mp/messages/strings/names.txt:518 +#: data/mp/messages/strings/names.txt:519 msgid "VTOL Scourge Missile" msgstr "VTOL(天譴飛彈)" #: data/base/messages/strings/names.txt:513 #: data/base/messages/strings/names.txt:1138 -#: data/mp/messages/strings/names.txt:520 -#: data/mp/messages/strings/names.txt:1151 +#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:1154 msgid "Mortar" msgstr "è¿«æ“Šç ²" #: data/base/messages/strings/names.txt:514 -#: data/mp/messages/strings/names.txt:521 +#: data/mp/messages/strings/names.txt:522 msgid "Mortar Emplacement" msgstr "迫擊砲砲å°" #: data/base/messages/strings/names.txt:515 -#: data/mp/messages/strings/names.txt:522 +#: data/mp/messages/strings/names.txt:523 msgid "Bombard" msgstr "é‡è£è¿«æ“Šç ²" #: data/base/messages/strings/names.txt:516 -#: data/mp/messages/strings/names.txt:523 +#: data/mp/messages/strings/names.txt:524 msgid "Bombard Emplacement" msgstr "é‡è£è¿«æ“Šç ²ç ²å°" #: data/base/messages/strings/names.txt:517 -#: data/mp/messages/strings/names.txt:524 +#: data/mp/messages/strings/names.txt:525 msgid "Pepperpot" msgstr "旋轉迫擊砲" #: data/base/messages/strings/names.txt:518 -#: data/mp/messages/strings/names.txt:525 +#: data/mp/messages/strings/names.txt:526 msgid "Pepperpot Emplacement" msgstr "旋轉迫擊砲砲å°" #: data/base/messages/strings/names.txt:519 #: data/base/messages/strings/names.txt:1142 -#: data/mp/messages/strings/names.txt:526 -#: data/mp/messages/strings/names.txt:1155 +#: data/mp/messages/strings/names.txt:527 +#: data/mp/messages/strings/names.txt:1158 msgid "Needle Gun" msgstr "é‡åˆºç ²" #: data/base/messages/strings/names.txt:520 #: data/base/messages/strings/names.txt:1143 -#: data/mp/messages/strings/names.txt:527 -#: data/mp/messages/strings/names.txt:1156 +#: data/mp/messages/strings/names.txt:528 +#: data/mp/messages/strings/names.txt:1159 msgid "Rail Gun" msgstr "軌é“ç ²" #: data/base/messages/strings/names.txt:521 #: data/base/messages/strings/names.txt:1144 -#: data/mp/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:1157 +#: data/mp/messages/strings/names.txt:529 +#: data/mp/messages/strings/names.txt:1160 msgid "Gauss Cannon" msgstr "高斯加農砲" @@ -6926,76 +6943,76 @@ msgid "Mini-Rocket Artillery" msgstr "è¿·ä½ ç«ç®­ç‚®" #: data/base/messages/strings/names.txt:524 -#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:532 msgid "Bunker Buster" msgstr "碉堡終çµè€…" #: data/base/messages/strings/names.txt:526 #: data/base/messages/strings/names.txt:1183 -#: data/mp/messages/strings/names.txt:533 -#: data/mp/messages/strings/names.txt:1199 +#: data/mp/messages/strings/names.txt:534 +#: data/mp/messages/strings/names.txt:1202 #, fuzzy msgid "Mini-Rocket Pod" msgstr "è¿·ä½ ç«ç®­å‡ç´š" #: data/base/messages/strings/names.txt:527 #: data/base/messages/strings/names.txt:1184 -#: data/mp/messages/strings/names.txt:534 -#: data/mp/messages/strings/names.txt:1200 +#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:1203 msgid "Ripple Rockets" msgstr "多管ç«ç®­" #: data/base/messages/strings/names.txt:528 -#: data/mp/messages/strings/names.txt:535 +#: data/mp/messages/strings/names.txt:536 msgid "Tank Killer" msgstr "å¦å…‹æ®ºæ‰‹" #: data/base/messages/strings/names.txt:529 -#: data/mp/messages/strings/names.txt:536 +#: data/mp/messages/strings/names.txt:537 msgid "VTOL Bunker Buster" msgstr "VTOL(碉堡終çµè€…)" #: data/base/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:537 +#: data/mp/messages/strings/names.txt:538 #, fuzzy msgid "VTOL Mini-Rocket" msgstr "HEè¿·ä½ ç«ç®­ä¸€åž‹ï¼ˆ" #: data/base/messages/strings/names.txt:531 -#: data/mp/messages/strings/names.txt:538 +#: data/mp/messages/strings/names.txt:539 msgid "VTOL Lancer" msgstr "VTOL(æ§é¨Žå…µï¼‰" #: data/base/messages/strings/names.txt:532 -#: data/mp/messages/strings/names.txt:539 +#: data/mp/messages/strings/names.txt:540 msgid "VTOL Tank Killer" msgstr "VTOL(å¦å…‹æ®ºæ‰‹ï¼‰" #: data/base/messages/strings/names.txt:544 #: data/base/messages/strings/names.txt:980 -#: data/mp/messages/strings/names.txt:551 -#: data/mp/messages/strings/names.txt:993 +#: data/mp/messages/strings/names.txt:552 +#: data/mp/messages/strings/names.txt:996 msgid "Tornado Flak Turret" msgstr "é¾æ²é¢¨ç´šé«˜å°„ç ²" #: data/base/messages/strings/names.txt:545 #: data/base/messages/strings/names.txt:981 -#: data/mp/messages/strings/names.txt:552 -#: data/mp/messages/strings/names.txt:994 +#: data/mp/messages/strings/names.txt:553 +#: data/mp/messages/strings/names.txt:997 msgid "Cyclone Flak Turret" msgstr "暴風級高射砲" #: data/base/messages/strings/names.txt:550 #: data/base/messages/strings/names.txt:983 -#: data/mp/messages/strings/names.txt:557 -#: data/mp/messages/strings/names.txt:996 +#: data/mp/messages/strings/names.txt:558 +#: data/mp/messages/strings/names.txt:999 msgid "Whirlwind AA Turret" msgstr "旋風級高射砲" #: data/base/messages/strings/names.txt:551 #: data/base/messages/strings/names.txt:982 -#: data/mp/messages/strings/names.txt:558 -#: data/mp/messages/strings/names.txt:995 +#: data/mp/messages/strings/names.txt:559 +#: data/mp/messages/strings/names.txt:998 msgid "Hurricane AA Turret" msgstr "颶風級高射砲" @@ -7004,62 +7021,62 @@ msgid "LasSat" msgstr "雷射衛星" #: data/base/messages/strings/names.txt:560 -#: data/mp/messages/strings/names.txt:567 +#: data/mp/messages/strings/names.txt:568 msgid "VTOL Cannon" msgstr "VTOL(輕型加農砲)" #: data/base/messages/strings/names.txt:561 -#: data/mp/messages/strings/names.txt:568 +#: data/mp/messages/strings/names.txt:569 msgid "VTOL Hyper Velocity Cannon" msgstr "VTOL(高速加農砲)" #: data/base/messages/strings/names.txt:562 -#: data/mp/messages/strings/names.txt:569 +#: data/mp/messages/strings/names.txt:570 msgid "VTOL Assault Cannon" msgstr "VTOL(çªæ“ŠåŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:563 -#: data/mp/messages/strings/names.txt:570 +#: data/mp/messages/strings/names.txt:571 msgid "VTOL Pulse Laser" msgstr "VTOL(脈è¡é›·å°„)" #: data/base/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:572 +#: data/mp/messages/strings/names.txt:573 msgid "VTOL Machinegun" msgstr "VTOL(機æ§ï¼‰" #: data/base/messages/strings/names.txt:566 -#: data/mp/messages/strings/names.txt:573 +#: data/mp/messages/strings/names.txt:574 msgid "VTOL Twin Machinegun" msgstr "VTOL(雙管機æ§ï¼‰" #: data/base/messages/strings/names.txt:567 -#: data/mp/messages/strings/names.txt:574 +#: data/mp/messages/strings/names.txt:575 msgid "VTOL Heavy Machinegun" msgstr "VTOL(é‡æ©Ÿæ§ï¼‰" #: data/base/messages/strings/names.txt:568 -#: data/mp/messages/strings/names.txt:575 +#: data/mp/messages/strings/names.txt:576 msgid "VTOL Assault Gun" msgstr "VTOL(çªæ“Šæ§ï¼‰" #: data/base/messages/strings/names.txt:569 -#: data/mp/messages/strings/names.txt:576 +#: data/mp/messages/strings/names.txt:577 msgid "VTOL Needle Gun" msgstr "VTOL(é‡åˆºç ²ï¼‰" #: data/base/messages/strings/names.txt:570 -#: data/mp/messages/strings/names.txt:577 +#: data/mp/messages/strings/names.txt:578 msgid "VTOL Rail Gun" msgstr "VTOL(軌é“砲)" #: data/base/messages/strings/names.txt:572 -#: data/mp/messages/strings/names.txt:579 +#: data/mp/messages/strings/names.txt:580 msgid "Proximity Bomb Turret" msgstr "è·é›¢ç‚¸å½ˆ" #: data/base/messages/strings/names.txt:573 -#: data/mp/messages/strings/names.txt:580 +#: data/mp/messages/strings/names.txt:581 msgid "Proximity Superbomb Turret" msgstr "超級è·é›¢ç‚¸å½ˆ" @@ -7068,22 +7085,22 @@ msgid "VTOL Cluster Bombs Bay" msgstr "VTOL(集æŸç‚¸å½ˆè‰™ï¼‰" #: data/base/messages/strings/names.txt:576 -#: data/mp/messages/strings/names.txt:583 +#: data/mp/messages/strings/names.txt:584 msgid "VTOL Heap Bomb Bay" msgstr "VTOL(高爆性穿甲炸彈艙)" #: data/base/messages/strings/names.txt:577 -#: data/mp/messages/strings/names.txt:584 +#: data/mp/messages/strings/names.txt:585 msgid "VTOL Phosphor Bomb Bay" msgstr "VTOL(ç‡å…‰ç‚¸å½ˆè‰™ï¼‰" #: data/base/messages/strings/names.txt:578 -#: data/mp/messages/strings/names.txt:585 +#: data/mp/messages/strings/names.txt:586 msgid "VTOL Thermite Bomb Bay" msgstr "VTOL(é‹ç†±å應炸彈艙)" #: data/base/messages/strings/names.txt:581 -#: data/mp/messages/strings/names.txt:588 +#: data/mp/messages/strings/names.txt:589 msgid "Collective Wall" msgstr "Collective鈦鋼筋牆" @@ -7100,307 +7117,307 @@ msgid "NEXUS CWall" msgstr "NEXUS鈦鋼筋角牆" #: data/base/messages/strings/names.txt:623 -#: data/mp/messages/strings/names.txt:630 +#: data/mp/messages/strings/names.txt:631 msgid "CAM1 RESEARCH" msgstr "戰役一:研發" #: data/base/messages/strings/names.txt:624 -#: data/mp/messages/strings/names.txt:631 +#: data/mp/messages/strings/names.txt:632 msgid "ADVANCED RESEARCH" msgstr "高階研發" #: data/base/messages/strings/names.txt:625 -#: data/mp/messages/strings/names.txt:632 +#: data/mp/messages/strings/names.txt:633 msgid "CAM1 VEHICLES" msgstr "戰役一:車輛" #: data/base/messages/strings/names.txt:626 -#: data/mp/messages/strings/names.txt:633 +#: data/mp/messages/strings/names.txt:634 msgid "CAM1 WEAPONS" msgstr "戰役一:武器" #: data/base/messages/strings/names.txt:627 -#: data/mp/messages/strings/names.txt:634 +#: data/mp/messages/strings/names.txt:635 msgid "CAM1 SYSTEMS" msgstr "戰役一:系統" #: data/base/messages/strings/names.txt:628 -#: data/mp/messages/strings/names.txt:635 +#: data/mp/messages/strings/names.txt:636 msgid "CAM1 DEFENSES" msgstr "戰役一:防禦" #: data/base/messages/strings/names.txt:629 -#: data/mp/messages/strings/names.txt:636 +#: data/mp/messages/strings/names.txt:637 msgid "CAM1 STRUCTURES" msgstr "戰役一:建築" #: data/base/messages/strings/names.txt:630 -#: data/mp/messages/strings/names.txt:637 +#: data/mp/messages/strings/names.txt:638 msgid "CAM2 RESEARCH" msgstr "戰役二:研發" #: data/base/messages/strings/names.txt:631 -#: data/mp/messages/strings/names.txt:638 +#: data/mp/messages/strings/names.txt:639 msgid "CAM2 VEHICLES" msgstr "戰役二:車輛" #: data/base/messages/strings/names.txt:632 -#: data/mp/messages/strings/names.txt:639 +#: data/mp/messages/strings/names.txt:640 msgid "CAM2 CYBORGS" msgstr "戰役二:生化人" #: data/base/messages/strings/names.txt:633 -#: data/mp/messages/strings/names.txt:640 +#: data/mp/messages/strings/names.txt:641 msgid "CAM2 WEAPONS" msgstr "戰役二:武器" #: data/base/messages/strings/names.txt:634 -#: data/mp/messages/strings/names.txt:641 +#: data/mp/messages/strings/names.txt:642 msgid "CAM2 SYSTEMS" msgstr "戰役二:系統" #: data/base/messages/strings/names.txt:635 -#: data/mp/messages/strings/names.txt:642 +#: data/mp/messages/strings/names.txt:643 msgid "CAM2 DEFENSES" msgstr "戰役二:防禦" #: data/base/messages/strings/names.txt:636 -#: data/mp/messages/strings/names.txt:643 +#: data/mp/messages/strings/names.txt:644 msgid "CAM2 STRUCTURES" msgstr "戰役二:建築" #: data/base/messages/strings/names.txt:638 -#: data/mp/messages/strings/names.txt:645 +#: data/mp/messages/strings/names.txt:646 msgid "CAM3 RESEARCH" msgstr "戰役三:研發" #: data/base/messages/strings/names.txt:649 -#: data/mp/messages/strings/names.txt:656 +#: data/mp/messages/strings/names.txt:657 msgid "Synaptic Link" msgstr "çªè§¸é€£çµ" #: data/base/messages/strings/names.txt:651 -#: data/mp/messages/strings/names.txt:658 +#: data/mp/messages/strings/names.txt:659 msgid "Missile Targeting Codes" msgstr "第一階導彈密碼" #: data/base/messages/strings/names.txt:652 -#: data/mp/messages/strings/names.txt:659 +#: data/mp/messages/strings/names.txt:660 msgid "Second Level Missile Targeting Codes" msgstr "第二階導彈密碼" #: data/base/messages/strings/names.txt:653 -#: data/mp/messages/strings/names.txt:660 +#: data/mp/messages/strings/names.txt:661 msgid "Third Level Missile Firing Codes" msgstr "第三階導彈密碼" #: data/base/messages/strings/names.txt:655 -#: data/mp/messages/strings/names.txt:662 +#: data/mp/messages/strings/names.txt:663 msgid "Cyborg Thermal Armor" msgstr "生化人熱能è£ç”²ä¸€åž‹" #: data/base/messages/strings/names.txt:656 -#: data/mp/messages/strings/names.txt:663 +#: data/mp/messages/strings/names.txt:664 msgid "Cyborg Thermal Armor Mk2" msgstr "生化人熱能è£ç”²äºŒåž‹" #: data/base/messages/strings/names.txt:657 -#: data/mp/messages/strings/names.txt:664 +#: data/mp/messages/strings/names.txt:665 msgid "Cyborg Thermal Armor Mk3" msgstr "生化人熱能è£ç”²ä¸‰åž‹" #: data/base/messages/strings/names.txt:658 -#: data/mp/messages/strings/names.txt:665 +#: data/mp/messages/strings/names.txt:666 msgid "Cyborg High Intensity Thermal Armor" msgstr "生化人高強度熱能è£ç”²ä¸€åž‹" #: data/base/messages/strings/names.txt:659 -#: data/mp/messages/strings/names.txt:666 +#: data/mp/messages/strings/names.txt:667 msgid "Cyborg High Intensity Thermal Armor Mk2" msgstr "生化人高強度熱能è£ç”²äºŒåž‹" #: data/base/messages/strings/names.txt:660 -#: data/mp/messages/strings/names.txt:667 +#: data/mp/messages/strings/names.txt:668 msgid "Cyborg High Intensity Thermal Armor Mk3" msgstr "生化人高強度熱能è£ç”²ä¸‰åž‹" #: data/base/messages/strings/names.txt:662 -#: data/mp/messages/strings/names.txt:669 +#: data/mp/messages/strings/names.txt:670 msgid "Cyborg Composite Alloys" msgstr "生化人複åˆåˆé‡‘一型" #: data/base/messages/strings/names.txt:663 -#: data/mp/messages/strings/names.txt:670 +#: data/mp/messages/strings/names.txt:671 msgid "Cyborg Composite Alloys Mk2" msgstr "生化人複åˆåˆé‡‘二型" #: data/base/messages/strings/names.txt:664 -#: data/mp/messages/strings/names.txt:671 +#: data/mp/messages/strings/names.txt:672 msgid "Cyborg Composite Alloys Mk3" msgstr "生化人複åˆåˆé‡‘三型" #: data/base/messages/strings/names.txt:665 -#: data/mp/messages/strings/names.txt:672 +#: data/mp/messages/strings/names.txt:673 msgid "Cyborg Dense Composite Alloys" msgstr "生化人緊密åˆé‡‘一型" #: data/base/messages/strings/names.txt:666 -#: data/mp/messages/strings/names.txt:673 +#: data/mp/messages/strings/names.txt:674 msgid "Cyborg Dense Composite Alloys Mk2" msgstr "生化人緊密åˆé‡‘二型" #: data/base/messages/strings/names.txt:667 -#: data/mp/messages/strings/names.txt:674 +#: data/mp/messages/strings/names.txt:675 msgid "Cyborg Dense Composite Alloys Mk3" msgstr "生化人緊密åˆé‡‘三型" #: data/base/messages/strings/names.txt:668 -#: data/mp/messages/strings/names.txt:675 +#: data/mp/messages/strings/names.txt:676 msgid "Cyborg Superdense Composite Alloys" msgstr "生化人高密åˆé‡‘一型" #: data/base/messages/strings/names.txt:669 -#: data/mp/messages/strings/names.txt:676 +#: data/mp/messages/strings/names.txt:677 msgid "Cyborg Superdense Composite Alloys Mk2" msgstr "生化人高密åˆé‡‘二型" #: data/base/messages/strings/names.txt:670 -#: data/mp/messages/strings/names.txt:677 +#: data/mp/messages/strings/names.txt:678 msgid "Cyborg Superdense Composite Alloys Mk3" msgstr "生化人高密åˆé‡‘三型" #: data/base/messages/strings/names.txt:673 -#: data/mp/messages/strings/names.txt:682 +#: data/mp/messages/strings/names.txt:683 msgid "Bunker Blaster Cyborg" msgstr "生化人步兵(碉堡終çµè€…)" #: data/base/messages/strings/names.txt:674 -#: data/mp/messages/strings/names.txt:683 +#: data/mp/messages/strings/names.txt:684 msgid "Heavy Gunner Cyborg" msgstr "生化人步兵(é‡æ©Ÿæ§ï¼‰" #: data/base/messages/strings/names.txt:675 -#: data/mp/messages/strings/names.txt:684 +#: data/mp/messages/strings/names.txt:685 msgid "Flamer Cyborg" msgstr "生化人步兵(ç«ç„°å™´å°„)" #: data/base/messages/strings/names.txt:676 -#: data/mp/messages/strings/names.txt:685 +#: data/mp/messages/strings/names.txt:686 msgid "Machinegunner Cyborg" msgstr "生化人步兵(機æ§ï¼‰" #: data/base/messages/strings/names.txt:677 -#: data/mp/messages/strings/names.txt:686 +#: data/mp/messages/strings/names.txt:687 msgid "Lancer Cyborg" msgstr "生化人步兵(æ§é¨Žå…µç«ç®­ï¼‰" #: data/base/messages/strings/names.txt:678 -#: data/mp/messages/strings/names.txt:687 +#: data/mp/messages/strings/names.txt:688 msgid "Assault Gunner Cyborg" msgstr "生化人步兵(çªæ“Šæ§ï¼‰" #: data/base/messages/strings/names.txt:679 -#: data/mp/messages/strings/names.txt:688 +#: data/mp/messages/strings/names.txt:689 msgid "Needle Gunner Cyborg" msgstr "生化人步兵(é‡åˆºç ²ï¼‰" #: data/base/messages/strings/names.txt:680 -#: data/mp/messages/strings/names.txt:689 +#: data/mp/messages/strings/names.txt:690 msgid "Scourge Cyborg" msgstr "生化人步兵(天譴飛彈)" #: data/base/messages/strings/names.txt:681 -#: data/mp/messages/strings/names.txt:690 +#: data/mp/messages/strings/names.txt:691 msgid "Flashlight Gunner Cyborg" msgstr "生化人步兵(激光雷射)" #: data/base/messages/strings/names.txt:683 -#: data/mp/messages/strings/names.txt:692 +#: data/mp/messages/strings/names.txt:693 msgid "Jump Bunker Blaster" msgstr "è·³èºç”ŸåŒ–人步兵(碉堡終çµè€…)" #: data/base/messages/strings/names.txt:684 -#: data/mp/messages/strings/names.txt:693 +#: data/mp/messages/strings/names.txt:694 msgid "Jump Heavy Gunner" msgstr "è·³èºç”ŸåŒ–人步兵(é‡æ©Ÿæ§ï¼‰" #: data/base/messages/strings/names.txt:685 -#: data/mp/messages/strings/names.txt:694 +#: data/mp/messages/strings/names.txt:695 msgid "Jump Lancer" msgstr "è·³èºç”ŸåŒ–人步兵(æ§é¨Žå…µç«ç®­ï¼‰" #: data/base/messages/strings/names.txt:686 -#: data/mp/messages/strings/names.txt:695 +#: data/mp/messages/strings/names.txt:696 msgid "Jump Assault Gunner" msgstr "è·³èºç”ŸåŒ–人步兵(çªæ“Šæ§ï¼‰" #: data/base/messages/strings/names.txt:687 -#: data/mp/messages/strings/names.txt:696 +#: data/mp/messages/strings/names.txt:697 msgid "Jump Needle Gunner" msgstr "è·³èºç”ŸåŒ–人步兵(é‡åˆºç ²ï¼‰" #: data/base/messages/strings/names.txt:688 -#: data/mp/messages/strings/names.txt:697 +#: data/mp/messages/strings/names.txt:698 msgid "Jump Scourge" msgstr "è·³èºç”ŸåŒ–人步兵(天譴飛彈)" #: data/base/messages/strings/names.txt:689 -#: data/mp/messages/strings/names.txt:698 +#: data/mp/messages/strings/names.txt:699 msgid "Jump Flashlight Gunner" msgstr "è·³èºç”ŸåŒ–人步兵(激光雷射砲)" #: data/base/messages/strings/names.txt:691 -#: data/mp/messages/strings/names.txt:700 +#: data/mp/messages/strings/names.txt:701 msgid "Cyborg Jump Pack" msgstr "生化人步兵跳èºèƒŒåŒ…" #: data/base/messages/strings/names.txt:697 -#: data/mp/messages/strings/names.txt:706 +#: data/mp/messages/strings/names.txt:707 msgid "Hardcrete" msgstr "鈦鋼筋牆" #: data/base/messages/strings/names.txt:699 -#: data/mp/messages/strings/names.txt:708 +#: data/mp/messages/strings/names.txt:709 msgid "NP-Hardcrete" msgstr "NP-鈦鋼筋牆" #: data/base/messages/strings/names.txt:701 -#: data/mp/messages/strings/names.txt:710 +#: data/mp/messages/strings/names.txt:711 msgid "Improved Hardcrete" msgstr "改良鈦鋼筋牆一型" #: data/base/messages/strings/names.txt:702 -#: data/mp/messages/strings/names.txt:711 +#: data/mp/messages/strings/names.txt:712 msgid "Improved Hardcrete Mk2" msgstr "改良鈦鋼筋牆二型" #: data/base/messages/strings/names.txt:703 -#: data/mp/messages/strings/names.txt:712 +#: data/mp/messages/strings/names.txt:713 msgid "Improved Hardcrete Mk3" msgstr "改良鈦鋼筋牆三型" #: data/base/messages/strings/names.txt:704 -#: data/mp/messages/strings/names.txt:713 +#: data/mp/messages/strings/names.txt:714 msgid "Supercrete" msgstr "硼åˆé‡‘鋼筋牆一型" #: data/base/messages/strings/names.txt:705 -#: data/mp/messages/strings/names.txt:714 +#: data/mp/messages/strings/names.txt:715 msgid "Supercrete Mk2" msgstr "硼åˆé‡‘鋼筋牆二型" #: data/base/messages/strings/names.txt:706 -#: data/mp/messages/strings/names.txt:715 +#: data/mp/messages/strings/names.txt:716 msgid "Supercrete Mk3" msgstr "硼åˆé‡‘鋼筋牆三型" #: data/base/messages/strings/names.txt:707 -#: data/mp/messages/strings/names.txt:716 +#: data/mp/messages/strings/names.txt:717 msgid "Plascrete" msgstr "超åˆé‡‘鋼筋牆一型" #: data/base/messages/strings/names.txt:708 -#: data/mp/messages/strings/names.txt:717 +#: data/mp/messages/strings/names.txt:718 msgid "Plascrete Mk2" msgstr "超åˆé‡‘鋼筋牆二型" @@ -7415,15 +7432,15 @@ msgstr "高速加農砲砲å°" #: data/base/messages/strings/names.txt:720 #: data/base/messages/strings/names.txt:1371 -#: data/mp/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:1387 +#: data/mp/messages/strings/names.txt:734 +#: data/mp/messages/strings/names.txt:1390 msgid "Tank Killer Emplacement" msgstr "å¦å…‹æ®ºæ‰‹ç ²å°" #: data/base/messages/strings/names.txt:723 #: data/base/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:734 -#: data/mp/messages/strings/names.txt:1468 +#: data/mp/messages/strings/names.txt:737 +#: data/mp/messages/strings/names.txt:1471 msgid "Bombard Pit" msgstr "é‡è£è¿«æ“Šç ²å‘" @@ -7432,55 +7449,55 @@ msgid "Angel Missile Battery" msgstr "天使飛彈砲å°" #: data/base/messages/strings/names.txt:729 -#: data/mp/messages/strings/names.txt:740 +#: data/mp/messages/strings/names.txt:743 msgid "Archangel Missile Battery" msgstr "大天使飛彈砲å°" #: data/base/messages/strings/names.txt:730 #: data/base/messages/strings/names.txt:1216 -#: data/mp/messages/strings/names.txt:741 -#: data/mp/messages/strings/names.txt:1232 +#: data/mp/messages/strings/names.txt:744 +#: data/mp/messages/strings/names.txt:1235 msgid "Mortar Pit" msgstr "迫擊砲砲å‘" #: data/base/messages/strings/names.txt:731 -#: data/mp/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:1384 +#: data/mp/messages/strings/names.txt:745 +#: data/mp/messages/strings/names.txt:1387 msgid "Mini-Rocket Battery" msgstr "è¿·ä½ ç«ç®­ç‚®" #: data/base/messages/strings/names.txt:738 #: data/base/messages/strings/names.txt:1374 -#: data/mp/messages/strings/names.txt:1390 +#: data/mp/messages/strings/names.txt:1393 msgid "Pulse Laser Emplacement" msgstr "脈è¡é›·å°„ç ²å°" #: data/base/messages/strings/names.txt:742 -#: data/mp/messages/strings/names.txt:753 +#: data/mp/messages/strings/names.txt:756 msgid "Rail Gun Emplacement" msgstr "軌é“砲砲å°" #: data/base/messages/strings/names.txt:744 -#: data/mp/messages/strings/names.txt:755 +#: data/mp/messages/strings/names.txt:758 msgid "Assault Cannon Emplacement" msgstr "çªæ“ŠåŠ è¾²ç ²ç ²å°" #: data/base/messages/strings/names.txt:746 -#: data/mp/messages/strings/names.txt:425 +#: data/mp/messages/strings/names.txt:426 msgid "Assault Gun Emplacement" msgstr "çªæ“Šæ§ç ²å°" #: data/base/messages/strings/names.txt:749 #: data/base/messages/strings/names.txt:1363 -#: data/mp/messages/strings/names.txt:760 -#: data/mp/messages/strings/names.txt:1379 +#: data/mp/messages/strings/names.txt:763 +#: data/mp/messages/strings/names.txt:1382 msgid "Avenger SAM Site" msgstr "復仇者級地å°ç©ºé£›å½ˆç ²å°" #: data/base/messages/strings/names.txt:750 #: data/base/messages/strings/names.txt:1364 -#: data/mp/messages/strings/names.txt:761 -#: data/mp/messages/strings/names.txt:1380 +#: data/mp/messages/strings/names.txt:764 +#: data/mp/messages/strings/names.txt:1383 msgid "Vindicator SAM Site" msgstr "æ“護者級地å°ç©ºé£›å½ˆç ²å°" @@ -7499,15 +7516,15 @@ msgstr "è¿·ä½ ç«ç®­é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:772 #: data/base/messages/strings/names.txt:1382 -#: data/mp/messages/strings/names.txt:783 -#: data/mp/messages/strings/names.txt:1398 +#: data/mp/messages/strings/names.txt:786 +#: data/mp/messages/strings/names.txt:1401 msgid "Scourge Missile Hardpoint" msgstr "天譴飛彈è¦å¡ž" #: data/base/messages/strings/names.txt:774 #: data/base/messages/strings/names.txt:1380 -#: data/mp/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:1396 +#: data/mp/messages/strings/names.txt:788 +#: data/mp/messages/strings/names.txt:1399 msgid "Tank Killer Hardpoint" msgstr "å¦å…‹æ®ºæ‰‹è¦å¡ž" @@ -7518,49 +7535,49 @@ msgstr "高速加農砲è¦å¡ž" #: data/base/messages/strings/names.txt:778 #: data/base/messages/strings/names.txt:1383 -#: data/mp/messages/strings/names.txt:789 -#: data/mp/messages/strings/names.txt:1399 +#: data/mp/messages/strings/names.txt:792 +#: data/mp/messages/strings/names.txt:1402 msgid "Gauss Cannon Hardpoint" msgstr "高斯加農砲è¦å¡ž" #: data/base/messages/strings/names.txt:780 -#: data/mp/messages/strings/names.txt:791 +#: data/mp/messages/strings/names.txt:794 msgid "Command Relay Post" msgstr "命令傳éžåŸºåœ°" #: data/base/messages/strings/names.txt:784 -#: data/mp/messages/strings/names.txt:795 +#: data/mp/messages/strings/names.txt:798 msgid "Automated Cyborg Production Mk2" msgstr "åˆéšŽè‡ªå‹•åŒ–生化人生產二型" #: data/base/messages/strings/names.txt:785 -#: data/mp/messages/strings/names.txt:796 +#: data/mp/messages/strings/names.txt:799 msgid "Automated Cyborg Production Mk3" msgstr "åˆéšŽè‡ªå‹•åŒ–生化人生產三型" #: data/base/messages/strings/names.txt:787 -#: data/mp/messages/strings/names.txt:798 +#: data/mp/messages/strings/names.txt:801 msgid "Robotic Cyborg Production Mk2" msgstr "中階自動化生化人生產二型" #: data/base/messages/strings/names.txt:788 -#: data/mp/messages/strings/names.txt:799 +#: data/mp/messages/strings/names.txt:802 msgid "Robotic Cyborg Production Mk3" msgstr "中階自動化生化人生產三型" #: data/base/messages/strings/names.txt:789 #: data/mp/messages/resmessagesall.rmsg:798 -#: data/mp/messages/strings/names.txt:800 +#: data/mp/messages/strings/names.txt:803 msgid "Advanced Cyborg Production" msgstr "高階自動化生化人生產一型" #: data/base/messages/strings/names.txt:790 -#: data/mp/messages/strings/names.txt:801 +#: data/mp/messages/strings/names.txt:804 msgid "Advanced Cyborg Production Mk2" msgstr "高階自動化生化人生產二型" #: data/base/messages/strings/names.txt:791 -#: data/mp/messages/strings/names.txt:802 +#: data/mp/messages/strings/names.txt:805 msgid "Advanced Cyborg Production Mk3" msgstr "高階自動化生化人生產三型" @@ -7598,54 +7615,54 @@ msgid "Advanced Factory Production Mk3" msgstr "高階自動化生產工廠三型" #: data/base/messages/strings/names.txt:806 -#: data/mp/messages/strings/names.txt:817 +#: data/mp/messages/strings/names.txt:820 msgid "Reinforced Base Structure Materials Mk2" msgstr "åˆéšŽå¼·åŒ–建æ二型" #: data/base/messages/strings/names.txt:807 -#: data/mp/messages/strings/names.txt:818 +#: data/mp/messages/strings/names.txt:821 msgid "Reinforced Base Structure Materials Mk3" msgstr "åˆéšŽå¼·åŒ–建æ三型" #: data/base/messages/strings/names.txt:809 -#: data/mp/messages/strings/names.txt:820 +#: data/mp/messages/strings/names.txt:823 msgid "Hardened Base Structure Materials Mk2" msgstr "中階強化建æ二型" #: data/base/messages/strings/names.txt:810 -#: data/mp/messages/strings/names.txt:821 +#: data/mp/messages/strings/names.txt:824 msgid "Hardened Base Structure Materials Mk3" msgstr "中階強化建æ三型" #: data/base/messages/strings/names.txt:812 -#: data/mp/messages/strings/names.txt:823 +#: data/mp/messages/strings/names.txt:826 msgid "Advanced Base Structure Materials Mk2" msgstr "高階強化建æ二型" #: data/base/messages/strings/names.txt:813 -#: data/mp/messages/strings/names.txt:824 +#: data/mp/messages/strings/names.txt:827 msgid "Advanced Base Structure Materials Mk3" msgstr "高階強化建æ二型" #: data/base/messages/strings/names.txt:817 -#: data/mp/messages/strings/names.txt:828 +#: data/mp/messages/strings/names.txt:831 msgid "Gas Turbine Generator" msgstr "燃氣渦輪發電機一型" #: data/base/messages/strings/names.txt:818 -#: data/mp/messages/strings/names.txt:829 +#: data/mp/messages/strings/names.txt:832 msgid "Vapor Turbine Generator" msgstr "蒸氣渦輪發電機一型" #: data/base/messages/strings/names.txt:820 #: data/base/messages/strings/names.txt:1449 -#: data/mp/messages/strings/names.txt:831 -#: data/mp/messages/strings/names.txt:1465 +#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:1468 msgid "Repair Facility" msgstr "ä¿®ç†å·¥å» " #: data/base/messages/strings/names.txt:821 -#: data/mp/messages/strings/names.txt:832 +#: data/mp/messages/strings/names.txt:835 msgid "Automated Repair Facility" msgstr "åˆéšŽè‡ªå‹•ä¿®ç†å·¥å» " @@ -7682,172 +7699,172 @@ msgid "Advanced Repair Facility Upgrade Mk3" msgstr "高階自動修ç†å·¥å» ä¸‰åž‹" #: data/base/messages/strings/names.txt:832 -#: data/mp/messages/strings/names.txt:843 +#: data/mp/messages/strings/names.txt:846 msgid "Synaptic Link Data Analysis" msgstr "çªè§¸é€£çµè³‡æ–™åˆ†æžä¸€åž‹" #: data/base/messages/strings/names.txt:833 -#: data/mp/messages/strings/names.txt:844 +#: data/mp/messages/strings/names.txt:847 msgid "Synaptic Link Data Analysis Mk2" msgstr "çªè§¸é€£çµè³‡æ–™åˆ†æžäºŒåž‹" #: data/base/messages/strings/names.txt:834 -#: data/mp/messages/strings/names.txt:845 +#: data/mp/messages/strings/names.txt:848 msgid "Synaptic Link Data Analysis Mk3" msgstr "çªè§¸é€£çµè³‡æ–™åˆ†æžä¸‰åž‹" #: data/base/messages/strings/names.txt:836 -#: data/mp/messages/strings/names.txt:847 +#: data/mp/messages/strings/names.txt:850 msgid "Dedicated Synaptic Link Data Analysis Mk2" msgstr "專注çªè§¸é€£çµè³‡æ–™åˆ†æžäºŒåž‹" #: data/base/messages/strings/names.txt:837 -#: data/mp/messages/strings/names.txt:848 +#: data/mp/messages/strings/names.txt:851 msgid "Dedicated Synaptic Link Data Analysis Mk3" msgstr "專注çªè§¸é€£çµè³‡æ–™åˆ†æžä¸‰åž‹" #: data/base/messages/strings/names.txt:839 -#: data/mp/messages/strings/names.txt:850 +#: data/mp/messages/strings/names.txt:853 msgid "Neural Synapse Research Brain Mk2" msgstr "神經çªè§¸æ™ºæ…§ç ”究二型" #: data/base/messages/strings/names.txt:840 -#: data/mp/messages/strings/names.txt:851 +#: data/mp/messages/strings/names.txt:854 msgid "Neural Synapse Research Brain Mk3" msgstr "神經çªè§¸æ™ºæ…§ç ”究三型" #: data/base/messages/strings/names.txt:844 -#: data/mp/messages/strings/names.txt:855 +#: data/mp/messages/strings/names.txt:858 msgid "Automated VTOL Rearming Mk2" msgstr "åˆéšŽè‡ªå‹•åŒ–VTOL補給二型" #: data/base/messages/strings/names.txt:845 -#: data/mp/messages/strings/names.txt:856 +#: data/mp/messages/strings/names.txt:859 msgid "Automated VTOL Rearming Mk3" msgstr "åˆéšŽè‡ªå‹•åŒ–VTOL補給三型" #: data/base/messages/strings/names.txt:847 -#: data/mp/messages/strings/names.txt:858 +#: data/mp/messages/strings/names.txt:861 msgid "Robotic VTOL Rearming Mk2" msgstr "中階自動化VTOL補給二型" #: data/base/messages/strings/names.txt:848 -#: data/mp/messages/strings/names.txt:859 +#: data/mp/messages/strings/names.txt:862 msgid "Robotic VTOL Rearming Mk3" msgstr "中階自動化VTOL補給三型" #: data/base/messages/strings/names.txt:849 -#: data/mp/messages/strings/names.txt:860 +#: data/mp/messages/strings/names.txt:863 msgid "Robotic VTOL Rearming Mk4" msgstr "中階自動化VTOL補給四型" #: data/base/messages/strings/names.txt:852 -#: data/mp/messages/strings/names.txt:863 +#: data/mp/messages/strings/names.txt:866 msgid "Robotic VTOL Production Mk2" msgstr "中階自動化VTOL生產二型" #: data/base/messages/strings/names.txt:853 -#: data/mp/messages/strings/names.txt:864 +#: data/mp/messages/strings/names.txt:867 msgid "Robotic VTOL Production Mk3" msgstr "中階自動化VTOL生產三型" #: data/base/messages/strings/names.txt:855 -#: data/mp/messages/strings/names.txt:866 +#: data/mp/messages/strings/names.txt:869 msgid "Advanced VTOL Production Mk2" msgstr "高階自動化VTOL生產二型" #: data/base/messages/strings/names.txt:856 -#: data/mp/messages/strings/names.txt:867 +#: data/mp/messages/strings/names.txt:870 msgid "Advanced VTOL Production Mk3" msgstr "高階自動化VTOL生產三型" #: data/base/messages/strings/names.txt:858 -#: data/mp/messages/strings/names.txt:869 +#: data/mp/messages/strings/names.txt:872 msgid "Cyborg Self-Repair" msgstr "生化人步兵自我修復" #: data/base/messages/strings/names.txt:859 -#: data/mp/messages/strings/names.txt:870 +#: data/mp/messages/strings/names.txt:873 msgid "Automated Cyborg Repair Mk2" msgstr "自動化生化人修護二型" #: data/base/messages/strings/names.txt:860 -#: data/mp/messages/strings/names.txt:871 +#: data/mp/messages/strings/names.txt:874 msgid "Automated Cyborg Repair Mk3" msgstr "自動化生化人修護三型" #: data/base/messages/strings/names.txt:862 -#: data/mp/messages/strings/names.txt:873 +#: data/mp/messages/strings/names.txt:876 msgid "Defenses Self-Repair" msgstr "防禦工事自我修復" #: data/base/messages/strings/names.txt:863 -#: data/mp/messages/strings/names.txt:874 +#: data/mp/messages/strings/names.txt:877 msgid "Automated Defenses Repair Mk2" msgstr "自動化防禦工事修護二型" #: data/base/messages/strings/names.txt:864 -#: data/mp/messages/strings/names.txt:875 +#: data/mp/messages/strings/names.txt:878 msgid "Automated Defenses Repair Mk3" msgstr "自動化防禦工事修護三型" #: data/base/messages/strings/names.txt:866 -#: data/mp/messages/strings/names.txt:877 +#: data/mp/messages/strings/names.txt:880 msgid "Base Structure Self-Repair" msgstr "基礎建築自動修護" #: data/base/messages/strings/names.txt:867 -#: data/mp/messages/strings/names.txt:878 +#: data/mp/messages/strings/names.txt:881 msgid "Automated Base Structure Repair Mk2" msgstr "自動化基礎建築修護二型" #: data/base/messages/strings/names.txt:868 -#: data/mp/messages/strings/names.txt:879 +#: data/mp/messages/strings/names.txt:882 msgid "Automated Base Structure Repair Mk3" msgstr "自動化基礎建築修護三型" #: data/base/messages/strings/names.txt:870 -#: data/mp/messages/strings/names.txt:881 +#: data/mp/messages/strings/names.txt:884 msgid "Vehicle Self-Repair" msgstr "車輛自我修復" #: data/base/messages/strings/names.txt:871 -#: data/mp/messages/strings/names.txt:882 +#: data/mp/messages/strings/names.txt:885 msgid "Automated Vehicle Repair Mk2" msgstr "自動化車輛修護二型" #: data/base/messages/strings/names.txt:872 -#: data/mp/messages/strings/names.txt:883 +#: data/mp/messages/strings/names.txt:886 msgid "Automated Vehicle Repair Mk3" msgstr "自動化車輛修護三型" #: data/base/messages/strings/names.txt:874 -#: data/mp/messages/strings/names.txt:887 +#: data/mp/messages/strings/names.txt:890 msgid "Sensor Upgrade" msgstr "é›·é”å‡ç´šä¸€åž‹" #: data/base/messages/strings/names.txt:876 -#: data/mp/messages/strings/names.txt:889 +#: data/mp/messages/strings/names.txt:892 msgid "Construction Unit" msgstr "建築單ä½" #: data/base/messages/strings/names.txt:878 -#: data/mp/messages/strings/names.txt:891 +#: data/mp/messages/strings/names.txt:894 msgid "Engineering" msgstr "åˆéšŽå·¥ç¨‹ç§‘技" #: data/base/messages/strings/names.txt:879 -#: data/mp/messages/strings/names.txt:892 +#: data/mp/messages/strings/names.txt:895 msgid "Improved Engineering" msgstr "中階工程科技" #: data/base/messages/strings/names.txt:880 -#: data/mp/messages/strings/names.txt:893 +#: data/mp/messages/strings/names.txt:896 msgid "Advanced Engineering" msgstr "高階工程科技" #: data/base/messages/strings/names.txt:882 -#: data/mp/messages/strings/names.txt:895 +#: data/mp/messages/strings/names.txt:898 msgid "Mobile Repair Turret" msgstr "移動修ç†è»Š" @@ -7857,84 +7874,84 @@ msgstr "é‡åž‹ç§»å‹•ä¿®ç†è»Š" #: data/base/messages/strings/names.txt:884 #: data/base/messages/strings/resstrings.txt:450 -#: data/mp/messages/strings/names.txt:897 +#: data/mp/messages/strings/names.txt:900 #: data/mp/messages/strings/resstrings.txt:478 msgid "Mobile Repair Upgrade" msgstr "移動修ç†è»Šå‡ç´š" #: data/base/messages/strings/names.txt:885 -#: data/mp/messages/strings/names.txt:898 +#: data/mp/messages/strings/names.txt:901 msgid "Mobile Repair Upgrade Mk2" msgstr "移動修ç†è»Šå‡ç´šäºŒåž‹" #: data/base/messages/strings/names.txt:891 -#: data/mp/messages/strings/names.txt:904 +#: data/mp/messages/strings/names.txt:907 msgid "CB Turret" msgstr "å砲兵雷é”" #: data/base/messages/strings/names.txt:893 -#: data/mp/messages/strings/names.txt:906 +#: data/mp/messages/strings/names.txt:909 msgid "CB Sensor Upgrade" msgstr "å砲兵雷é”å‡ç´š" #: data/base/messages/strings/names.txt:894 -#: data/mp/messages/strings/names.txt:907 +#: data/mp/messages/strings/names.txt:910 msgid "CB Sensor Upgrade 2" msgstr "å砲兵雷é”å‡ç´šäºŒåž‹" #: data/base/messages/strings/names.txt:895 -#: data/mp/messages/strings/names.txt:908 +#: data/mp/messages/strings/names.txt:911 msgid "CB Sensor Upgrade 3" msgstr "å砲兵雷é”å‡ç´šä¸‰åž‹" #: data/base/messages/strings/names.txt:897 -#: data/mp/messages/strings/names.txt:910 +#: data/mp/messages/strings/names.txt:913 msgid "VTOL CB Turret" msgstr "VTOLå砲兵雷é”" #: data/base/messages/strings/names.txt:900 -#: data/mp/messages/strings/names.txt:913 +#: data/mp/messages/strings/names.txt:916 msgid "VTOL CB Upgrade" msgstr "VTOLå砲兵雷é”" #: data/base/messages/strings/names.txt:901 -#: data/mp/messages/strings/names.txt:914 +#: data/mp/messages/strings/names.txt:917 msgid "VTOL CB Upgrade 2" msgstr "VTOLå砲兵雷é”二型" #: data/base/messages/strings/names.txt:902 -#: data/mp/messages/strings/names.txt:915 +#: data/mp/messages/strings/names.txt:918 msgid "VTOL CB Upgrade 3" msgstr "VTOLå砲兵雷é”三型" #: data/base/messages/strings/names.txt:903 -#: data/mp/messages/strings/names.txt:916 +#: data/mp/messages/strings/names.txt:919 msgid "VTOL Strike Upgrade" msgstr "VTOL攻擊å‡ç´š" #: data/base/messages/strings/names.txt:904 -#: data/mp/messages/strings/names.txt:917 +#: data/mp/messages/strings/names.txt:920 msgid "VTOL Strike Upgrade Mk2" msgstr "VTOL攻擊å‡ç´šäºŒåž‹" #: data/base/messages/strings/names.txt:905 -#: data/mp/messages/strings/names.txt:918 +#: data/mp/messages/strings/names.txt:921 msgid "VTOL Strike Upgrade Mk3" msgstr "VTOL攻擊å‡ç´šä¸‰åž‹" #: data/base/messages/strings/names.txt:907 -#: data/mp/messages/strings/names.txt:435 -#: data/mp/messages/strings/names.txt:920 +#: data/mp/messages/strings/names.txt:436 +#: data/mp/messages/strings/names.txt:923 msgid "VTOL Strike Tower" msgstr "VTOL攻擊雷é”" #: data/base/messages/strings/names.txt:910 -#: data/mp/messages/strings/names.txt:923 +#: data/mp/messages/strings/names.txt:926 msgid "Improved Scrambler" msgstr "改善的擾頻器" #: data/base/messages/strings/names.txt:911 -#: data/mp/messages/strings/names.txt:924 +#: data/mp/messages/strings/names.txt:927 msgid "Scrambler Turret Mk2" msgstr "擾頻器二型" @@ -7955,292 +7972,292 @@ msgid "NEXUS Resistance Circuits Mk3" msgstr "NEXUS阻抗迴路三型" #: data/base/messages/strings/names.txt:918 -#: data/mp/messages/strings/names.txt:931 +#: data/mp/messages/strings/names.txt:934 msgid "Sensor Lock" msgstr "é›·é”鎖定" #: data/base/messages/strings/names.txt:922 -#: data/mp/messages/strings/names.txt:935 +#: data/mp/messages/strings/names.txt:938 msgid "Thermal Armor" msgstr "熱能è£ç”²ä¸€åž‹" #: data/base/messages/strings/names.txt:923 -#: data/mp/messages/strings/names.txt:936 +#: data/mp/messages/strings/names.txt:939 msgid "Thermal Armor Mk2" msgstr "熱能è£ç”²äºŒåž‹" #: data/base/messages/strings/names.txt:924 -#: data/mp/messages/strings/names.txt:937 +#: data/mp/messages/strings/names.txt:940 msgid "Thermal Armor Mk3" msgstr "熱能è£ç”²ä¸‰åž‹" #: data/base/messages/strings/names.txt:925 -#: data/mp/messages/strings/names.txt:938 +#: data/mp/messages/strings/names.txt:941 msgid "High Intensity Thermal Armor" msgstr "高強度熱能è£ç”²ä¸€åž‹" #: data/base/messages/strings/names.txt:926 -#: data/mp/messages/strings/names.txt:939 +#: data/mp/messages/strings/names.txt:942 msgid "High Intensity Thermal Armor Mk2" msgstr "高強度熱能è£ç”²äºŒåž‹" #: data/base/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:940 +#: data/mp/messages/strings/names.txt:943 msgid "High Intensity Thermal Armor Mk3" msgstr "高強度熱能è£ç”²ä¸‰åž‹" #: data/base/messages/strings/names.txt:929 -#: data/mp/messages/strings/names.txt:942 +#: data/mp/messages/strings/names.txt:945 msgid "Light Body - Viper" msgstr "輕é‡ç´šè»Šèº«ï¼šéŸ¿å°¾è›‡" #: data/base/messages/strings/names.txt:930 -#: data/mp/messages/strings/names.txt:943 +#: data/mp/messages/strings/names.txt:946 msgid "Light Body - Leopard" msgstr "輕é‡ç´šè»Šèº«ï¼šç¾Žæ´²è±¹" #: data/base/messages/strings/names.txt:931 -#: data/mp/messages/strings/names.txt:944 +#: data/mp/messages/strings/names.txt:947 msgid "Light Body - Retaliation" msgstr "輕é‡ç´šè»Šèº«ï¼šå ±å¾©è€…" #: data/base/messages/strings/names.txt:932 -#: data/mp/messages/strings/names.txt:945 +#: data/mp/messages/strings/names.txt:948 msgid "Light Body - Bug" msgstr "輕é‡ç´šè»Šèº«ï¼šæ¯’蟲" #: data/base/messages/strings/names.txt:933 -#: data/mp/messages/strings/names.txt:946 +#: data/mp/messages/strings/names.txt:949 msgid "Medium Body - Cobra" msgstr "中é‡ç´šè»Šèº«ï¼šçœ¼é¡è›‡" #: data/base/messages/strings/names.txt:934 -#: data/mp/messages/strings/names.txt:947 +#: data/mp/messages/strings/names.txt:950 msgid "Medium Body - Panther" msgstr "中é‡ç´šè»Šèº«ï¼šé»‘è±¹" #: data/base/messages/strings/names.txt:935 -#: data/mp/messages/strings/names.txt:948 +#: data/mp/messages/strings/names.txt:951 msgid "Medium Body - Retribution" msgstr "中é‡ç´šè»Šèº«ï¼šæ‡²ç½°è€…" #: data/base/messages/strings/names.txt:936 -#: data/mp/messages/strings/names.txt:949 +#: data/mp/messages/strings/names.txt:952 msgid "Medium Body - Scorpion" msgstr "中é‡ç´šè»Šèº«ï¼šæ¯’è " #: data/base/messages/strings/names.txt:937 -#: data/mp/messages/strings/names.txt:950 +#: data/mp/messages/strings/names.txt:953 msgid "Heavy Body - Tiger" msgstr "é‡é‡ç´šè»Šèº«ï¼šè™Žå¼" #: data/base/messages/strings/names.txt:938 -#: data/mp/messages/strings/names.txt:951 +#: data/mp/messages/strings/names.txt:954 msgid "Heavy Body - Vengeance" msgstr "é‡é‡ç´šè»Šèº«ï¼šå¾©ä»‡è€…" #: data/base/messages/strings/names.txt:939 -#: data/mp/messages/strings/names.txt:952 +#: data/mp/messages/strings/names.txt:955 msgid "Heavy Body - Python" msgstr "é‡é‡ç´šè»Šèº«ï¼šèŸ’蛇" #: data/base/messages/strings/names.txt:940 -#: data/mp/messages/strings/names.txt:953 +#: data/mp/messages/strings/names.txt:956 msgid "Heavy Body - Mantis" msgstr "é‡é‡ç´šè»Šèº«ï¼šèž³èž‚" #: data/base/messages/strings/names.txt:943 -#: data/mp/messages/strings/names.txt:956 +#: data/mp/messages/strings/names.txt:959 msgid "Fuel Injection Engine Mk2" msgstr "燃油噴射引擎二型" #: data/base/messages/strings/names.txt:944 -#: data/mp/messages/strings/names.txt:957 +#: data/mp/messages/strings/names.txt:960 msgid "Fuel Injection Engine Mk3" msgstr "燃油噴射引擎三型" #: data/base/messages/strings/names.txt:946 -#: data/mp/messages/strings/names.txt:959 +#: data/mp/messages/strings/names.txt:962 msgid "Turbo-Charged Engine Mk2" msgstr "渦輪增壓引擎二型" #: data/base/messages/strings/names.txt:947 -#: data/mp/messages/strings/names.txt:960 +#: data/mp/messages/strings/names.txt:963 msgid "Turbo-Charged Engine Mk3" msgstr "渦輪增壓引擎三型" #: data/base/messages/strings/names.txt:949 -#: data/mp/messages/strings/names.txt:962 +#: data/mp/messages/strings/names.txt:965 msgid "Gas Turbine Engine Mk2" msgstr "燃氣渦輪增壓引擎二型" #: data/base/messages/strings/names.txt:950 -#: data/mp/messages/strings/names.txt:963 +#: data/mp/messages/strings/names.txt:966 msgid "Gas Turbine Engine Mk3" msgstr "燃氣渦輪增壓引擎三型" #: data/base/messages/strings/names.txt:953 -#: data/mp/messages/strings/names.txt:966 +#: data/mp/messages/strings/names.txt:969 msgid "Composite Alloys" msgstr "複åˆåˆé‡‘一型" #: data/base/messages/strings/names.txt:954 -#: data/mp/messages/strings/names.txt:967 +#: data/mp/messages/strings/names.txt:970 msgid "Composite Alloys Mk2" msgstr "複åˆåˆé‡‘二型" #: data/base/messages/strings/names.txt:955 -#: data/mp/messages/strings/names.txt:968 +#: data/mp/messages/strings/names.txt:971 msgid "Composite Alloys Mk3" msgstr "複åˆåˆé‡‘三型" #: data/base/messages/strings/names.txt:956 -#: data/mp/messages/strings/names.txt:969 +#: data/mp/messages/strings/names.txt:972 msgid "Dense Composite Alloys" msgstr "緊密åˆé‡‘一型" #: data/base/messages/strings/names.txt:957 -#: data/mp/messages/strings/names.txt:970 +#: data/mp/messages/strings/names.txt:973 msgid "Dense Composite Alloys Mk2" msgstr "緊密åˆé‡‘二型" #: data/base/messages/strings/names.txt:958 -#: data/mp/messages/strings/names.txt:971 +#: data/mp/messages/strings/names.txt:974 msgid "Dense Composite Alloys Mk3" msgstr "緊密åˆé‡‘三型" #: data/base/messages/strings/names.txt:959 -#: data/mp/messages/strings/names.txt:972 +#: data/mp/messages/strings/names.txt:975 msgid "Superdense Composite Alloys" msgstr "高密åˆé‡‘一型" #: data/base/messages/strings/names.txt:960 -#: data/mp/messages/strings/names.txt:973 +#: data/mp/messages/strings/names.txt:976 msgid "Superdense Composite Alloys Mk2" msgstr "高密åˆé‡‘二型" #: data/base/messages/strings/names.txt:961 -#: data/mp/messages/strings/names.txt:974 +#: data/mp/messages/strings/names.txt:977 msgid "Superdense Composite Alloys Mk3" msgstr "高密åˆé‡‘三型" #: data/base/messages/strings/names.txt:964 -#: data/mp/messages/strings/names.txt:977 +#: data/mp/messages/strings/names.txt:980 msgid "Hover Propulsion" msgstr "推進動力:氣墊船" #: data/base/messages/strings/names.txt:965 -#: data/mp/messages/strings/names.txt:978 +#: data/mp/messages/strings/names.txt:981 msgid "Hover Propulsion II" msgstr "推進動力:氣墊船二型" #: data/base/messages/strings/names.txt:967 -#: data/mp/messages/strings/names.txt:980 +#: data/mp/messages/strings/names.txt:983 msgid "Half-tracked Propulsion" msgstr "推進動力:åŠå±¥å¸¶" #: data/base/messages/strings/names.txt:968 -#: data/mp/messages/strings/names.txt:981 +#: data/mp/messages/strings/names.txt:984 msgid "Half-tracked Propulsion II" msgstr "推進動力:åŠå±¥å¸¶äºŒåž‹" #: data/base/messages/strings/names.txt:970 -#: data/mp/messages/strings/names.txt:983 +#: data/mp/messages/strings/names.txt:986 msgid "Tracked Propulsion" msgstr "推進動力:履帶" #: data/base/messages/strings/names.txt:971 -#: data/mp/messages/strings/names.txt:984 +#: data/mp/messages/strings/names.txt:987 msgid "Tracked Propulsion II" msgstr "推進動力:履帶二型" #: data/base/messages/strings/names.txt:973 -#: data/mp/messages/strings/names.txt:986 +#: data/mp/messages/strings/names.txt:989 msgid "VTOL Propulsion" msgstr "推進動力:垂直起é™é£›è¡Œå™¨ï¼ˆVTOL)" #: data/base/messages/strings/names.txt:974 -#: data/mp/messages/strings/names.txt:987 +#: data/mp/messages/strings/names.txt:990 msgid "VTOL Propulsion II" msgstr "推進動力:VTOL二型" #: data/base/messages/strings/names.txt:977 -#: data/mp/messages/strings/names.txt:990 +#: data/mp/messages/strings/names.txt:993 msgid "Wheeled Propulsion II" msgstr "推進動力:輪二型" #: data/base/messages/strings/names.txt:984 -#: data/mp/messages/strings/names.txt:997 +#: data/mp/messages/strings/names.txt:1000 msgid "AA Thermal Imaging Sensor" msgstr "防空武器熱相感應雷é”" #: data/base/messages/strings/names.txt:985 -#: data/mp/messages/strings/names.txt:998 +#: data/mp/messages/strings/names.txt:1001 msgid "AA Target Acquisition Shells" msgstr "防空武器目標追蹤彈殼" #: data/base/messages/strings/names.txt:986 -#: data/mp/messages/strings/names.txt:999 +#: data/mp/messages/strings/names.txt:1002 msgid "AA Target Prediction Computer" msgstr "防空武器目標é æ¸¬é›·é”" #: data/base/messages/strings/names.txt:987 -#: data/mp/messages/strings/names.txt:1000 +#: data/mp/messages/strings/names.txt:1003 msgid "AA HE Flak" msgstr "HE防空砲彈一型" #: data/base/messages/strings/names.txt:988 -#: data/mp/messages/strings/names.txt:1001 +#: data/mp/messages/strings/names.txt:1004 msgid "AA HE Flak Mk2" msgstr "HE防空砲彈二型" #: data/base/messages/strings/names.txt:989 -#: data/mp/messages/strings/names.txt:1002 +#: data/mp/messages/strings/names.txt:1005 msgid "AA HE Flak Mk3" msgstr "HE防空砲彈三型" #: data/base/messages/strings/names.txt:990 -#: data/mp/messages/strings/names.txt:1003 +#: data/mp/messages/strings/names.txt:1006 msgid "AA HEAP Flak" msgstr "HEAP防空砲彈一型" #: data/base/messages/strings/names.txt:991 -#: data/mp/messages/strings/names.txt:1004 +#: data/mp/messages/strings/names.txt:1007 msgid "AA HEAP Flak Mk2" msgstr "HEAP防空砲彈二型" #: data/base/messages/strings/names.txt:992 -#: data/mp/messages/strings/names.txt:1005 +#: data/mp/messages/strings/names.txt:1008 msgid "AA HEAP Flak Mk3" msgstr "HEAP防空砲彈三型" #: data/base/messages/strings/names.txt:993 -#: data/mp/messages/strings/names.txt:1006 +#: data/mp/messages/strings/names.txt:1009 msgid "AA Ammunition Hopper" msgstr "防空ç«ç ²å½ˆè—¥é€æ–™æ–—一型" #: data/base/messages/strings/names.txt:994 -#: data/mp/messages/strings/names.txt:1007 +#: data/mp/messages/strings/names.txt:1010 msgid "AA Ammunition Hopper Mk2" msgstr "防空ç«ç ²å½ˆè—¥é€æ–™æ–—二型" #: data/base/messages/strings/names.txt:995 -#: data/mp/messages/strings/names.txt:1008 +#: data/mp/messages/strings/names.txt:1011 msgid "AA Ammunition Hopper Mk3" msgstr "防空ç«ç ²å½ˆè—¥é€æ–™æ–—三型" #: data/base/messages/strings/names.txt:996 -#: data/mp/messages/strings/names.txt:1009 +#: data/mp/messages/strings/names.txt:1012 msgid "AA Chainfeed Loader" msgstr "防空ç«ç ²é€£éŽ–è£å½ˆç³»çµ±ä¸€åž‹" #: data/base/messages/strings/names.txt:997 -#: data/mp/messages/strings/names.txt:1010 +#: data/mp/messages/strings/names.txt:1013 msgid "AA Chainfeed Loader Mk2" msgstr "防空ç«ç ²é€£éŽ–è£å½ˆç³»çµ±äºŒåž‹" #: data/base/messages/strings/names.txt:998 -#: data/mp/messages/strings/names.txt:1011 +#: data/mp/messages/strings/names.txt:1014 msgid "AA Chainfeed Loader Mk3" msgstr "防空ç«ç ²é€£éŽ–è£å½ˆç³»çµ±ä¸‰åž‹" @@ -8249,17 +8266,17 @@ msgid "Cluster Bombs Bay" msgstr "集æŸç‚¸å½ˆè‰™" #: data/base/messages/strings/names.txt:1004 -#: data/mp/messages/strings/names.txt:1017 +#: data/mp/messages/strings/names.txt:1020 msgid "HEAP Bomb Bay" msgstr "高爆性穿甲炸彈艙" #: data/base/messages/strings/names.txt:1005 -#: data/mp/messages/strings/names.txt:1018 +#: data/mp/messages/strings/names.txt:1021 msgid "Phosphor Bomb Bay" msgstr "ç‡å…‰ç‚¸å½ˆè‰™" #: data/base/messages/strings/names.txt:1006 -#: data/mp/messages/strings/names.txt:1019 +#: data/mp/messages/strings/names.txt:1022 msgid "Thermite Bomb Bay" msgstr "é‹ç†±å應炸彈艙" @@ -8276,252 +8293,252 @@ msgid "Target Acquisition Bombsight" msgstr "目標追蹤投彈瞄準器" #: data/base/messages/strings/names.txt:1012 -#: data/mp/messages/strings/names.txt:1025 +#: data/mp/messages/strings/names.txt:1028 msgid "Cannon Laser Rangefinder" msgstr "加農砲雷射測è·å„€" #: data/base/messages/strings/names.txt:1013 -#: data/mp/messages/strings/names.txt:1026 +#: data/mp/messages/strings/names.txt:1029 msgid "Cannon Laser Designator" msgstr "加農砲雷射指å‘器" #: data/base/messages/strings/names.txt:1014 -#: data/mp/messages/strings/names.txt:1027 +#: data/mp/messages/strings/names.txt:1030 msgid "HEAT Cannon Shells" msgstr "HEAT加農砲彈一型" #: data/base/messages/strings/names.txt:1015 -#: data/mp/messages/strings/names.txt:1028 +#: data/mp/messages/strings/names.txt:1031 msgid "HEAT Cannon Shells Mk2" msgstr "HEAT加農砲彈二型" #: data/base/messages/strings/names.txt:1016 -#: data/mp/messages/strings/names.txt:1029 +#: data/mp/messages/strings/names.txt:1032 msgid "HEAT Cannon Shells Mk3" msgstr "HEAT加農砲彈三型" #: data/base/messages/strings/names.txt:1017 -#: data/mp/messages/strings/names.txt:1030 +#: data/mp/messages/strings/names.txt:1033 msgid "APFSDS Cannon Rounds" msgstr "APFSDS加農砲彈一型" #: data/base/messages/strings/names.txt:1018 -#: data/mp/messages/strings/names.txt:1031 +#: data/mp/messages/strings/names.txt:1034 msgid "APFSDS Cannon Rounds Mk2" msgstr "APFSDS加農砲彈二型" #: data/base/messages/strings/names.txt:1019 -#: data/mp/messages/strings/names.txt:1032 +#: data/mp/messages/strings/names.txt:1035 msgid "APFSDS Cannon Rounds Mk3" msgstr "APFSDS加農砲彈三型" #: data/base/messages/strings/names.txt:1020 -#: data/mp/messages/strings/names.txt:1033 +#: data/mp/messages/strings/names.txt:1036 msgid "HVAPFSDS Cannon Rounds" msgstr "HVAPFSDS加農砲一型" #: data/base/messages/strings/names.txt:1021 -#: data/mp/messages/strings/names.txt:1034 +#: data/mp/messages/strings/names.txt:1037 msgid "HVAPFSDS Cannon Rounds Mk2" msgstr "HVAPFSDS加農砲二型" #: data/base/messages/strings/names.txt:1022 -#: data/mp/messages/strings/names.txt:1035 +#: data/mp/messages/strings/names.txt:1038 msgid "HVAPFSDS Cannon Rounds Mk3" msgstr "HVAPFSDS加農砲三型" #: data/base/messages/strings/names.txt:1026 -#: data/mp/messages/strings/names.txt:1039 +#: data/mp/messages/strings/names.txt:1042 msgid "Cannon Autoloader" msgstr "加農砲自動è£å¡«ç³»çµ±ä¸€åž‹" #: data/base/messages/strings/names.txt:1027 -#: data/mp/messages/strings/names.txt:1040 +#: data/mp/messages/strings/names.txt:1043 msgid "Cannon Autoloader Mk2" msgstr "加農砲自動è£å¡«ç³»çµ±äºŒåž‹" #: data/base/messages/strings/names.txt:1028 -#: data/mp/messages/strings/names.txt:1041 +#: data/mp/messages/strings/names.txt:1044 msgid "Cannon Autoloader Mk3" msgstr "加農砲自動è£å¡«ç³»çµ±ä¸‰åž‹" #: data/base/messages/strings/names.txt:1029 -#: data/mp/messages/strings/names.txt:1042 +#: data/mp/messages/strings/names.txt:1045 msgid "Cannon Rapid Loader" msgstr "加農砲高速è£å¡«ç³»çµ±ä¸€åž‹" #: data/base/messages/strings/names.txt:1030 -#: data/mp/messages/strings/names.txt:1043 +#: data/mp/messages/strings/names.txt:1046 msgid "Cannon Rapid Loader Mk2" msgstr "加農砲高速è£å¡«ç³»çµ±äºŒåž‹" #: data/base/messages/strings/names.txt:1031 -#: data/mp/messages/strings/names.txt:1044 +#: data/mp/messages/strings/names.txt:1047 msgid "Cannon Rapid Loader Mk3" msgstr "加農砲高速è£å¡«ç³»çµ±ä¸‰åž‹" #: data/base/messages/strings/names.txt:1039 -#: data/mp/messages/strings/names.txt:1052 +#: data/mp/messages/strings/names.txt:1055 msgid "Improved Laser Focusing" msgstr "改進雷射å°ç„¦ç³»çµ±ä¸€åž‹" #: data/base/messages/strings/names.txt:1040 -#: data/mp/messages/strings/names.txt:1053 +#: data/mp/messages/strings/names.txt:1056 msgid "Improved Laser Focusing Mk2" msgstr "改進雷射å°ç„¦ç³»çµ±äºŒåž‹" #: data/base/messages/strings/names.txt:1041 -#: data/mp/messages/strings/names.txt:1054 +#: data/mp/messages/strings/names.txt:1057 msgid "Improved Laser Focusing Mk3" msgstr "改進雷射å°ç„¦ç³»çµ±ä¸‰åž‹" #: data/base/messages/strings/names.txt:1042 -#: data/mp/messages/strings/names.txt:1055 +#: data/mp/messages/strings/names.txt:1058 msgid "Hi-Energy Laser Emitter" msgstr "高能雷射發射極一型" #: data/base/messages/strings/names.txt:1043 -#: data/mp/messages/strings/names.txt:1056 +#: data/mp/messages/strings/names.txt:1059 msgid "Hi-Energy Laser Emitter Mk2" msgstr "高能雷射發射極二型" #: data/base/messages/strings/names.txt:1044 -#: data/mp/messages/strings/names.txt:1057 +#: data/mp/messages/strings/names.txt:1060 msgid "Hi-Energy Laser Emitter Mk3" msgstr "高能雷射發射極三型" #: data/base/messages/strings/names.txt:1045 -#: data/mp/messages/strings/names.txt:1058 +#: data/mp/messages/strings/names.txt:1061 msgid "Thermopole Energizer" msgstr "熱極加速器一型" #: data/base/messages/strings/names.txt:1046 -#: data/mp/messages/strings/names.txt:1059 +#: data/mp/messages/strings/names.txt:1062 msgid "Thermopole Energizer Mk2" msgstr "熱極加速器二型" #: data/base/messages/strings/names.txt:1047 -#: data/mp/messages/strings/names.txt:1060 +#: data/mp/messages/strings/names.txt:1063 msgid "Thermopole Energizer Mk3" msgstr "熱極加速器三型" #: data/base/messages/strings/names.txt:1049 -#: data/mp/messages/strings/names.txt:1062 +#: data/mp/messages/strings/names.txt:1065 msgid "High Temperature Flamer Gel" msgstr "高溫ç«ç„°å‡è† ä¸€åž‹" #: data/base/messages/strings/names.txt:1050 -#: data/mp/messages/strings/names.txt:1063 +#: data/mp/messages/strings/names.txt:1066 msgid "High Temperature Flamer Gel Mk2" msgstr "高溫ç«ç„°å‡è† äºŒåž‹" #: data/base/messages/strings/names.txt:1051 -#: data/mp/messages/strings/names.txt:1064 +#: data/mp/messages/strings/names.txt:1067 msgid "High Temperature Flamer Gel Mk3" msgstr "高溫ç«ç„°å‡è† ä¸‰åž‹" #: data/base/messages/strings/names.txt:1052 -#: data/mp/messages/strings/names.txt:1065 +#: data/mp/messages/strings/names.txt:1068 msgid "Superhot Flamer Gel" msgstr "超熱ç«ç„°å‡è† ä¸€åž‹" #: data/base/messages/strings/names.txt:1053 -#: data/mp/messages/strings/names.txt:1066 +#: data/mp/messages/strings/names.txt:1069 msgid "Superhot Flamer Gel Mk2" msgstr "超熱ç«ç„°å‡è† äºŒåž‹" #: data/base/messages/strings/names.txt:1054 -#: data/mp/messages/strings/names.txt:1067 +#: data/mp/messages/strings/names.txt:1070 msgid "Superhot Flamer Gel Mk3" msgstr "超熱ç«ç„°å‡è† ä¸‰åž‹" #: data/base/messages/strings/names.txt:1055 -#: data/mp/messages/strings/names.txt:1068 +#: data/mp/messages/strings/names.txt:1071 msgid "Flamer Autoloader" msgstr "自動è£å¡«å™´å°„一型" #: data/base/messages/strings/names.txt:1056 -#: data/mp/messages/strings/names.txt:1069 +#: data/mp/messages/strings/names.txt:1072 msgid "Flamer Autoloader Mk2" msgstr "自動è£å¡«å™´å°„二型" #: data/base/messages/strings/names.txt:1057 -#: data/mp/messages/strings/names.txt:1070 +#: data/mp/messages/strings/names.txt:1073 msgid "Flamer Autoloader Mk3" msgstr "自動è£å¡«å™´å°„三型" #: data/base/messages/strings/names.txt:1059 -#: data/mp/messages/strings/names.txt:1072 +#: data/mp/messages/strings/names.txt:1075 msgid "Heavy Flamer - Inferno" msgstr "é‡åž‹ç«ç„°å™´å°„ - 地ç„ç«" #: data/base/messages/strings/names.txt:1062 -#: data/mp/messages/strings/names.txt:1075 +#: data/mp/messages/strings/names.txt:1078 msgid "Heavy Howitzer - Ground Shaker" msgstr "é‡åž‹æ¦´å½ˆç ²-憾地者" #: data/base/messages/strings/names.txt:1063 -#: data/mp/messages/strings/names.txt:1076 +#: data/mp/messages/strings/names.txt:1079 msgid "Rotary Howitzer - Hellstorm" msgstr "旋轉榴彈砲-地ç„風暴" #: data/base/messages/strings/names.txt:1066 -#: data/mp/messages/strings/names.txt:1079 +#: data/mp/messages/strings/names.txt:1082 msgid "Target Acquisition Artillery Shells" msgstr "目標追蹤砲彈一型" #: data/base/messages/strings/names.txt:1067 -#: data/mp/messages/strings/names.txt:1080 +#: data/mp/messages/strings/names.txt:1083 msgid "Target Acquisition Artillery Shells Mk2" msgstr "目標追蹤砲彈二型" #: data/base/messages/strings/names.txt:1068 -#: data/mp/messages/strings/names.txt:1081 +#: data/mp/messages/strings/names.txt:1084 msgid "Target Prediction Artillery Shells" msgstr "目標é æ¸¬ç ²å½ˆ " #: data/base/messages/strings/names.txt:1070 -#: data/mp/messages/strings/names.txt:1083 +#: data/mp/messages/strings/names.txt:1086 msgid "HE Howitzer Shells" msgstr "HE榴彈砲一型" #: data/base/messages/strings/names.txt:1071 -#: data/mp/messages/strings/names.txt:1084 +#: data/mp/messages/strings/names.txt:1087 msgid "HE Howitzer Shells Mk2" msgstr "HE榴彈砲二型" #: data/base/messages/strings/names.txt:1072 -#: data/mp/messages/strings/names.txt:1085 +#: data/mp/messages/strings/names.txt:1088 msgid "HE Howitzer Shells Mk3" msgstr "HE榴彈砲三型" #: data/base/messages/strings/names.txt:1073 -#: data/mp/messages/strings/names.txt:1086 +#: data/mp/messages/strings/names.txt:1089 msgid "HEAP Howitzer Shells" msgstr "HEAP榴彈砲一型" #: data/base/messages/strings/names.txt:1074 -#: data/mp/messages/strings/names.txt:1087 +#: data/mp/messages/strings/names.txt:1090 msgid "HEAP Howitzer Shells Mk2" msgstr "HEAP榴彈砲二型" #: data/base/messages/strings/names.txt:1075 -#: data/mp/messages/strings/names.txt:1088 +#: data/mp/messages/strings/names.txt:1091 msgid "HEAP Howitzer Shells Mk3" msgstr "HEAP榴彈砲三型" #: data/base/messages/strings/names.txt:1077 -#: data/mp/messages/strings/names.txt:1090 +#: data/mp/messages/strings/names.txt:1093 msgid "Howitzer Autoloader" msgstr "榴彈砲自動è£å¡«å™¨ä¸€åž‹" #: data/base/messages/strings/names.txt:1078 -#: data/mp/messages/strings/names.txt:1091 +#: data/mp/messages/strings/names.txt:1094 msgid "Howitzer Autoloader Mk2" msgstr "榴彈砲自動è£å¡«å™¨äºŒåž‹" #: data/base/messages/strings/names.txt:1079 -#: data/mp/messages/strings/names.txt:1092 +#: data/mp/messages/strings/names.txt:1095 msgid "Howitzer Autoloader Mk3" msgstr "榴彈砲自動è£å¡«å™¨ä¸‰åž‹" @@ -8530,57 +8547,57 @@ msgid "Fast Loader" msgstr "榴彈砲快速è£å¡«" #: data/base/messages/strings/names.txt:1082 -#: data/mp/messages/strings/names.txt:1095 +#: data/mp/messages/strings/names.txt:1098 msgid "Laser - Flashlight" msgstr "é›·å°„-激光雷射" #: data/base/messages/strings/names.txt:1085 -#: data/mp/messages/strings/names.txt:1098 +#: data/mp/messages/strings/names.txt:1101 msgid "Hardened MG Bullets" msgstr "強化å­å½ˆ" #: data/base/messages/strings/names.txt:1086 -#: data/mp/messages/strings/names.txt:1099 +#: data/mp/messages/strings/names.txt:1102 msgid "APDSB MG Bullets" msgstr "穿甲脫殼彈一型" #: data/base/messages/strings/names.txt:1087 -#: data/mp/messages/strings/names.txt:1100 +#: data/mp/messages/strings/names.txt:1103 msgid "APDSB MG Bullets Mk2" msgstr "穿甲脫殼彈二型" #: data/base/messages/strings/names.txt:1088 -#: data/mp/messages/strings/names.txt:1101 +#: data/mp/messages/strings/names.txt:1104 msgid "APDSB MG Bullets Mk3" msgstr "穿甲脫殼彈三型" #: data/base/messages/strings/names.txt:1089 -#: data/mp/messages/strings/names.txt:1102 +#: data/mp/messages/strings/names.txt:1105 msgid "Tungsten-Tipped MG Bullets" msgstr "尖端鎢化彈一型" #: data/base/messages/strings/names.txt:1090 -#: data/mp/messages/strings/names.txt:1103 +#: data/mp/messages/strings/names.txt:1106 msgid "Tungsten-Tipped MG Bullets Mk2" msgstr "尖端鎢化彈二型" #: data/base/messages/strings/names.txt:1091 -#: data/mp/messages/strings/names.txt:1104 +#: data/mp/messages/strings/names.txt:1107 msgid "Tungsten-Tipped MG Bullets Mk3" msgstr "尖端鎢化彈三型" #: data/base/messages/strings/names.txt:1092 -#: data/mp/messages/strings/names.txt:1105 +#: data/mp/messages/strings/names.txt:1108 msgid "Depleted Uranium MG Bullets" msgstr "貧化鈾彈一型" #: data/base/messages/strings/names.txt:1093 -#: data/mp/messages/strings/names.txt:1106 +#: data/mp/messages/strings/names.txt:1109 msgid "Depleted Uranium MG Bullets Mk2" msgstr "貧化鈾彈二型" #: data/base/messages/strings/names.txt:1095 -#: data/mp/messages/strings/names.txt:1108 +#: data/mp/messages/strings/names.txt:1111 msgid "Chaingun Upgrade" msgstr "åˆéšŽé«˜é€Ÿåž‹éŠæ§å‡ç´š" @@ -8589,142 +8606,142 @@ msgid "Rapid Fire Chaingun Upgrade" msgstr "中階高速型éŠæ§å‡ç´š" #: data/base/messages/strings/names.txt:1097 -#: data/mp/messages/strings/names.txt:1110 +#: data/mp/messages/strings/names.txt:1113 msgid "Hyper Fire Chaingun Upgrade" msgstr "高階高速型éŠæ§å‡ç´š" #: data/base/messages/strings/names.txt:1103 -#: data/mp/messages/strings/names.txt:1116 +#: data/mp/messages/strings/names.txt:1119 msgid "Target Prediction Missiles" msgstr "目標é æ¸¬é£›å½ˆ" #: data/base/messages/strings/names.txt:1104 -#: data/mp/messages/strings/names.txt:1117 +#: data/mp/messages/strings/names.txt:1120 msgid "Search & Destroy Missiles" msgstr "巡弋飛彈" #: data/base/messages/strings/names.txt:1105 -#: data/mp/messages/strings/names.txt:1118 +#: data/mp/messages/strings/names.txt:1121 msgid "Advanced Missile Warhead" msgstr "高階飛彈彈頭一型" #: data/base/messages/strings/names.txt:1106 -#: data/mp/messages/strings/names.txt:1119 +#: data/mp/messages/strings/names.txt:1122 msgid "Advanced Missile Warhead Mk2" msgstr "高階飛彈彈頭二型" #: data/base/messages/strings/names.txt:1107 -#: data/mp/messages/strings/names.txt:1120 +#: data/mp/messages/strings/names.txt:1123 msgid "Advanced Missile Warhead Mk3" msgstr "高階飛彈彈頭三型" #: data/base/messages/strings/names.txt:1108 -#: data/mp/messages/strings/names.txt:1121 +#: data/mp/messages/strings/names.txt:1124 msgid "Advanced Missile Allocation System" msgstr "高階飛彈分é…系統一型" #: data/base/messages/strings/names.txt:1109 -#: data/mp/messages/strings/names.txt:1122 +#: data/mp/messages/strings/names.txt:1125 msgid "Advanced Missile Allocation System Mk2" msgstr "高階飛彈分é…系統二型" #: data/base/messages/strings/names.txt:1110 -#: data/mp/messages/strings/names.txt:1123 +#: data/mp/messages/strings/names.txt:1126 msgid "Advanced Missile Allocation System Mk3" msgstr "高階飛彈分é…系統三型" #: data/base/messages/strings/names.txt:1111 -#: data/mp/messages/strings/names.txt:1124 +#: data/mp/messages/strings/names.txt:1127 msgid "HEAP Missile Warhead" msgstr "HEAP飛彈彈頭一型" #: data/base/messages/strings/names.txt:1112 -#: data/mp/messages/strings/names.txt:1125 +#: data/mp/messages/strings/names.txt:1128 msgid "HEAP Missile Warhead Mk2" msgstr "HEAP飛彈彈頭二型" #: data/base/messages/strings/names.txt:1113 -#: data/mp/messages/strings/names.txt:1126 +#: data/mp/messages/strings/names.txt:1129 msgid "HEAP Missile Warhead Mk3" msgstr "HEAP飛彈彈頭三型" #: data/base/messages/strings/names.txt:1114 -#: data/mp/messages/strings/names.txt:1127 +#: data/mp/messages/strings/names.txt:1130 msgid "Improved Missile Loading System" msgstr "改善飛彈è£å¡«ç³»çµ±" #: data/base/messages/strings/names.txt:1125 -#: data/mp/messages/strings/names.txt:1138 +#: data/mp/messages/strings/names.txt:1141 msgid "Mortar Targeting Computer" msgstr "迫擊砲目標鎖定電腦" #: data/base/messages/strings/names.txt:1126 -#: data/mp/messages/strings/names.txt:1139 +#: data/mp/messages/strings/names.txt:1142 msgid "Thermal Imaging Mortar Shells" msgstr "熱影åƒæ„Ÿæ‡‰è¿«æ“Šç ²å½ˆ" #: data/base/messages/strings/names.txt:1127 -#: data/mp/messages/strings/names.txt:1140 +#: data/mp/messages/strings/names.txt:1143 msgid "Target Acquisition Mortar Shells" msgstr "目標追蹤迫擊砲彈" #: data/base/messages/strings/names.txt:1128 -#: data/mp/messages/strings/names.txt:1141 +#: data/mp/messages/strings/names.txt:1144 msgid "HE Mortar Shells" msgstr "HE迫擊砲彈一型" #: data/base/messages/strings/names.txt:1129 -#: data/mp/messages/strings/names.txt:1142 +#: data/mp/messages/strings/names.txt:1145 msgid "HE Mortar Shells Mk2" msgstr "HE迫擊砲彈二型" #: data/base/messages/strings/names.txt:1130 -#: data/mp/messages/strings/names.txt:1143 +#: data/mp/messages/strings/names.txt:1146 msgid "HE Mortar Shells Mk3" msgstr "HE迫擊砲彈三型" #: data/base/messages/strings/names.txt:1131 -#: data/mp/messages/strings/names.txt:1144 +#: data/mp/messages/strings/names.txt:1147 msgid "HEAP Mortar Shells" msgstr "HEAP迫擊砲彈一型" #: data/base/messages/strings/names.txt:1132 -#: data/mp/messages/strings/names.txt:1145 +#: data/mp/messages/strings/names.txt:1148 msgid "HEAP Mortar Shells Mk2" msgstr "HEAP迫擊砲彈二型" #: data/base/messages/strings/names.txt:1133 -#: data/mp/messages/strings/names.txt:1146 +#: data/mp/messages/strings/names.txt:1149 msgid "HEAP Mortar Shells Mk3" msgstr "HEAP迫擊砲彈三型" #: data/base/messages/strings/names.txt:1134 -#: data/mp/messages/strings/names.txt:1147 +#: data/mp/messages/strings/names.txt:1150 msgid "Mortar Autoloader" msgstr "迫擊砲自動è£è¼‰ç³»çµ±ä¸€åž‹" #: data/base/messages/strings/names.txt:1135 -#: data/mp/messages/strings/names.txt:1148 +#: data/mp/messages/strings/names.txt:1151 msgid "Mortar Autoloader Mk2" msgstr "迫擊砲自動è£è¼‰ç³»çµ±äºŒåž‹" #: data/base/messages/strings/names.txt:1136 -#: data/mp/messages/strings/names.txt:1149 +#: data/mp/messages/strings/names.txt:1152 msgid "Mortar Autoloader Mk3" msgstr "迫擊砲自動è£è¼‰ç³»çµ±ä¸‰åž‹" #: data/base/messages/strings/names.txt:1137 -#: data/mp/messages/strings/names.txt:1150 +#: data/mp/messages/strings/names.txt:1153 msgid "Mortar Fast Loader" msgstr "迫擊砲快速è£è¼‰ç³»çµ±" #: data/base/messages/strings/names.txt:1139 -#: data/mp/messages/strings/names.txt:1152 +#: data/mp/messages/strings/names.txt:1155 msgid "Heavy Mortar - Bombard" msgstr "é‡è£è¿«æ“Šç ²" #: data/base/messages/strings/names.txt:1140 -#: data/mp/messages/strings/names.txt:1153 +#: data/mp/messages/strings/names.txt:1156 msgid "Rotary Mortar - Pepperpot" msgstr "旋轉迫擊砲-Pepperpot(胡椒瓶)" @@ -8733,367 +8750,367 @@ msgid "Target Prediction Computer" msgstr "目標é æ¸¬é›»è…¦" #: data/base/messages/strings/names.txt:1146 -#: data/mp/messages/strings/names.txt:1159 +#: data/mp/messages/strings/names.txt:1162 msgid "Hardened Rail Dart" msgstr "強化軌é“ç ²" #: data/base/messages/strings/names.txt:1147 -#: data/mp/messages/strings/names.txt:1160 +#: data/mp/messages/strings/names.txt:1163 msgid "Hardened Rail Dart Mk2" msgstr "強化軌é“ç ² 二型" #: data/base/messages/strings/names.txt:1148 -#: data/mp/messages/strings/names.txt:1161 +#: data/mp/messages/strings/names.txt:1164 msgid "Hardened Rail Dart Mk3" msgstr "強化軌é“ç ² 三型" #: data/base/messages/strings/names.txt:1149 -#: data/mp/messages/strings/names.txt:1162 +#: data/mp/messages/strings/names.txt:1165 msgid "Rail Gun ROF" msgstr "軌é“砲射速一型" #: data/base/messages/strings/names.txt:1150 -#: data/mp/messages/strings/names.txt:1163 +#: data/mp/messages/strings/names.txt:1166 msgid "Rail Gun ROF Mk2" msgstr "軌é“砲射速二型" #: data/base/messages/strings/names.txt:1151 -#: data/mp/messages/strings/names.txt:1164 +#: data/mp/messages/strings/names.txt:1167 msgid "Rail Gun ROF Mk3" msgstr "軌é“砲射速三型" #: data/base/messages/strings/names.txt:1153 -#: data/mp/messages/strings/names.txt:1166 +#: data/mp/messages/strings/names.txt:1169 msgid "Stabilized Mini-Rockets" msgstr "安定迷你ç«ç®­ä¸€åž‹" #: data/base/messages/strings/names.txt:1154 -#: data/mp/messages/strings/names.txt:1167 +#: data/mp/messages/strings/names.txt:1170 msgid "Stabilized Mini-Rockets Mk2" msgstr "安定迷你ç«ç®­äºŒåž‹" #: data/base/messages/strings/names.txt:1155 -#: data/mp/messages/strings/names.txt:1168 +#: data/mp/messages/strings/names.txt:1171 msgid "HE Mini-Rockets" msgstr "HEè¿·ä½ ç«ç®­ä¸€åž‹ï¼ˆ" #: data/base/messages/strings/names.txt:1156 -#: data/mp/messages/strings/names.txt:1169 +#: data/mp/messages/strings/names.txt:1172 msgid "HE Mini-Rockets Mk2" msgstr "HEè¿·ä½ ç«ç®­äºŒåž‹" #: data/base/messages/strings/names.txt:1157 -#: data/mp/messages/strings/names.txt:1170 +#: data/mp/messages/strings/names.txt:1173 msgid "HE Mini-Rockets Mk3" msgstr "HEè¿·ä½ ç«ç®­ä¸‰åž‹" #: data/base/messages/strings/names.txt:1158 -#: data/mp/messages/strings/names.txt:1171 +#: data/mp/messages/strings/names.txt:1174 msgid "HEAP Mini-Rockets" msgstr "HEAPè¿·ä½ ç«ç®­ä¸€åž‹" #: data/base/messages/strings/names.txt:1159 -#: data/mp/messages/strings/names.txt:1172 +#: data/mp/messages/strings/names.txt:1175 msgid "HEAP Mini-Rockets Mk2" msgstr "HEAPè¿·ä½ ç«ç®­äºŒåž‹" #: data/base/messages/strings/names.txt:1160 -#: data/mp/messages/strings/names.txt:1173 +#: data/mp/messages/strings/names.txt:1176 msgid "HEAP Mini-Rockets Mk3" msgstr "HEAPè¿·ä½ ç«ç®­ä¸‰åž‹" #: data/base/messages/strings/names.txt:1161 -#: data/mp/messages/strings/names.txt:1177 +#: data/mp/messages/strings/names.txt:1180 msgid "Fast Fire Mini-Rockets" msgstr "快速射擊迷你ç«ç®­ä¸€åž‹" #: data/base/messages/strings/names.txt:1162 -#: data/mp/messages/strings/names.txt:1178 +#: data/mp/messages/strings/names.txt:1181 msgid "Fast Fire Mini-Rockets Mk2" msgstr "快速射擊迷你ç«ç®­äºŒåž‹" #: data/base/messages/strings/names.txt:1163 -#: data/mp/messages/strings/names.txt:1179 +#: data/mp/messages/strings/names.txt:1182 msgid "Fast Fire Mini-Rockets Mk3" msgstr "快速射擊迷你ç«ç®­ä¸‰åž‹" #: data/base/messages/strings/names.txt:1164 -#: data/mp/messages/strings/names.txt:1180 +#: data/mp/messages/strings/names.txt:1183 msgid "Rapid Fire Mini-Rockets" msgstr "快速射擊迷你ç«ç®­ä¸€åž‹" #: data/base/messages/strings/names.txt:1165 -#: data/mp/messages/strings/names.txt:1181 +#: data/mp/messages/strings/names.txt:1184 msgid "Rapid Fire Mini-Rockets Mk2" msgstr "快速射擊迷你ç«ç®­äºŒåž‹" #: data/base/messages/strings/names.txt:1166 -#: data/mp/messages/strings/names.txt:1182 +#: data/mp/messages/strings/names.txt:1185 msgid "Rapid Fire Mini-Rockets Mk3" msgstr "快速射擊迷你ç«ç®­ä¸‰åž‹" #: data/base/messages/strings/names.txt:1167 -#: data/mp/messages/strings/names.txt:1183 +#: data/mp/messages/strings/names.txt:1186 msgid "Improved Rocket Wire Guidance" msgstr "纜線ç«ç®­å°Žå¼•ç³»çµ±" #: data/base/messages/strings/names.txt:1168 -#: data/mp/messages/strings/names.txt:1184 +#: data/mp/messages/strings/names.txt:1187 msgid "Rocket Laser Designator" msgstr "é›·å°„ç«ç®­å°Žå¼•ç³»çµ±" #: data/base/messages/strings/names.txt:1169 -#: data/mp/messages/strings/names.txt:1185 +#: data/mp/messages/strings/names.txt:1188 msgid "Thermal Imaging Rockets" msgstr "熱感ç«ç®­å°Žå¼•ç³»çµ±" #: data/base/messages/strings/names.txt:1170 -#: data/mp/messages/strings/names.txt:1186 +#: data/mp/messages/strings/names.txt:1189 msgid "HEAT Rocket Warhead" msgstr "HEATç«ç®­å½ˆé ­ä¸€åž‹" #: data/base/messages/strings/names.txt:1171 -#: data/mp/messages/strings/names.txt:1187 +#: data/mp/messages/strings/names.txt:1190 msgid "HEAT Rocket Warhead Mk2" msgstr "HEATç«ç®­å½ˆé ­äºŒåž‹" #: data/base/messages/strings/names.txt:1172 -#: data/mp/messages/strings/names.txt:1188 +#: data/mp/messages/strings/names.txt:1191 msgid "HEAT Rocket Warhead Mk3" msgstr "HEATç«ç®­å½ˆé ­ä¸‰åž‹" #: data/base/messages/strings/names.txt:1173 -#: data/mp/messages/strings/names.txt:1189 +#: data/mp/messages/strings/names.txt:1192 msgid "HESH Rocket Warhead" msgstr "HESHç«ç®­å½ˆé ­ä¸€åž‹" #: data/base/messages/strings/names.txt:1174 -#: data/mp/messages/strings/names.txt:1190 +#: data/mp/messages/strings/names.txt:1193 msgid "HESH Rocket Warhead Mk2" msgstr "HESHç«ç®­å½ˆé ­äºŒåž‹" #: data/base/messages/strings/names.txt:1175 -#: data/mp/messages/strings/names.txt:1191 +#: data/mp/messages/strings/names.txt:1194 msgid "HESH Rocket Warhead Mk3" msgstr "HESHç«ç®­å½ˆé ­ä¸‰åž‹" #: data/base/messages/strings/names.txt:1176 -#: data/mp/messages/strings/names.txt:1192 +#: data/mp/messages/strings/names.txt:1195 msgid "Rocket Autoloader" msgstr "ç«ç®­è‡ªå‹•è£è¼‰ç³»çµ±ä¸€åž‹" #: data/base/messages/strings/names.txt:1177 -#: data/mp/messages/strings/names.txt:1193 +#: data/mp/messages/strings/names.txt:1196 msgid "Rocket Autoloader Mk2" msgstr "ç«ç®­è‡ªå‹•è£è¼‰ç³»çµ±äºŒåž‹" #: data/base/messages/strings/names.txt:1178 -#: data/mp/messages/strings/names.txt:1194 +#: data/mp/messages/strings/names.txt:1197 msgid "Rocket Autoloader Mk3" msgstr "ç«ç®­è‡ªå‹•è£è¼‰ç³»çµ±ä¸‰åž‹" #: data/base/messages/strings/names.txt:1180 -#: data/mp/messages/strings/names.txt:1196 +#: data/mp/messages/strings/names.txt:1199 msgid "Lancer AT Rocket" msgstr "ç«ç®­ï¼ˆæ§é¨Žå…µï¼‰" #: data/base/messages/strings/names.txt:1182 -#: data/mp/messages/strings/names.txt:1198 +#: data/mp/messages/strings/names.txt:1201 msgid "Bunker Buster Rocket" msgstr "ç«ç®­ï¼ˆç¢‰å ¡çµ‚çµè€…)" #: data/base/messages/strings/names.txt:1185 -#: data/mp/messages/strings/names.txt:1201 +#: data/mp/messages/strings/names.txt:1204 msgid "Tank Killer Rocket" msgstr "ç«ç®­ï¼ˆå¦å…‹æ®ºæ‰‹ï¼‰" #: data/base/messages/strings/names.txt:1187 -#: data/mp/messages/strings/names.txt:1203 +#: data/mp/messages/strings/names.txt:1206 msgid "Machinegun Artifact" msgstr "æ©Ÿæ§ç§‘技" #: data/base/messages/strings/names.txt:1190 -#: data/mp/messages/strings/names.txt:1206 +#: data/mp/messages/strings/names.txt:1209 msgid "New Paradigm Command Center" msgstr "New Paradigm指æ®ä¸­å¿ƒ" #: data/base/messages/strings/names.txt:1191 -#: data/mp/messages/strings/names.txt:1207 +#: data/mp/messages/strings/names.txt:1210 msgid "Collective Command Center" msgstr "Collective指æ®ä¸­å¿ƒ" #: data/base/messages/strings/names.txt:1201 -#: data/mp/messages/strings/names.txt:1217 +#: data/mp/messages/strings/names.txt:1220 msgid "Scavenger Factory" msgstr "拾è’者工廠" #: data/base/messages/strings/names.txt:1202 -#: data/mp/messages/strings/names.txt:1218 +#: data/mp/messages/strings/names.txt:1221 msgid "Scavenger Gun Tower" msgstr "拾è’者æ§å¡”" #: data/base/messages/strings/names.txt:1203 -#: data/mp/messages/strings/names.txt:1219 +#: data/mp/messages/strings/names.txt:1222 msgid "Scavenger Horizontal Wall" msgstr "拾è’者矮牆" #: data/base/messages/strings/names.txt:1204 -#: data/mp/messages/strings/names.txt:1220 +#: data/mp/messages/strings/names.txt:1223 msgid "Scavenger Power Generator" msgstr "拾è’者發電廠" #: data/base/messages/strings/names.txt:1205 -#: data/mp/messages/strings/names.txt:1221 +#: data/mp/messages/strings/names.txt:1224 msgid "Scavenger Rocket Pit" msgstr "拾è’者ç«ç®­å‘" #: data/base/messages/strings/names.txt:1206 -#: data/mp/messages/strings/names.txt:1222 +#: data/mp/messages/strings/names.txt:1225 msgid "Scavenger AT-Rocket Pit" msgstr "拾è’者åå¦å…‹ç«ç®­ç ²å‘" #: data/base/messages/strings/names.txt:1207 -#: data/mp/messages/strings/names.txt:1223 +#: data/mp/messages/strings/names.txt:1226 msgid "Scavenger Bunker" msgstr "拾è’者碉堡" #: data/base/messages/strings/names.txt:1208 -#: data/mp/messages/strings/names.txt:1224 +#: data/mp/messages/strings/names.txt:1227 msgid "Scavenger CornerWall" msgstr "拾è’者角牆" #: data/base/messages/strings/names.txt:1209 -#: data/mp/messages/strings/names.txt:1225 +#: data/mp/messages/strings/names.txt:1228 msgid "Scavenger Flame Tower" msgstr "拾è’者ç«ç„°å¡”" #: data/base/messages/strings/names.txt:1210 -#: data/mp/messages/strings/names.txt:1226 +#: data/mp/messages/strings/names.txt:1229 msgid "Scavenger Flame Tower End" msgstr "拾è’者ç«ç„°é˜²è¡›å¡”" #: data/base/messages/strings/names.txt:1211 -#: data/mp/messages/strings/names.txt:1227 +#: data/mp/messages/strings/names.txt:1230 msgid "Look-Out Tower" msgstr "瞭望臺" #: data/base/messages/strings/names.txt:1212 -#: data/mp/messages/strings/names.txt:1228 +#: data/mp/messages/strings/names.txt:1231 msgid "Cannon Tower" msgstr "加農砲防衛塔" #: data/base/messages/strings/names.txt:1235 -#: data/mp/messages/strings/names.txt:1251 +#: data/mp/messages/strings/names.txt:1254 msgid "Artifact" msgstr "éºç•™ç§‘技" #: data/base/messages/strings/names.txt:1236 -#: data/mp/messages/strings/names.txt:1252 +#: data/mp/messages/strings/names.txt:1255 msgid "Oil Resource" msgstr "油田" #: data/base/messages/strings/names.txt:1262 -#: data/mp/messages/strings/names.txt:1278 +#: data/mp/messages/strings/names.txt:1281 msgid "Bridge" msgstr "æ©‹" #: data/base/messages/strings/names.txt:1265 -#: data/mp/messages/strings/names.txt:1281 +#: data/mp/messages/strings/names.txt:1284 msgid "Ruined Factory" msgstr "è’廢的工廠" #: data/base/messages/strings/names.txt:1266 -#: data/mp/messages/strings/names.txt:1282 +#: data/mp/messages/strings/names.txt:1285 msgid "Warehouse" msgstr "倉庫" #: data/base/messages/strings/names.txt:1267 -#: data/mp/messages/strings/names.txt:1283 +#: data/mp/messages/strings/names.txt:1286 msgid "Hut" msgstr "茅屋" #: data/base/messages/strings/names.txt:1275 -#: data/mp/messages/strings/names.txt:1291 +#: data/mp/messages/strings/names.txt:1294 msgid "Oil Drum" msgstr "鑽油井" #: data/base/messages/strings/names.txt:1293 -#: data/mp/messages/strings/names.txt:1309 +#: data/mp/messages/strings/names.txt:1312 msgid "Wreck" msgstr "殘骸" #: data/base/messages/strings/names.txt:1295 -#: data/mp/messages/strings/names.txt:1311 +#: data/mp/messages/strings/names.txt:1314 msgid "Wrecked Tank" msgstr "殘破的å¦å…‹" #: data/base/messages/strings/names.txt:1313 -#: data/mp/messages/strings/names.txt:1329 +#: data/mp/messages/strings/names.txt:1332 msgid "Wrecked Bridge" msgstr "殘破的橋" #: data/base/messages/strings/names.txt:1314 -#: data/mp/messages/strings/names.txt:1330 +#: data/mp/messages/strings/names.txt:1333 msgid "Wrecked Van" msgstr "殘破的å¡è»Š" #: data/base/messages/strings/names.txt:1315 -#: data/mp/messages/strings/names.txt:1331 +#: data/mp/messages/strings/names.txt:1334 msgid "Wrecked Vehicle" msgstr "殘破的車身" #: data/base/messages/strings/names.txt:1316 -#: data/mp/messages/strings/names.txt:1332 +#: data/mp/messages/strings/names.txt:1335 msgid "Wrecked Tanker" msgstr "殘破的油ç½è»Š" #: data/base/messages/strings/names.txt:1320 #: data/base/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1336 -#: data/mp/messages/strings/names.txt:1352 +#: data/mp/messages/strings/names.txt:1339 +#: data/mp/messages/strings/names.txt:1355 msgid "Cyborg Laboratory" msgstr "生化人實驗室" #: data/base/messages/strings/names.txt:1321 -#: data/mp/messages/strings/names.txt:1337 +#: data/mp/messages/strings/names.txt:1340 msgid "Advanced Warfare Laboratory" msgstr "高階戰爭實驗室" #: data/base/messages/strings/names.txt:1322 #: data/base/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1338 -#: data/mp/messages/strings/names.txt:1354 +#: data/mp/messages/strings/names.txt:1341 +#: data/mp/messages/strings/names.txt:1357 msgid "Engineering Laboratory" msgstr "工程科技實驗室" #: data/base/messages/strings/names.txt:1323 #: data/base/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1339 -#: data/mp/messages/strings/names.txt:1355 +#: data/mp/messages/strings/names.txt:1342 +#: data/mp/messages/strings/names.txt:1358 msgid "Robotics Laboratory" msgstr "機器人實驗室" #: data/base/messages/strings/names.txt:1324 -#: data/mp/messages/strings/names.txt:1340 +#: data/mp/messages/strings/names.txt:1343 msgid "Laser Optics Laboratory" msgstr "雷射光學實驗室" #: data/base/messages/strings/names.txt:1325 #: data/base/messages/strings/names.txt:1337 -#: data/mp/messages/strings/names.txt:1341 -#: data/mp/messages/strings/names.txt:1353 +#: data/mp/messages/strings/names.txt:1344 +#: data/mp/messages/strings/names.txt:1356 msgid "Electronics Laboratory" msgstr "é›»å­ç§‘技實驗室" #: data/base/messages/strings/names.txt:1326 #: data/base/messages/strings/names.txt:1335 -#: data/mp/messages/strings/names.txt:1342 -#: data/mp/messages/strings/names.txt:1351 +#: data/mp/messages/strings/names.txt:1345 +#: data/mp/messages/strings/names.txt:1354 msgid "Chemical Laboratory" msgstr "化學科技實驗室" #: data/base/messages/strings/names.txt:1334 -#: data/mp/messages/strings/names.txt:1350 +#: data/mp/messages/strings/names.txt:1353 msgid "Advanced Warfare" msgstr "高階戰爭" @@ -9114,7 +9131,7 @@ msgid "MRL Emplacement" msgstr "è¿·ä½ ç«ç®­ç ²å°" #: data/base/messages/strings/names.txt:1375 -#: data/mp/messages/strings/names.txt:1391 +#: data/mp/messages/strings/names.txt:1394 msgid "Railgun Emplacement" msgstr "軌é“砲砲å°" @@ -9123,50 +9140,50 @@ msgid "Angel Missile Emplacement" msgstr "天使飛彈砲å°" #: data/base/messages/strings/names.txt:1378 -#: data/mp/messages/strings/names.txt:1394 +#: data/mp/messages/strings/names.txt:1397 msgid "Archangel Missile Emplacement" msgstr "大天使飛彈砲å°" #: data/base/messages/strings/names.txt:1423 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1881 -#: data/mp/messages/strings/names.txt:1881 +#: data/mp/messages/strings/names.txt:1884 #, fuzzy msgid "Repair Turret Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡ä¿®ç†è»Š" #: data/base/messages/strings/names.txt:1436 -#: data/mp/messages/strings/names.txt:1452 -#: data/mp/messages/strings/names.txt:1519 +#: data/mp/messages/strings/names.txt:1455 +#: data/mp/messages/strings/names.txt:1522 msgid "Scourge" msgstr "天譴飛彈" #: data/base/messages/strings/names.txt:1437 -#: data/mp/messages/strings/names.txt:1453 +#: data/mp/messages/strings/names.txt:1456 msgid "Bunker Blaster" msgstr "碉堡終çµè€…" #: data/base/messages/strings/names.txt:1438 -#: data/mp/messages/strings/names.txt:1454 -#: data/mp/messages/strings/names.txt:1520 +#: data/mp/messages/strings/names.txt:1457 +#: data/mp/messages/strings/names.txt:1523 msgid "Flashlight Gunner" msgstr "激光雷射" #: data/base/messages/strings/names.txt:1439 -#: data/mp/messages/strings/names.txt:1455 -#: data/mp/messages/strings/names.txt:1608 +#: data/mp/messages/strings/names.txt:1458 +#: data/mp/messages/strings/names.txt:1611 msgid "Needle Gunner" msgstr "é‡åˆºé£›å½ˆ" #: data/base/messages/strings/names.txt:1440 -#: data/mp/messages/strings/names.txt:1456 +#: data/mp/messages/strings/names.txt:1459 msgid "Downed Transport" msgstr "å¸è¼‰é‹è¼¸è‰¦" #: data/base/messages/strings/names.txt:1458 -#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1356 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1922 -#: data/mp/messages/strings/names.txt:1474 -#: data/mp/messages/strings/names.txt:1922 +#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1925 msgid "Tank Killer Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆå¦å…‹æ®ºæ‰‹ï¼‰" @@ -9175,37 +9192,37 @@ msgid "HPV Cannon Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜é€ŸåŠ è¾²ç ²ï¼‰" #: data/base/messages/strings/names.txt:1460 -#: data/mp/messages/strings/names.txt:1476 +#: data/mp/messages/strings/names.txt:1479 msgid "Cyclone AA Python Half-tracks" msgstr "åŠå±¥å¸¶å¼èŸ’蛇å¦å…‹ï¼ˆæš´é¢¨å¼ç©ºå°ç©ºé£›å½ˆï¼‰" #: data/base/messages/strings/names.txt:1461 -#: data/mp/messages/strings/names.txt:1477 +#: data/mp/messages/strings/names.txt:1480 msgid "Assault Gun Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆçªæ“Šæ§ï¼‰" #: data/base/messages/strings/names.txt:1467 -#: data/mp/messages/strings/names.txt:1483 +#: data/mp/messages/strings/names.txt:1486 msgid "Flashlight" msgstr "激光雷射" #: data/base/messages/strings/names.txt:1468 -#: data/mp/messages/strings/names.txt:1484 +#: data/mp/messages/strings/names.txt:1487 msgid "VTOL Flashlight" msgstr "VTOL激光雷射" #: data/base/messages/strings/names.txt:1471 #: data/base/messages/strings/names.txt:1472 -#: data/mp/messages/strings/names.txt:757 -#: data/mp/messages/strings/names.txt:1487 -#: data/mp/messages/strings/names.txt:1488 +#: data/mp/messages/strings/names.txt:760 +#: data/mp/messages/strings/names.txt:1490 +#: data/mp/messages/strings/names.txt:1491 msgid "Rotary MG Bunker" msgstr "旋轉機æ§ç¢‰å ¡" #: data/base/messages/strings/names.txt:1477 #: data/base/messages/strings/names.txt:1478 -#: data/mp/messages/strings/names.txt:1493 -#: data/mp/messages/strings/names.txt:1494 +#: data/mp/messages/strings/names.txt:1496 +#: data/mp/messages/strings/names.txt:1497 msgid "Missile Silo" msgstr "飛彈發射井" @@ -9487,342 +9504,1211 @@ msgstr "è«‹ç¨å¾…片刻" msgid "Congratulations commander - you are ready for your first mission" msgstr "æ­å–œä½ æŒ‡æ®å®˜ï¼ï¼ä½ å·²ç¶“完æˆäº†ä½ çš„第一個任務ï¼" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1301 +#: data/base/sequenceaudio/cam1/c001end.txt:1 +#, fuzzy +msgid "Incoming Transmission" +msgstr "傳入訊æ¯" + +#: data/base/sequenceaudio/cam1/c001end.txt:3 +#, fuzzy +msgid "Transmission from Beta Base" +msgstr "由特é£éšŠå‚³ä¾†äº†è¨Šæ¯" + +#: data/base/sequenceaudio/cam1/c001end.txt:4 +msgid "Mayday! Mayday!" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001end.txt:5 +msgid "Please assist!..." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:1 +msgid "CAMPAIGN ONE" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:2 +msgid "WESTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:4 +msgid "Dawn, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:5 +#, fuzzy +msgid "Project HQ" +msgstr "計畫目標" + +#: data/base/sequenceaudio/cam1/c001.txa:6 +msgid "A New Era" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:8 +msgid "Morning, July 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:9 +msgid "In-flight to Western Sector" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txa:10 +#, fuzzy +msgid "Team Alpha nears its destination" +msgstr "Alpha 中隊被消滅了" + +#: data/base/sequenceaudio/cam1/c001.txt:1 +msgid "Transport destinations follow:" +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:2 +msgid "Alpha - Western Sector...." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:4 +msgid "Alpha you are cleared for take-off." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:5 +msgid "Good luck and good hunting." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:7 +msgid "Approaching Landing Zone. Team Alpha Briefing commences." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:9 +msgid "Commander, you lead Team Alpha, one of three expeditionary teams sent out by the Project to recover artifacts from before the Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam1/c001.txt:11 +msgid "Your destination lies in the western zone." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:4 +#, fuzzy +msgid "Commander, we have recovered a command turret from the New Paradigm." +msgstr "我們剛解碼出了傳出自New Paradigm的訊æ¯" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:6 +msgid "This turret allows commanders to coordinate attacks between assigned units and to act as a delivery point for factories. Researching and using this technology has the highest priority." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1ccom.txt:8 +#, fuzzy +msgid "Commander, we are receiving this transmission." +msgstr "我們剛剛接收到這個訊æ¯" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:4 +#: data/base/sequenceaudio/cam1/sub13np2.txt:4 +msgid "Your attacks upon us will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1cnp.txt:5 +#: data/base/sequenceaudio/cam1/sub13np2.txt:5 +#, fuzzy +msgid "You are in contravention of the New Paradigm." +msgstr "æ­å–œä½ æ‰“敗了The New Paradigm" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:4 +msgid "All attack groups commence attack on enemy." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:5 +#, fuzzy +msgid "They are in contravention of the New Paradigm." +msgstr "æ­å–œä½ æ‰“敗了The New Paradigm" + +#: data/base/sequenceaudio/cam1/cam1dnp.txt:7 +#, fuzzy +msgid "They must be eradicated." +msgstr "必須阻止他們ï¼" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:4 +#, fuzzy +msgid "Secure the LZ and establish a forward base." +msgstr "確ä¿é™è½é»žçš„安全,並建立一個å‰é€²åŸºåœ°" + +#: data/base/sequenceaudio/cam1/cam1dp2.txt:5 +#, fuzzy +msgid "Then destroy the New Paradigm's base." +msgstr "然後摧毀這個營å€" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:1 +msgid "Open your systems to me." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:2 +msgid "Let me meld with your machines and cyborgs." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:4 +msgid "We will create the perfect nexus of man and machine." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:5 +msgid "Together we can create a new world." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:7 +msgid "I can give you power beyond your wildest dreams." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:9 +msgid "Open your systems to me and you will be strong." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out2.txt:10 +msgid "I can raise you as gods upon the blasted earth." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out3.txt:4 +msgid "When we failed to respond it became threatening." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:1 +msgid "Your interference in my plans for the New Paradigm will not go unpunished." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:2 +msgid "You are weak flesh-things. I am strong and have many parts." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:4 +msgid "You may defeat me here, but I shall rise again." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out4.txt:5 +#: data/base/sequenceaudio/cam2/cam2_2n2.txt:1 +msgid "As I once cleansed the world with fire, I will destroy you and your puny Project!!" +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:4 +msgid "Nexus then removed itself from the system, destroying its memory banks, and removing all traces of its external connections." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:6 +msgid "We are not sure what Nexus is or who or what is directing it. Initial research links the Nexus Intruder Program with the Reed Corporation, the developer of the synaptic link." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:8 +msgid "We have ascertained that Nexus supplied the New Paradigm with most of its technology. Whatever Nexus is, it's more than a computer parasite." +msgstr "" + +#: data/base/sequenceaudio/cam1/cam1out5.txt:10 +#, fuzzy +msgid "It has technology and weapons. It knows about us, and it's not friendly." +msgstr "NEXUS æ“有先進的科技與武器—而且他們並ä¸å‹å–„" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:4 +msgid "The Synaptic Link was developed by the Reed Corporation in conjunction with the US Military." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:6 +msgid "The synaptic link allows for almost instantaneous transfer of thought from human operators to vehicle control and guidance systems. The synaptic link is fitted into the base of the skull circling the spinal column." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:8 +msgid "The link has a hi-speed data transfer port that plugs into any computer system." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:10 +msgid "More importantly the development of the synaptic link made the creation of cyborgs possible. Early attempts at power suits for individual soldiers failed as they proved to be slow and unresponsive." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:12 +msgid "The synaptic link allowed soldiers to be placed in power suits that they controlled as easily as their own bodies. Power suits allowed infantry to function effectively on the battlefields of the 21st Century." +msgstr "" + +#: data/base/sequenceaudio/cam1/map1a_c.txt:14 +msgid "Unfortunately, this technology has fallen into the hands of the New Paradigm. It is imperative that you research and develop synaptic link technologies." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:4 +msgid "Warning!" +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:5 +msgid "You are entering a restricted area." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:7 +msgid "Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:8 +msgid "Repeat. Return to your designated zone or be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np1.txt:9 +msgid "Message Ends." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub13np2.txt:8 +msgid "You will be destroyed." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub14anp.txt:4 +#, fuzzy +msgid "NEXUS, the synaptic technology you required has been recovered and sent for collection." +msgstr "å°‹ç²çªè§¸é€£çµç§‘技ï¼" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:4 +msgid "You have done well." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_4bn.txt:5 +msgid "Once we have analyzed and authenticated the technology, your reward will follow." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub1_5pl.txt:4 +msgid "Information discovered at the previous enemy base indicates that the New Paradigm recovered two synaptic link artifacts." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:4 +msgid "This Nexus Intruder Program is a self-mutating computer parasite. This makes it difficult to eradicate from systems once it has been identified." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:6 +msgid "We have been unable to ascertain it's ultimate goal or function. In its initial form it seeks out and isolates sections of memory from the rest of the invaded system. It then begins to mutate itself and data structures, effectively reprogramming the system from within." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:8 +msgid "Further analysis was prevented by the manual shutdown of the system by our technicians to prevent additional contamination by the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:10 +msgid "However, the spread of the Nexus Intruder Program was not checked by New Paradigm. We need to capture New Paradigm's core systems to further investigate Nexus and determine its origins." +msgstr "" + +#: data/base/sequenceaudio/cam1/sub17fmv.txt:12 +msgid "Commander, you are to curtail the New Paradigm's activities in this sector and locate their main base." +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:1 +msgid "CAMPAIGN TWO" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:2 +msgid "EASTERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:4 +msgid "Morning, September 1st, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:5 +msgid "In-flight to Eastern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam2/c002.txa:6 +#, fuzzy +msgid "Team Alpha approaches Beta Base" +msgstr "Alpha 中隊被消滅了" + +#: data/base/sequenceaudio/cam2/c002.txa:10 +#, fuzzy +msgid "You must defend and hold it at all costs." +msgstr "你必須防禦所有的攻擊並ä¿ä½é€™å€‹åŸºåœ°" + +#: data/base/sequenceaudio/cam2/c002.txa:12 +msgid "THE COLLECTIVE" +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:1 +#, fuzzy +msgid "Commander, a new launch has been detected." +msgstr "「指æ®å®˜ï¼Œæˆ‘們必須打敗NEXUSã€" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:2 +msgid "It is likely to be targeted at your location." +msgstr "" + +#: data/base/sequenceaudio/cam2/c2diif2.txt:4 +#, fuzzy +msgid "You are to start the immediate evacuation of Beta Base to the safe haven." +msgstr "你必須建立一個撤退安全的é¿é›£æ‰€ä»¥ä¾›æ’¤é€€" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:1 +msgid "NASDA is the North American Strategic Defense Agency." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:3 +msgid "NASDA was formed in 2076 to defend North America from conventional and nuclear attack. The construction of a satellite defense system began in 2081 and was completed in 2082." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:6 +msgid "In 2085 the NASDA satellites fired their nukes at Earth." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:8 +msgid "There were also ground-based sites. Many of these were destroyed in the nuclear counterstrikes, but there's bound to be some out there." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:10 +msgid "The NASDA satellites also contained pulse-lasers designed to shoot down missiles approaching North America." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:12 +msgid "During the counterstrikes, these LasSats failed to fire. If brought into operation, these LasSats could inflict major damage on ground targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:14 +msgid "All nukes targeted at North America found their targets." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:16 +msgid "We know that Nexus is searching for NASDA Central in the Eastern Sector. This was one of the land-based control centres for the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:18 +msgid "If the centre is found intact, NEXUS may gain control of the satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22fmv.txt:20 +msgid "Nexus claimed that it had already destroyed the world." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:1 +msgid "Warriors of the Collective, I seek the location of NASDA Central." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:2 +msgid "It lies somewhere in your territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2_2n.txt:4 +msgid "Find it for me and I shall provide you with further weapons to aid you in your war against the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl2.txt:1 +msgid "NASDA Briefing follows..." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam22pl3.txt:1 +msgid "We've got to make sure that it can't do it again." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:1 +msgid "Analysis indicates that these systems were part of the control system for the NASDA satellites." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:2 +msgid "It's now certain that Nexus was responsible for The Collapse." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:4 +msgid "During the early stages of the Collapse, NASDA technicians switched off the infected systems in order to isolate the spread of Nexus. This seems to have prevented the LasSats from firing during the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:6 +msgid "The ensuing nuclear-magnetic pulses wiped clean large amounts of NASDA's memory banks, shattering its core processor, and sent shockwaves blasting through Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26afm.txt:8 +msgid "Nexus was fried as whole sections of its consciousness were obliterated in the counterstrikes." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:1 +#, fuzzy +msgid "Commander we are detecting transmissions from this site that are reaching high orbit." +msgstr "我們åµæ¸¬åˆ°äº†æœ‰è³‡æ–™å¾žé€™åº§å»ºç¯‰ç‰©ä¸­å‚³é€åˆ°é«˜ç©ºè¡›æ˜Ÿä¸Š" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:3 +#, fuzzy +msgid "Nexus has now reconnected itself with the NASDA satellites." +msgstr "NEXUS已經與NASDA的衛星é‡æ–°å–得連çµäº†" + +#: data/base/sequenceaudio/cam2/cam26bfm.txt:5 +msgid "This poses a major threat to the Project and to our survival." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:1 +msgid "Analysis of NASDA Central leaves no doubt that The Collective has introduced the Nexus Intruder Virus to it." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam26pl1.txt:3 +msgid "The nuclear reactor was going to be used to power a vast network of pre-Collapse computer systems." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:1 +#, fuzzy +msgid "Commander, we have just detected a missile launch at these coordinates." +msgstr "指æ®å®˜ï¼Œæˆ‘們在發射井內發ç¾äº†å°Žå½ˆ" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:3 +msgid "Team Gamma are sending a team to investigate the launch site and to prevent any further launches." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam27fmv.txt:5 +msgid "We can only assume that Nexus has gained control of this site. We cannot determine whether the missile is nuclear-armed or where it is targeted. You are advised to begin preparations for the evacuation of your base." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:1 +msgid "Warriors of The Collective, more intruders are entering our territory." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:2 +msgid "They are not part of the machine." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:4 +#, fuzzy +msgid "Warriors of The Collective, attack and destroy kill all who resist the machine." +msgstr "打敗並殺掉所有跟「機器ã€æŠµæŠ—的人" + +#: data/base/sequenceaudio/cam2/cam2acol.txt:5 +msgid "Attack! Erase their presence from this area!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:1 +msgid "Warriors of The Collective, we are ready to destroy the intruders who pollute our lands." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:3 +msgid "Those of the Project are not of the machine. They have been denied its blessing. We who have embraced the power of the machine have a destiny to sweep away such weak creatures." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:6 +msgid "They shall fall before the might of The Collective." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:8 +#, fuzzy +msgid "Attack and destroy all who resist the machine." +msgstr "打敗並殺掉所有跟「機器ã€æŠµæŠ—的人" + +#: data/base/sequenceaudio/cam2/cam2bcol.txt:9 +msgid "Attack!" +msgstr "攻擊ï¼" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:1 +msgid "Warriors of the Collective, Nexus has given us the power of the machine so that we can destroy all that oppose us." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:3 +msgid "Nexus now asks us to crush the Project." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dico.txt:4 +#, fuzzy +msgid "Cleanse and destroy!!" +msgstr "æœå°‹ä»¥åŠæ‘§æ¯€" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:1 +#, fuzzy +msgid "Warriors of the Collective. You have performed well." +msgstr "the Collective 的戰士們..." + +#: data/base/sequenceaudio/cam2/cam2diin.txt:2 +msgid "Your just reward is on its way." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:4 +msgid "The Project is fleeing its base and stealing your technology." +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2diin.txt:5 +msgid "You must stop them!" +msgstr "" + +#: data/base/sequenceaudio/cam2/cam2dipl.txt:1 +#, fuzzy +msgid "Decoding Transmission..." +msgstr "傳來訊æ¯..." + +#: data/base/sequenceaudio/cam3/c003.txa:1 +msgid "CAMPAIGN THREE" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:2 +msgid "NORTHERN SECTOR" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:5 +#, fuzzy +msgid "Congratulations your successful evacuation of Beta Base." +msgstr "æ­å–œä½ ï¼æˆåŠŸçš„ç–散了BETA基地" + +#: data/base/sequenceaudio/cam3/c003.txa:8 +msgid "Dusk, December 3rd, 2100" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:9 +msgid "In-flight to Northern Sector" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:10 +msgid "The Final Encounter" +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txa:12 +#, fuzzy +msgid "Briefing Commences" +msgstr "簡報開始:" + +#: data/base/sequenceaudio/cam3/c003.txt:1 +msgid "Personnel at Gamma Base have confirmed that the nuclear missiles targeted at Alpha and Beta bases were launched from a silo in their sector." +msgstr "" + +#: data/base/sequenceaudio/cam3/c003.txt:4 +msgid "Team Gamma is currently scouting the silo's location and monitoring NEXUS's activity." +msgstr "" + +#: data/base/sequenceaudio/cam3/c3ad2n2.txt:1 +#, fuzzy +msgid "Time's up commander!!" +msgstr "檢視下一部指æ®è»Š" + +#: data/base/sequenceaudio/cam3/c3ad2pl3.txt:1 +#, fuzzy +msgid "Commander, we are detecting NEXUS forces from these coordinates..." +msgstr "我們在這個å€åŸŸåµæ¸¬åˆ°äº†æ•µè»" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:1 +msgid "Well done Commander, you've prevented my last missile from launching." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:2 +msgid "Such a shame. Your Project HQ would have made a wonderful target." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:4 +msgid "But it's good of you to join me here." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:6 +msgid "Buried beneath this silo is a tactical nuclear warhead that is set to go off soon." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:9 +msgid "As I cannot launch it, it'll just have to blow where it is." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_1bn.txt:11 +msgid "Please note that all entrances to the underground complex have been sealed. Goodbye, Commander." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:1 +#, fuzzy +msgid "Glad you could make it, Commander." +msgstr "ç¥ä½ å¥½é‹ï¼ŒæŒ‡æ®å®˜ã€‚" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:4 +msgid "Enemy strike VTOLs have got us pinned down. We've managed to hold off cyborgs and tanks, but we haven't been able to make any progress along the valley." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32a2.txt:7 +msgid "Can you try and reach us with anti-aircraft units?" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:1 +msgid "This is Team Alpha. Repeat, this is Team Alpha. We require immediate assistance." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:4 +msgid "We are under heavy attack from cyborgs, laser tanks, and strike VTOLs." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:6 +msgid "We were trying to reach your position, but have been ambushed." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:7 +msgid "We're holed up in a valley at these coordinates." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32alp.txt:8 +msgid "Please assist." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam32pl2.txt:4 +msgid "Commander, forces from Team Alpha escaped the nuclear attack on Alpha Base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:1 +msgid "We are experiencing some interference from NEXUS." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu1.txt:3 +msgid "You must destroy his command centre before we lose control of key systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam34mu2.txt:1 +#, fuzzy +msgid "Commander, welcome to NEXUS!" +msgstr "「指æ®å®˜ï¼Œæˆ‘們必須打敗NEXUSã€" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:1 +msgid "The Reed Corporation was founded by Dr Allan Reed. In 2080, Dr Reed landed a contract with the US Military to develop the synaptic link technology." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:3 +msgid "After patenting the synaptic link five years later, Dr Reed continued his researches into cybernetics." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:5 +msgid "His goal this time was to allow transfer of human consciousness into data streams that could meld with computer technologies. While in Cyberspace the operator's bodies were kept in immersion tanks." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:7 +msgid "Backed again by the military, Dr Reed began work on the NEXUS Intruder Program. After three years with little progress, the military abandoned the Nexus Project and cut Dr Reed's funding." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:9 +msgid "Reports from the time claim that Dr Reed was furious and vowed to have his revenge on all who got in his way." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:11 +msgid "It appears that Dr Reed may have succeeded in his goals and completed the Nexus Intruder Program." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:12 +msgid "The similarity between NEXUS and Dr Reed is striking." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:14 +msgid "Such an interesting history lesson. Now allow me to bring you up to date." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:15 +msgid "The NEXUS Intruder Program was created in order to control fools like you." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:17 +msgid "It's very simple for me to infiltrate your systems and take them over. It's so simple, in fact, that you wouldn't even know I'm there. That is until I activate parts of myself etched into your core systems." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abf.txt:19 +msgid "Let's start by activating NEXUS in your core systems and see what happens!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:1 +#, fuzzy +msgid "Commander, we are experiencing interference with our equipment." +msgstr "指æ®å®˜ï¼Œæˆ‘們正試圖著è¦è¿”回基地" + +#: data/base/sequenceaudio/cam3/cam3abpl.txt:2 +msgid "Normal service will be restored as soon as possible." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:1 +msgid "Not long to go now, Commander. There's no where else for you to run to." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:4 +msgid "However, if you vacate this facility, then I shall let you go free, as you are no longer a threat to me." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3ad2n.txt:6 +msgid "You have five minutes to comply or else it's frying time!" +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:1 +msgid "Commander, we are under attack by NEXUS cyborgs and tanks. Please help as we...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3bg.txt:3 +msgid "...cannot hold out much longer. Repeat, please help, we cannot hold out much longer...." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:1 +msgid "Ah, Commander, so good of you to join us here at Nexus base." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:3 +msgid "It was very useful having Gamma Team set up here in the mountains." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:4 +msgid "Their absorption was such a pleasure." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:6 +msgid "Thank you for all those useful technologies you've recovered." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:8 +msgid "You and not those fools in the New Paradigm and the Collective." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:10 +msgid "I'm now activating all your synaptic links so that your forces can meld with Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_bn.txt:12 +msgid "Your forces are now mine! Welcome to Nexus." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:1 +msgid "Commander, you're proving to be more resilient than I thought." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:2 +msgid "Such a pity that you refused to join me earlier." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:4 +msgid "But no matter, as you'll not be here much longer." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:6 +msgid "After much searching and reprogramming, I've finally got all my systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:8 +msgid "Once I destroyed the world with nuclear fire to clear the way for my cybernetic future." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:9 +msgid "I now intend to further shape the world into my own image, by surgically removing unwanted growths like yourself." +msgstr "" + +#: data/base/sequenceaudio/cam3/cam3_cn.txt:11 +msgid "My Laser Satellites are now powering up. I intend to test them on you first, Commander!" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:4 +msgid "Dusk, November 3rd, 2085" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:5 +msgid "Earth, High Orbit" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:6 +msgid "The Collapse" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:8 +msgid "January 19th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:9 +#: data/base/sequenceaudio/devastation.txa:17 +msgid "North America" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:10 +#, fuzzy +msgid "Nuclear Winter" +msgstr "æ ¸å­å應çˆ" + +#: data/base/sequenceaudio/devastation.txa:12 +msgid "Midnight, April 10th, 2086" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:13 +msgid "Rocky Mountains" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:14 +msgid "Safety" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:16 +msgid "Dawn, April 4th, 2100" +msgstr "" + +#: data/base/sequenceaudio/devastation.txa:18 +msgid "A New Beginning" +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:1 +msgid "The NASDA system was developed to protect us. It was to be the ultimate nuclear deterrent. As it turned out, it was our executioner." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:3 +msgid "Reports said that NASDA developed a fault during a routine systems check. Don't believe it. Someone wanted it to take us out." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:5 +msgid "Those nukes were targeted on every major city around the world. NASDA was programmed to start the Collapse. When the counterstrikes launched, its laser defenses and anti-missile ground sites failed." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:7 +msgid "The world as we knew it ended..." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:9 +msgid "The Nuclear Winter hit hard. Disease and famine claimed most of us who had survived the nuclear strikes. Wars over cans of dog food took even more." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:11 +msgid "We'd fled Seattle early in '86. We'd heard that the Rocky Mountains were relatively rad-free." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:13 +msgid "After fighting off bands of marauders we came across the base. Its personnel were dead. Killed by any one of a number of virulent diseases." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:15 +msgid "We cracked the doors, and cleared out the bodies inside." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:17 +msgid "We knew that things would never be the same again, but we were determined to build a new world out of the ruins. We rebuilt the landing pads and brought the old systems back on-line." +msgstr "" + +#: data/base/sequenceaudio/devastation.txt:19 +msgid "We were finally ready to begin the Project." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:1 +msgid "After many long months of struggle, we defeated NEXUS." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:3 +msgid "The war started by Dr Reed was over." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:5 +msgid "We have recovered many of the technologies we sought." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:7 +msgid "It is now time to use them to rebuild the world." +msgstr "" + +#: data/base/sequenceaudio/outro.txt:9 +msgid "Slowly, out of the ashes we will rise again..." +msgstr "" + +#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 msgid "Cobra Hover Heavy-Repair" msgstr "眼é¡è›‡é‡åž‹ä¿®ç†æ°£å¢Šèˆ¹" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1302 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 msgid "Viper HMG Wheels" msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1303 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1824 -#: data/mp/messages/strings/names.txt:1824 +#: data/mp/messages/strings/names.txt:1827 msgid "Scourge Mantis Hover" msgstr "螳螂氣墊船(天譴飛彈)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1304 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 msgid "TK Mantis Hover" msgstr "螳螂氣墊船(å¦å…‹æ®ºæ‰‹ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1305 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 msgid "Cobra HMG Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1306 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 msgid "Cobra Hover HC" msgstr "眼é¡è›‡æ°£å¢Šèˆ¹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1307 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 msgid "Scorpion Lancer Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1308 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 msgid "Scorpion Heavy Cannon Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1309 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 msgid "Scorpion Lancer VTOL" msgstr "毒è VTOL(æ§é¨Žå…µç«ç®­ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1310 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 msgid "Scorpion BB VTOL" msgstr "æ¯’è  BB VTOL" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1311 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 msgid "Viper Command Turret Tracks" msgstr "響尾蛇指æ®è»Š" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1312 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 msgid "Cobra Command Turret Tracks" msgstr "眼é¡è›‡æŒ‡æ®è»Š" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1313 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 msgid "Scorpion Command Turret Tracks" msgstr "毒è æŒ‡æ®è»Š" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1314 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 msgid "mantis Command Turret Tracks" msgstr "螳螂指æ®è»Š" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1315 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 msgid "Cobra Lancer Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1316 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 msgid "Mantis Heavy Cannon Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1317 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 msgid "Mantis Tank Killer Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆå¦å…‹æ®ºæ‰‹ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1318 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 msgid "Mantis Scourge Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆå¤©è­´é£›å½ˆï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1319 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 msgid "Scorpion Heavy Machinegun Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1320 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 msgid "Scorpion Repair Tracks" msgstr "毒è ä¿®ç†è»Š" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1321 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 msgid "Scorpion Heavy Repair Hover" msgstr "毒è é‡åž‹ä¿®ç†è»Š" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1322 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 msgid "Cobra Hover Truck" msgstr "眼é¡è›‡å·¥ç¨‹æ°£å¢Šèˆ¹" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1323 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 msgid "Scorpion Hover Truck" msgstr "毒è å·¥ç¨‹æ°£å¢Šèˆ¹" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1324 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 msgid "Mantis Hover Truck" msgstr "螳螂工程氣墊船" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1325 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 msgid "Cobra Bunker Buster Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1326 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 msgid "Scorpion Bunker Buster Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1327 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 msgid "Mantis Bunker Buster Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1328 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 msgid "Viper Tracks Lancer" msgstr "履帶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1329 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 msgid "Cobra Half-Tracks Mini-Pod" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1330 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 msgid "Cobra Tracks Mini-Pod" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1331 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 msgid "Cobra Tracks Mini-Rocket Artillery" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ç ²ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1332 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1344 msgid "Cobra Inferno Half-track" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆç«ç„°å™´å°„)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1333 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1345 msgid "Python HVC Hover" msgstr "蟒蛇氣墊船(高速加農砲)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1334 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1346 msgid "Python Scourge Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆå¤©è­´é£›å½ˆï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1335 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1347 msgid "Python Gauss Cannon Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜æ–¯åŠ è¾²ç ²ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1336 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1348 msgid "Python Pulse Laser Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1337 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1349 msgid "Tiger Pulse Laser Tracks" msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1338 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1350 msgid "Tiger Heavy Laser Tracks" msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆé«˜èƒ½é›·å°„)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1339 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1351 msgid "Wyvern Gauss Cannon Tracks" msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆé«˜æ–¯åŠ è¾²ç ²ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1340 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1352 msgid "Wyvern Pulse Laser Tracks" msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1341 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1353 msgid "Wyvern Heavy Laser Tracks" msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1342 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1354 msgid "Viper Machinegun Half-Track" msgstr "åŠå±¥å¸¶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé›™ç®¡æ©Ÿæ§ï¼‰" -#: data/mods/multiplay/ntw/messages/strings/names.txt:1343 +#: data/mods/multiplay/ntw/messages/strings/names.txt:1355 msgid "Viper Flamer Half-Track" msgstr "åŠå±¥å¸¶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆç«ç„°å™´å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1822 -#: data/mp/messages/strings/names.txt:1822 +#: data/mp/messages/strings/names.txt:1825 msgid "Heavy Repair Turret Cobra Hover" msgstr "眼é¡è›‡é‡åž‹ä¿®ç†æ°£å¢Šèˆ¹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1823 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1834 -#: data/mp/messages/strings/names.txt:1823 -#: data/mp/messages/strings/names.txt:1834 +#: data/mp/messages/strings/names.txt:1826 +#: data/mp/messages/strings/names.txt:1837 msgid "Heavy Machinegun Viper Wheels" msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1825 -#: data/mp/messages/strings/names.txt:1825 +#: data/mp/messages/strings/names.txt:1828 msgid "Tank Killer Mantis Hover" msgstr "螳螂氣墊船(å¦å…‹æ®ºæ‰‹ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1826 #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1841 -#: data/mp/messages/strings/names.txt:1826 -#: data/mp/messages/strings/names.txt:1841 +#: data/mp/messages/strings/names.txt:1829 +#: data/mp/messages/strings/names.txt:1844 msgid "Heavy Machinegun Cobra Tracks" msgstr "履帶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1827 -#: data/mp/messages/strings/names.txt:1827 +#: data/mp/messages/strings/names.txt:1830 msgid "Heavy Cannon Cobra Hover" msgstr "眼é¡è›‡æ°£å¢Šèˆ¹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1835 -#: data/mp/messages/strings/names.txt:1835 +#: data/mp/messages/strings/names.txt:1838 msgid "Heavy Machinegun Cobra Wheels" msgstr "輪å¼çœ¼é¡è›‡å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1836 -#: data/mp/messages/strings/names.txt:1836 +#: data/mp/messages/strings/names.txt:1839 msgid "Heavy Machinegun Cobra Hover" msgstr "眼é¡è›‡æ°£å¢Šèˆ¹ï¼ˆé‡æ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1838 -#: data/mp/messages/strings/names.txt:1838 +#: data/mp/messages/strings/names.txt:1841 msgid "Machinegun Viper Tracks" msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆæ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1839 -#: data/mp/messages/strings/names.txt:1839 +#: data/mp/messages/strings/names.txt:1842 msgid "Twin Machinegun Viper Tracks" msgstr "輪å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆé›™ç®¡æ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1843 -#: data/mp/messages/strings/names.txt:1843 +#: data/mp/messages/strings/names.txt:1846 msgid "Medium Cannon Cobra Hover" msgstr "眼é¡è›‡æ°£å¢Šèˆ¹ï¼ˆä¸­åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1844 -#: data/mp/messages/strings/names.txt:1844 +#: data/mp/messages/strings/names.txt:1847 msgid "Medium Cannon Scorpion Hover" msgstr "毒è æ°£å¢Šèˆ¹ï¼ˆä¸­åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1845 -#: data/mp/messages/strings/names.txt:1845 +#: data/mp/messages/strings/names.txt:1848 msgid "Medium Cannon Scorpion Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆä¸­åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1846 -#: data/mp/messages/strings/names.txt:1846 +#: data/mp/messages/strings/names.txt:1849 msgid "Medium Cannon Python Hover" msgstr "蟒蛇氣墊船(中型加農砲)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1847 -#: data/mp/messages/strings/names.txt:1847 +#: data/mp/messages/strings/names.txt:1850 msgid "Heavy Cannon Python Hover" msgstr "蟒蛇氣墊船(é‡åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1849 -#: data/mp/messages/strings/names.txt:1849 +#: data/mp/messages/strings/names.txt:1852 msgid "Rail Gun Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆè»Œé“砲)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1850 -#: data/mp/messages/strings/names.txt:1850 +#: data/mp/messages/strings/names.txt:1853 msgid "Pulse Laser Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1851 -#: data/mp/messages/strings/names.txt:1851 +#: data/mp/messages/strings/names.txt:1854 msgid "Lancer Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1852 -#: data/mp/messages/strings/names.txt:1852 +#: data/mp/messages/strings/names.txt:1855 msgid "Lancer Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1853 -#: data/mp/messages/strings/names.txt:1853 +#: data/mp/messages/strings/names.txt:1856 msgid "Tank Killer Vengeance Tracks" msgstr "履帶å¼å¾©ä»‡è€…å¦å…‹ï¼ˆå¦å…‹æ®ºæ‰‹ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1858 -#: data/mp/messages/strings/names.txt:1858 +#: data/mp/messages/strings/names.txt:1861 msgid "Heavy Cannon Tiger Tracks" msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1859 -#: data/mp/messages/strings/names.txt:1859 +#: data/mp/messages/strings/names.txt:1862 msgid "Needle Gun Tiger Tracks" msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆé‡åˆºç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1860 -#: data/mp/messages/strings/names.txt:1860 +#: data/mp/messages/strings/names.txt:1863 msgid "Needle Gun Retribution Tracks" msgstr "履帶å¼æ‡²ç½°è€…å¦å…‹ï¼ˆé‡åˆºç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1861 -#: data/mp/messages/strings/names.txt:1861 +#: data/mp/messages/strings/names.txt:1864 msgid "Needle Gun Vengeance Tracks" msgstr "履帶å¼å¾©ä»‡è€…å¦å…‹ï¼ˆé‡åˆºç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1862 -#: data/mp/messages/strings/names.txt:1862 +#: data/mp/messages/strings/names.txt:1865 msgid "Vengeance Tracks Rail Gun" msgstr "履帶å¼å¾©ä»‡è€…å¦å…‹ï¼ˆè»Œé“砲)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1863 -#: data/mp/messages/strings/names.txt:1863 +#: data/mp/messages/strings/names.txt:1866 #, fuzzy msgid "Vengeance Tracks Gauss Cannon" msgstr "履帶å¼å¾©ä»‡è€…å¦å…‹ï¼ˆé«˜æ–¯åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1864 -#: data/mp/messages/strings/names.txt:1864 +#: data/mp/messages/strings/names.txt:1867 #, fuzzy msgid "Vengeance Tracks Gauss Scourge" msgstr "履帶å¼å¾©ä»‡è€…å¦å…‹ï¼ˆ 天譴飛彈)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1867 -#: data/mp/messages/strings/names.txt:1867 +#: data/mp/messages/strings/names.txt:1870 #, fuzzy msgid "VTOL Cluster Bomb Bay Bug VTOL" msgstr "VTOL(集æŸç‚¸å½ˆè‰™ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1868 -#: data/mp/messages/strings/names.txt:1868 +#: data/mp/messages/strings/names.txt:1871 #, fuzzy msgid "VTOL Bunker Buster Bug VTOL" msgstr "毒蟲VTOL(碉堡終çµè€…)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1869 -#: data/mp/messages/strings/names.txt:1869 +#: data/mp/messages/strings/names.txt:1872 #, fuzzy msgid "VTOL Cluster Bomb Bay Scorpion VTOL" msgstr "毒è VTOL(集æŸç‚¸å½ˆè‰™ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1870 -#: data/mp/messages/strings/names.txt:1870 +#: data/mp/messages/strings/names.txt:1873 #, fuzzy msgid "VTOL Bunker Buster Scorpion VTOL" msgstr "毒è VTOL(碉堡終çµè€…)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1873 -#: data/mp/messages/strings/names.txt:1873 +#: data/mp/messages/strings/names.txt:1876 msgid "VTOL Lancer Bug VTOL" msgstr "毒蟲VTOL(æ§é¨Žå…µç«ç®­ï¼‰" @@ -9831,7 +10717,7 @@ msgid "VTOL HPV Cannon Bug VTOL" msgstr "毒蟲VTOL(高速加農砲)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1875 -#: data/mp/messages/strings/names.txt:1875 +#: data/mp/messages/strings/names.txt:1878 msgid "VTOL Lancer Scorpion VTOL" msgstr "毒è VTOL(æ§é¨Žå…µç«ç®­ï¼‰" @@ -9841,7 +10727,7 @@ msgid "VTOL HPV Cannon Scorpion VTOL" msgstr "毒è VTOL(高速加農砲)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1877 -#: data/mp/messages/strings/names.txt:1877 +#: data/mp/messages/strings/names.txt:1880 msgid "VTOL Lancer Mantis VTOL" msgstr "螳螂VTOL(æ§é¨Žå…µç«ç®­ï¼‰" @@ -9850,130 +10736,130 @@ msgid "VTOL HPV Cannon Mantis VTOL" msgstr "螳螂VTOL(高速加農砲)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1882 -#: data/mp/messages/strings/names.txt:1882 +#: data/mp/messages/strings/names.txt:1885 #, fuzzy msgid "Repair Turret Mantis Tracks" msgstr "螳螂修ç†è»Š" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1884 -#: data/mp/messages/strings/names.txt:1884 +#: data/mp/messages/strings/names.txt:1887 msgid "Lancer Scorpion Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1885 -#: data/mp/messages/strings/names.txt:1885 +#: data/mp/messages/strings/names.txt:1888 msgid "Heavy Cannon Scorpion Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1886 -#: data/mp/messages/strings/names.txt:1886 +#: data/mp/messages/strings/names.txt:1889 msgid "Lancer Scorpion VTOL" msgstr "毒è VTOL(æ§é¨Žå…µç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1887 -#: data/mp/messages/strings/names.txt:1887 +#: data/mp/messages/strings/names.txt:1890 msgid "Bunker Buster Scorpion VTOL" msgstr "毒è VTOL(碉堡終çµè€…)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1889 -#: data/mp/messages/strings/names.txt:1889 +#: data/mp/messages/strings/names.txt:1892 msgid "Command Turret Viper Tracks" msgstr "響尾蛇指æ®è»Š" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1890 -#: data/mp/messages/strings/names.txt:1890 +#: data/mp/messages/strings/names.txt:1893 msgid "Command Turret Cobra Tracks" msgstr "眼é¡è›‡æŒ‡æ®è»Š" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1891 -#: data/mp/messages/strings/names.txt:1891 +#: data/mp/messages/strings/names.txt:1894 msgid "Command Turret Scorpion Tracks" msgstr "毒è æŒ‡æ®è»Š" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1892 -#: data/mp/messages/strings/names.txt:1892 +#: data/mp/messages/strings/names.txt:1895 msgid "Command Turret Mantis Tracks" msgstr "螳螂指æ®è»Š" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1894 -#: data/mp/messages/strings/names.txt:1894 +#: data/mp/messages/strings/names.txt:1897 msgid "Lancer Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1895 -#: data/mp/messages/strings/names.txt:1895 +#: data/mp/messages/strings/names.txt:1898 msgid "Heavy Cannon Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆé‡åž‹åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1896 -#: data/mp/messages/strings/names.txt:1896 +#: data/mp/messages/strings/names.txt:1899 msgid "Tank Killer Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆå¦å…‹æ®ºæ‰‹ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1897 -#: data/mp/messages/strings/names.txt:1897 +#: data/mp/messages/strings/names.txt:1900 msgid "Scourge Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆå¤©è­´é£›å½ˆï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1898 -#: data/mp/messages/strings/names.txt:1898 +#: data/mp/messages/strings/names.txt:1901 #, fuzzy msgid "Heavy Machinegun Scorpion Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1900 -#: data/mp/messages/strings/names.txt:1900 +#: data/mp/messages/strings/names.txt:1903 msgid "Repair Scorpion Tracks" msgstr "毒è ä¿®ç†è»Š" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1901 -#: data/mp/messages/strings/names.txt:1901 +#: data/mp/messages/strings/names.txt:1904 msgid "Heavy Repair Scorpion Hover" msgstr "毒è é‡åž‹ä¿®ç†æ°£å¢Šèˆ¹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1904 -#: data/mp/messages/strings/names.txt:1904 +#: data/mp/messages/strings/names.txt:1907 msgid "Truck Cobra Hover" msgstr "眼é¡è›‡å·¥ç¨‹æ°£å¢Šèˆ¹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1905 -#: data/mp/messages/strings/names.txt:1905 +#: data/mp/messages/strings/names.txt:1908 msgid "Truck Scorpion Hover" msgstr "毒è å·¥ç¨‹æ°£å¢Šèˆ¹" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1906 -#: data/mp/messages/strings/names.txt:1906 +#: data/mp/messages/strings/names.txt:1909 msgid "Truck Mantis Hover" msgstr "螳螂工程氣墊船" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1909 -#: data/mp/messages/strings/names.txt:1909 +#: data/mp/messages/strings/names.txt:1912 msgid "Bunker Buster Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1910 -#: data/mp/messages/strings/names.txt:1910 +#: data/mp/messages/strings/names.txt:1913 msgid "Bunker Buster Scorpion Tracks" msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1911 -#: data/mp/messages/strings/names.txt:1911 +#: data/mp/messages/strings/names.txt:1914 msgid "Bunker Buster Mantis Tracks" msgstr "履帶å¼èž³èž‚å¦å…‹ï¼ˆç¢‰å ¡çµ‚çµè€…)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1913 -#: data/mp/messages/strings/names.txt:1913 +#: data/mp/messages/strings/names.txt:1916 msgid "Lancer Viper Tracks" msgstr "履帶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆæ§é¨Žå…µç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1915 -#: data/mp/messages/strings/names.txt:1915 +#: data/mp/messages/strings/names.txt:1918 #, fuzzy msgid "Mini-Rocket Cobra Half-Tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1916 -#: data/mp/messages/strings/names.txt:1916 +#: data/mp/messages/strings/names.txt:1919 #, fuzzy msgid "Mini-Rocket Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ï¼‰" @@ -9984,7 +10870,7 @@ msgid "Mini-Rocket Artillery Cobra Tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ç‚®ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1919 -#: data/mp/messages/strings/names.txt:1919 +#: data/mp/messages/strings/names.txt:1922 msgid "Inferno Cobra Half-Tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆåœ°ç„ç«ï¼‰" @@ -9993,55 +10879,175 @@ msgid "HPV Cannon Python Hover" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜é€ŸåŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1924 -#: data/mp/messages/strings/names.txt:1924 +#: data/mp/messages/strings/names.txt:1927 msgid "Scourge Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆå¤©è­´é£›å½ˆï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1925 -#: data/mp/messages/strings/names.txt:1925 +#: data/mp/messages/strings/names.txt:1928 msgid "Gauss Cannon Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜é€ŸåŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1926 -#: data/mp/messages/strings/names.txt:1926 +#: data/mp/messages/strings/names.txt:1929 msgid "Pulse Laser Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1927 -#: data/mp/messages/strings/names.txt:1927 +#: data/mp/messages/strings/names.txt:1930 msgid "Pulse Laser Tiger Tracks" msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1928 -#: data/mp/messages/strings/names.txt:1928 +#: data/mp/messages/strings/names.txt:1931 msgid "Heavy Laser Tiger Tracks" msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆé«˜èƒ½é›·å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1929 -#: data/mp/messages/strings/names.txt:1929 +#: data/mp/messages/strings/names.txt:1932 msgid "Gauss Cannon Wyvern Tracks" msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆé«˜æ–¯åŠ è¾²ç ²ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1930 -#: data/mp/messages/strings/names.txt:1930 +#: data/mp/messages/strings/names.txt:1933 msgid "Pulse Laser Wyvern Tracks" msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1931 -#: data/mp/messages/strings/names.txt:1931 +#: data/mp/messages/strings/names.txt:1934 msgid "Heavy Laser Wyvern Tracks" msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆé«˜èƒ½é›·å°„)" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1933 -#: data/mp/messages/strings/names.txt:1933 +#: data/mp/messages/strings/names.txt:1936 msgid "Machinegun Viper Half-Tracks" msgstr "åŠå±¥å¸¶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆæ©Ÿæ§ï¼‰" #: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1934 -#: data/mp/messages/strings/names.txt:1934 +#: data/mp/messages/strings/names.txt:1937 msgid "Flamer Viper Half-Tracks" msgstr "åŠå±¥å¸¶å¼éŸ¿å°¾è›‡å¦å…‹ï¼ˆç«ç„°å™´å°„)" +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1937 +#: data/mp/messages/strings/names.txt:1940 +#, fuzzy +msgid "Inferno Cobra Hover" +msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆåœ°ç„ç«ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1938 +#: data/mp/messages/strings/names.txt:1941 +#, fuzzy +msgid "Medium Cannon Cobra Half Track" +msgstr "履帶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆä¸­åž‹åŠ è¾²ç ²ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1939 +#: data/mp/messages/strings/names.txt:1942 +#, fuzzy +msgid "Inferno Python Hover" +msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜é€ŸåŠ è¾²ç ²ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1940 +#: data/mp/messages/strings/names.txt:1943 +#, fuzzy +msgid "Assault Gun Python Hover" +msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆçªæ“Šæ§ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1941 +#: data/mp/messages/strings/names.txt:1944 +#, fuzzy +msgid "Assault Gun Python Half Track" +msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆçªæ“Šæ§ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1942 +#: data/mp/messages/strings/names.txt:1945 +#, fuzzy +msgid "Heavy Machinegun Scorpion Half Tracks" +msgstr "履帶å¼æ¯’è å¦å…‹ï¼ˆé‡æ©Ÿæ§ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1943 +#: data/mp/messages/strings/names.txt:1946 +#, fuzzy +msgid "Assault Cannon Mantis Hover" +msgstr "çªæ“ŠåŠ è¾²ç ²é˜²è¡›å¡”" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1944 +#: data/mp/messages/strings/names.txt:1947 +#, fuzzy +msgid "Pulse Laser Leopard Hover" +msgstr "脈è¡é›·å°„" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1945 +#: data/mp/messages/strings/names.txt:1948 +#, fuzzy +msgid "Pulse Laser Panther Hover" +msgstr "脈è¡é›·å°„" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1946 +#: data/mp/messages/strings/names.txt:1949 +#, fuzzy +msgid "Rail Gun Tiger Hover" +msgstr "軌é“砲系武器å‡ç´š" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1947 +#: data/mp/messages/strings/names.txt:1950 +#, fuzzy +msgid "Pulse Laser Tiger Hover" +msgstr "履帶å¼è™Žå¼å¦å…‹ï¼ˆè„ˆè¡é›·å°„)" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1948 +#: data/mp/messages/strings/names.txt:1951 +#, fuzzy +msgid "Plasma Cannon Wyvern Tracks" +msgstr "履帶å¼é›™è¶³é£›é¾å¦å…‹ï¼ˆé«˜æ–¯åŠ è¾²ç ²ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1949 +#: data/mp/messages/strings/names.txt:1952 +#, fuzzy +msgid "Scourge Missile Wyvern Tracks" +msgstr "天譴飛彈防衛塔" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1950 +#: data/mp/messages/strings/names.txt:1953 +#, fuzzy +msgid "Flashlight Retribution Hover" +msgstr "激光雷射" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1951 +#: data/mp/messages/strings/names.txt:1954 +#, fuzzy +msgid "Mini-Rocket Viper Half Track" +msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1952 +#: data/mp/messages/strings/names.txt:1955 +#, fuzzy +msgid "Mini-Rocket Array Viper Half Track" +msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ç‚®ï¼‰" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1953 +#: data/mp/messages/strings/names.txt:1956 +#, fuzzy +msgid "Phosphor Bomb Bay Mantis VTOL" +msgstr "ç‡å…‰ç‚¸å½ˆè‰™" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1954 +#: data/mp/messages/strings/names.txt:1957 +#, fuzzy +msgid "Heap Bomb Bay Mantis VTOL" +msgstr "VTOL(高爆性穿甲炸彈艙)" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1955 +#: data/mp/messages/strings/names.txt:1958 +#, fuzzy +msgid "Heap Bomb Bay Retribution VTOL" +msgstr "中é‡ç´šè»Šèº«ï¼šæ‡²ç½°è€…" + +#: data/mods/multiplay/old-1.10-balance/messages/strings/names.txt:1956 +#: data/mp/messages/strings/names.txt:1959 +#, fuzzy +msgid "Scourge Retaliation VTOL" +msgstr "報復者" + #: data/mp/messages/resmessages12.rmsg:58 #, fuzzy msgid "Construction speed +10%" @@ -10714,7 +11720,7 @@ msgid "Upgraded battlefield computer system" msgstr "戰場電腦系統å‡ç´š" #: data/mp/messages/strings/names.txt:15 -#: data/mp/messages/strings/names.txt:680 +#: data/mp/messages/strings/names.txt:681 msgid "Cyborg Transport" msgstr "生化人é‹è¼¸è‰¦" @@ -10745,7 +11751,7 @@ msgid "Mini-Rocket Array Cobra Half-tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ç‚®ï¼‰" #: data/mp/messages/strings/names.txt:372 -#: data/mp/messages/strings/names.txt:1705 +#: data/mp/messages/strings/names.txt:1708 msgid "Radar Detector" msgstr "" @@ -10759,679 +11765,694 @@ msgid "Nexus Link" msgstr "Nexus Link(å¯æ­è¼‰æ–°çš„武器)" #: data/mp/messages/strings/names.txt:387 -#: data/mp/messages/strings/names.txt:922 +#: data/mp/messages/strings/names.txt:925 msgid "Nexus Link Turret" msgstr "Nexus Link(å¯æ­è¼‰æ–°çš„武器)" -#: data/mp/messages/strings/names.txt:409 -#: data/mp/messages/strings/names.txt:732 +#: data/mp/messages/strings/names.txt:404 +#, fuzzy +msgid "Hardcrete Gate" +msgstr "鈦鋼筋牆" + +#: data/mp/messages/strings/names.txt:410 +#: data/mp/messages/strings/names.txt:735 #, fuzzy msgid "Inferno Bunker" msgstr "æ§é¨Žå…µç«ç®­ç¢‰å ¡" -#: data/mp/messages/strings/names.txt:416 +#: data/mp/messages/strings/names.txt:417 msgid "Tornado AA Site" msgstr "é¾æ²é¢¨ç´šé«˜å°„ç ²" -#: data/mp/messages/strings/names.txt:417 -#: data/mp/messages/strings/names.txt:723 +#: data/mp/messages/strings/names.txt:418 +#: data/mp/messages/strings/names.txt:726 msgid "Cyclone AA Site" msgstr "暴風級高射砲" -#: data/mp/messages/strings/names.txt:473 -#: data/mp/messages/strings/names.txt:787 +#: data/mp/messages/strings/names.txt:474 +#: data/mp/messages/strings/names.txt:790 #, fuzzy msgid "Pulse Laser Hardpoint" msgstr "ç«ç„°å™´å°„è¦å¡ž" -#: data/mp/messages/strings/names.txt:475 -#: data/mp/messages/strings/names.txt:749 +#: data/mp/messages/strings/names.txt:476 +#: data/mp/messages/strings/names.txt:752 #, fuzzy msgid "Pulse Laser Tower" msgstr "脈è¡é›·å°„" -#: data/mp/messages/strings/names.txt:512 -#: data/mp/messages/strings/names.txt:1134 +#: data/mp/messages/strings/names.txt:513 +#: data/mp/messages/strings/names.txt:1137 #, fuzzy msgid "Seraph Missile Array" msgstr "增加飛彈準確率" -#: data/mp/messages/strings/names.txt:530 -#: data/mp/messages/strings/names.txt:1197 +#: data/mp/messages/strings/names.txt:531 +#: data/mp/messages/strings/names.txt:1200 #, fuzzy msgid "Mini-Rocket Array" msgstr "è¿·ä½ ç«ç®­ç‚®" -#: data/mp/messages/strings/names.txt:565 -#: data/mp/messages/strings/names.txt:1695 -#: data/mp/messages/strings/names.txt:1702 +#: data/mp/messages/strings/names.txt:566 +#: data/mp/messages/strings/names.txt:1698 +#: data/mp/messages/strings/names.txt:1705 msgid "Laser Satellite Command Post" msgstr "激光衛星指æ®ä¸­å¿ƒ" -#: data/mp/messages/strings/names.txt:582 +#: data/mp/messages/strings/names.txt:583 #, fuzzy msgid "VTOL Cluster Bomb Bay" msgstr "VTOL(集æŸç‚¸å½ˆè‰™ï¼‰" -#: data/mp/messages/strings/names.txt:589 +#: data/mp/messages/strings/names.txt:590 msgid "Collective Corner Wall" msgstr "Collective鈦鋼筋角牆" -#: data/mp/messages/strings/names.txt:611 +#: data/mp/messages/strings/names.txt:612 msgid "Nexus Wall" msgstr "NEXUS鈦鋼筋牆" -#: data/mp/messages/strings/names.txt:612 +#: data/mp/messages/strings/names.txt:613 msgid "Nexus Corner Wall" msgstr "NEXUS鈦鋼筋角牆" -#: data/mp/messages/strings/names.txt:718 +#: data/mp/messages/strings/names.txt:719 msgid "Plascrete Mk3" msgstr "超åˆé‡‘鋼筋牆三型" -#: data/mp/messages/strings/names.txt:719 +#: data/mp/messages/strings/names.txt:720 msgid "Plasteel" msgstr "超塑鋼筋牆一型" -#: data/mp/messages/strings/names.txt:720 +#: data/mp/messages/strings/names.txt:721 msgid "Plasteel Mk2" msgstr "超塑鋼筋牆二型" -#: data/mp/messages/strings/names.txt:721 +#: data/mp/messages/strings/names.txt:722 msgid "Plasteel Mk3" msgstr "超塑鋼筋牆一型" -#: data/mp/messages/strings/names.txt:728 -#: data/mp/messages/strings/names.txt:1389 +#: data/mp/messages/strings/names.txt:724 +#, fuzzy +msgid "Gate" +msgstr "éŠæˆ²" + +#: data/mp/messages/strings/names.txt:731 +#: data/mp/messages/strings/names.txt:1392 #, fuzzy msgid "Hyper Velocity Cannon Emplacement" msgstr "高速加農砲" -#: data/mp/messages/strings/names.txt:739 -#: data/mp/messages/strings/names.txt:1392 +#: data/mp/messages/strings/names.txt:742 +#: data/mp/messages/strings/names.txt:1395 #, fuzzy msgid "Seraph Missile Battery" msgstr "天使飛彈砲å°" -#: data/mp/messages/strings/names.txt:768 +#: data/mp/messages/strings/names.txt:771 msgid "Flamer Tower" msgstr "ç«ç„°å™´å°„防衛塔" -#: data/mp/messages/strings/names.txt:786 -#: data/mp/messages/strings/names.txt:1397 +#: data/mp/messages/strings/names.txt:789 +#: data/mp/messages/strings/names.txt:1400 #, fuzzy msgid "Hyper Velocity Cannon Hardpoint" msgstr "高速加農砲" -#: data/mp/messages/strings/names.txt:805 +#: data/mp/messages/strings/names.txt:808 #, fuzzy msgid "Automated Manufacturing" msgstr "åˆéšŽè‡ªå‹•åŒ–VTOL補給一型" -#: data/mp/messages/strings/names.txt:806 +#: data/mp/messages/strings/names.txt:809 #, fuzzy msgid "Automated Manufacturing Mk2" msgstr "åˆéšŽè‡ªå‹•åŒ–VTOL補給二型" -#: data/mp/messages/strings/names.txt:807 +#: data/mp/messages/strings/names.txt:810 #, fuzzy msgid "Automated Manufacturing Mk3" msgstr "åˆéšŽè‡ªå‹•åŒ–VTOL補給三型" -#: data/mp/messages/strings/names.txt:808 +#: data/mp/messages/strings/names.txt:811 #, fuzzy msgid "Robotic Manufacturing" msgstr "生產新單ä½" -#: data/mp/messages/strings/names.txt:809 +#: data/mp/messages/strings/names.txt:812 #, fuzzy msgid "Robotic Manufacturing Mk2" msgstr "中階自動化VTOL補給二型" -#: data/mp/messages/strings/names.txt:810 +#: data/mp/messages/strings/names.txt:813 #, fuzzy msgid "Robotic Manufacturing Mk3" msgstr "中階自動化VTOL補給三型" -#: data/mp/messages/strings/names.txt:811 +#: data/mp/messages/strings/names.txt:814 #, fuzzy msgid "Advanced Manufacturing" msgstr "高階戰爭" -#: data/mp/messages/strings/names.txt:812 +#: data/mp/messages/strings/names.txt:815 #, fuzzy msgid "Advanced Manufacturing Mk2" msgstr "高階自動化生產工廠二型" -#: data/mp/messages/strings/names.txt:813 +#: data/mp/messages/strings/names.txt:816 #, fuzzy msgid "Self-Replicating Manufacturing" msgstr "自我複製工廠製造" -#: data/mp/messages/strings/names.txt:814 +#: data/mp/messages/strings/names.txt:817 #, fuzzy msgid "Advanced Manufacturing Mk3" msgstr "高階自動化生產工廠三型" -#: data/mp/messages/strings/names.txt:833 +#: data/mp/messages/strings/names.txt:836 #, fuzzy msgid "Automated Repair Facility Mk2" msgstr "åˆéšŽè‡ªå‹•ä¿®ç†å·¥å» " -#: data/mp/messages/strings/names.txt:834 +#: data/mp/messages/strings/names.txt:837 #, fuzzy msgid "Automated Repair Facility Mk3" msgstr "åˆéšŽè‡ªå‹•ä¿®ç†å·¥å» " -#: data/mp/messages/strings/names.txt:835 +#: data/mp/messages/strings/names.txt:838 #, fuzzy msgid "Robotic Repair Facility" msgstr "中階自動修ç†å·¥å» " -#: data/mp/messages/strings/names.txt:836 +#: data/mp/messages/strings/names.txt:839 #, fuzzy msgid "Robotic Repair Facility Mk2" msgstr "中階自動修ç†å·¥å» äºŒåž‹" -#: data/mp/messages/strings/names.txt:837 +#: data/mp/messages/strings/names.txt:840 #, fuzzy msgid "Advanced Repair Facility" msgstr "高階自動修ç†å·¥å»  " -#: data/mp/messages/strings/names.txt:838 +#: data/mp/messages/strings/names.txt:841 #, fuzzy msgid "Robotic Repair Facility Mk3" msgstr "中階自動修ç†å·¥å» ä¸‰åž‹" -#: data/mp/messages/strings/names.txt:839 +#: data/mp/messages/strings/names.txt:842 #, fuzzy msgid "Advanced Repair Facility Mk2" msgstr "高階自動修ç†å·¥å» äºŒåž‹" -#: data/mp/messages/strings/names.txt:840 +#: data/mp/messages/strings/names.txt:843 #, fuzzy msgid "Advanced Repair Facility Mk3" msgstr "高階自動修ç†å·¥å» ä¸‰åž‹" -#: data/mp/messages/strings/names.txt:885 +#: data/mp/messages/strings/names.txt:888 msgid "Auto-Repair" msgstr "自動修ç†æŠ€è¡“" -#: data/mp/messages/strings/names.txt:896 -#: data/mp/messages/strings/names.txt:1647 -#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:899 +#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1651 msgid "Heavy Repair Turret" msgstr "é‡åž‹ä¿®ç†è»Š" -#: data/mp/messages/strings/names.txt:926 +#: data/mp/messages/strings/names.txt:929 msgid "Nexus Intruder Program" msgstr "NEXUS入侵程å¼" -#: data/mp/messages/strings/names.txt:927 -#: data/mp/messages/strings/names.txt:1688 +#: data/mp/messages/strings/names.txt:930 +#: data/mp/messages/strings/names.txt:1691 msgid "Nexus Resistance Circuits" msgstr "NEXUS 電腦入侵防禦系統一型" -#: data/mp/messages/strings/names.txt:928 +#: data/mp/messages/strings/names.txt:931 msgid "Nexus Resistance Circuits Mk2" msgstr "NEXUS 電腦入侵防禦系統二型" -#: data/mp/messages/strings/names.txt:929 +#: data/mp/messages/strings/names.txt:932 msgid "Nexus Resistance Circuits Mk3" msgstr "NEXUS 電腦入侵防禦系統三型" -#: data/mp/messages/strings/names.txt:1016 +#: data/mp/messages/strings/names.txt:1019 #, fuzzy msgid "Cluster Bomb Bay" msgstr "集æŸç‚¸å½ˆè‰™" -#: data/mp/messages/strings/names.txt:1021 +#: data/mp/messages/strings/names.txt:1024 #, fuzzy msgid "HE Bomb Shells" msgstr "HE迫擊砲彈一型" -#: data/mp/messages/strings/names.txt:1022 +#: data/mp/messages/strings/names.txt:1025 #, fuzzy msgid "Improved Bomb Warhead" msgstr "改善彈頭外型åŠè£å¡«æ•ˆèƒ½" -#: data/mp/messages/strings/names.txt:1023 +#: data/mp/messages/strings/names.txt:1026 #, fuzzy msgid "Advanced Bomb Warhead" msgstr "高階飛彈彈頭一型" -#: data/mp/messages/strings/names.txt:1093 +#: data/mp/messages/strings/names.txt:1096 msgid "Howitzer Fast Loader" msgstr "迫擊砲快速è£è¼‰ç³»çµ±" -#: data/mp/messages/strings/names.txt:1109 +#: data/mp/messages/strings/names.txt:1112 msgid "Rapid Fire Chaingun" msgstr "中階高速型éŠæ§å‡ç´š" -#: data/mp/messages/strings/names.txt:1158 +#: data/mp/messages/strings/names.txt:1161 msgid "Rail Target Prediction Computer" msgstr "軌é“目標é æ¸¬é›»è…¦" -#: data/mp/messages/strings/names.txt:1174 +#: data/mp/messages/strings/names.txt:1177 #, fuzzy msgid "HESH Mini-Rockets" msgstr "HEè¿·ä½ ç«ç®­ä¸€åž‹ï¼ˆ" -#: data/mp/messages/strings/names.txt:1175 +#: data/mp/messages/strings/names.txt:1178 #, fuzzy msgid "HESH Mini-Rockets Mk2" msgstr "HEè¿·ä½ ç«ç®­äºŒåž‹" -#: data/mp/messages/strings/names.txt:1176 +#: data/mp/messages/strings/names.txt:1179 #, fuzzy msgid "HESH Mini-Rockets Mk3" msgstr "HEè¿·ä½ ç«ç®­ä¸‰åž‹" -#: data/mp/messages/strings/names.txt:1385 +#: data/mp/messages/strings/names.txt:1388 msgid "Assault Gun Tower" msgstr "çªæ“Šæ§é˜²è¡›å¡”" -#: data/mp/messages/strings/names.txt:1439 +#: data/mp/messages/strings/names.txt:1442 msgid "Repair Cobra Tracks" msgstr "履帶å¼çœ¼é¡è›‡ä¿®ç†è»Š" -#: data/mp/messages/strings/names.txt:1475 +#: data/mp/messages/strings/names.txt:1478 #, fuzzy msgid "Hyper Velocity Cannon Python Tracks" msgstr "履帶å¼èŸ’蛇å¦å…‹ï¼ˆé«˜é€ŸåŠ è¾²ç ²ï¼‰" -#: data/mp/messages/strings/names.txt:1514 +#: data/mp/messages/strings/names.txt:1517 msgid "Bunker Buster Cobra Hover" msgstr "眼é¡è›‡æ°£å¢Šèˆ¹ï¼ˆç¢‰å ¡çµ‚çµè€…)" -#: data/mp/messages/strings/names.txt:1516 +#: data/mp/messages/strings/names.txt:1519 msgid "Sensor Upgrade Mk2" msgstr "é›·é”å‡ç´šäºŒåž‹" -#: data/mp/messages/strings/names.txt:1517 +#: data/mp/messages/strings/names.txt:1520 msgid "Sensor Upgrade Mk3" msgstr "é›·é”å‡ç´šä¸‰åž‹" -#: data/mp/messages/strings/names.txt:1518 +#: data/mp/messages/strings/names.txt:1521 msgid "Vapor Turbine Generator Mk2" msgstr "蒸氣渦輪發電機二型" -#: data/mp/messages/strings/names.txt:1522 +#: data/mp/messages/strings/names.txt:1525 msgid "Gas Turbine Generator Mk2" msgstr "燃氣渦輪發電機二型" -#: data/mp/messages/strings/names.txt:1523 +#: data/mp/messages/strings/names.txt:1526 msgid "Gas Turbine Generator Mk3" msgstr "燃氣渦輪發電機三型" -#: data/mp/messages/strings/names.txt:1526 +#: data/mp/messages/strings/names.txt:1529 msgid "Vapor Turbine Generator Mk3" msgstr "蒸氣渦輪發電機三型" -#: data/mp/messages/strings/names.txt:1611 +#: data/mp/messages/strings/names.txt:1614 msgid "Thermite Flamer Cyborg" msgstr "生化人步兵(é‹ç†±å應ç«ç„°ï¼‰" -#: data/mp/messages/strings/names.txt:1614 +#: data/mp/messages/strings/names.txt:1617 msgid "Thermite Flamer" msgstr "é‹ç†±å應ç«ç„°å™´å°„步兵" -#: data/mp/messages/strings/names.txt:1616 +#: data/mp/messages/strings/names.txt:1619 msgid "Grenadier Cyborg" msgstr "生化人步兵(手榴彈)" -#: data/mp/messages/strings/names.txt:1619 +#: data/mp/messages/strings/names.txt:1622 msgid "Grenadier" msgstr "生化人步兵(手榴彈)" -#: data/mp/messages/strings/names.txt:1623 #: data/mp/messages/strings/names.txt:1626 +#: data/mp/messages/strings/names.txt:1629 msgid "Combat Engineer" msgstr "工程生化人步兵" -#: data/mp/messages/strings/names.txt:1628 #: data/mp/messages/strings/names.txt:1631 +#: data/mp/messages/strings/names.txt:1634 msgid "Cyborg Mechanic" msgstr "維修生化人步兵" -#: data/mp/messages/strings/names.txt:1635 -#: data/mp/messages/strings/names.txt:1636 +#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1639 #, fuzzy msgid "Incendiary Howitzer" msgstr "燃燒榴彈砲" -#: data/mp/messages/strings/names.txt:1637 -#: data/mp/messages/strings/names.txt:1638 +#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1641 #, fuzzy msgid "Incendiary Howitzer Emplacement" msgstr "燃燒榴彈砲砲å°" -#: data/mp/messages/strings/names.txt:1639 -#: data/mp/messages/strings/names.txt:1640 +#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1643 msgid "Plasmite Flamer" msgstr "等離å­ç«ç„°å™´å°„" -#: data/mp/messages/strings/names.txt:1641 -#: data/mp/messages/strings/names.txt:1642 +#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1645 msgid "Plasmite Flamer Bunker" msgstr "等離å­ç«ç„°å™´å°„碉堡" -#: data/mp/messages/strings/names.txt:1643 -#: data/mp/messages/strings/names.txt:1644 +#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1647 #, fuzzy msgid "Incendiary Mortar" msgstr "燃燒迫擊砲" -#: data/mp/messages/strings/names.txt:1645 -#: data/mp/messages/strings/names.txt:1646 +#: data/mp/messages/strings/names.txt:1648 +#: data/mp/messages/strings/names.txt:1649 #, fuzzy msgid "Incendiary Mortar Pit" msgstr "燃燒迫擊砲" -#: data/mp/messages/strings/names.txt:1650 +#: data/mp/messages/strings/names.txt:1653 msgid "Cyborg Superdense Thermal Armor" msgstr "超緊密生化人熱能è£ç”²ä¸€åž‹" -#: data/mp/messages/strings/names.txt:1651 +#: data/mp/messages/strings/names.txt:1654 msgid "Cyborg Superdense Thermal Armor Mk2" msgstr "超緊密生化人熱能è£ç”²äºŒåž‹" -#: data/mp/messages/strings/names.txt:1652 +#: data/mp/messages/strings/names.txt:1655 msgid "Cyborg Superdense Thermal Armor Mk3" msgstr "超緊密生化人熱能è£ç”²ä¸‰åž‹" -#: data/mp/messages/strings/names.txt:1654 +#: data/mp/messages/strings/names.txt:1657 msgid "Vehicle Superdense Thermal Armor" msgstr "超緊密熱能è£ç”²ä¸€åž‹" -#: data/mp/messages/strings/names.txt:1655 +#: data/mp/messages/strings/names.txt:1658 msgid "Vehicle Superdense Thermal Armor Mk2" msgstr "超緊密熱能è£ç”²äºŒåž‹" -#: data/mp/messages/strings/names.txt:1656 +#: data/mp/messages/strings/names.txt:1659 msgid "Vehicle Superdense Thermal Armor Mk3" msgstr "超緊密熱能è£ç”²ä¸‰åž‹" -#: data/mp/messages/strings/names.txt:1660 -#: data/mp/messages/strings/names.txt:1661 -#: data/mp/messages/strings/names.txt:1662 #: data/mp/messages/strings/names.txt:1663 +#: data/mp/messages/strings/names.txt:1664 +#: data/mp/messages/strings/names.txt:1665 +#: data/mp/messages/strings/names.txt:1666 msgid "Super Heavy-Gunner" msgstr "超級生化人步兵(中型加農砲)" -#: data/mp/messages/strings/names.txt:1665 -#: data/mp/messages/strings/names.txt:1666 -#: data/mp/messages/strings/names.txt:1667 #: data/mp/messages/strings/names.txt:1668 +#: data/mp/messages/strings/names.txt:1669 +#: data/mp/messages/strings/names.txt:1670 +#: data/mp/messages/strings/names.txt:1671 msgid "Super Auto-Cannon Cyborg" msgstr "超級生化人步兵(高速加農砲Auto-Cannon)" -#: data/mp/messages/strings/names.txt:1670 -#: data/mp/messages/strings/names.txt:1671 -#: data/mp/messages/strings/names.txt:1672 #: data/mp/messages/strings/names.txt:1673 +#: data/mp/messages/strings/names.txt:1674 +#: data/mp/messages/strings/names.txt:1675 +#: data/mp/messages/strings/names.txt:1676 msgid "Super HPV Cyborg" msgstr "超級生化人步兵(高速加農砲HPV)" -#: data/mp/messages/strings/names.txt:1675 -#: data/mp/messages/strings/names.txt:1676 -#: data/mp/messages/strings/names.txt:1677 #: data/mp/messages/strings/names.txt:1678 +#: data/mp/messages/strings/names.txt:1679 +#: data/mp/messages/strings/names.txt:1680 +#: data/mp/messages/strings/names.txt:1681 msgid "Super Tank-Killer Cyborg" msgstr "超級生化人步兵(å¦å…‹æ®ºæ‰‹ç«ç®­ï¼‰" -#: data/mp/messages/strings/names.txt:1680 -#: data/mp/messages/strings/names.txt:1681 +#: data/mp/messages/strings/names.txt:1683 +#: data/mp/messages/strings/names.txt:1684 msgid "Heavy Laser" msgstr "高能雷射" -#: data/mp/messages/strings/names.txt:1682 +#: data/mp/messages/strings/names.txt:1685 msgid "VTOL Heavy Laser" msgstr "VTOL(高能雷射)" -#: data/mp/messages/strings/names.txt:1683 -#: data/mp/messages/strings/names.txt:1684 +#: data/mp/messages/strings/names.txt:1686 +#: data/mp/messages/strings/names.txt:1687 msgid "Heavy Laser Emplacement" msgstr "高能雷射砲å°" -#: data/mp/messages/strings/names.txt:1690 -#: data/mp/messages/strings/names.txt:1691 +#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1694 msgid "Twin Assault Cannon" msgstr "雙管çªæ“ŠåŠ è¾²ç ²" -#: data/mp/messages/strings/names.txt:1692 -#: data/mp/messages/strings/names.txt:1693 +#: data/mp/messages/strings/names.txt:1695 +#: data/mp/messages/strings/names.txt:1696 msgid "Twin Assault Cannon Bunker" msgstr "雙管çªæ“ŠåŠ è¾²ç ²ç¢‰å ¡" -#: data/mp/messages/strings/names.txt:1696 -#: data/mp/messages/strings/names.txt:1701 -#: data/mp/messages/strings/names.txt:1703 +#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1704 +#: data/mp/messages/strings/names.txt:1706 msgid "Satellite Uplink Center" msgstr "衛星資料上傳中心" -#: data/mp/messages/strings/names.txt:1697 -#: data/mp/messages/strings/names.txt:1699 +#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1702 msgid "Wide Spectrum Sensor" msgstr "廣域雷é”" -#: data/mp/messages/strings/names.txt:1698 -#: data/mp/messages/strings/names.txt:1700 +#: data/mp/messages/strings/names.txt:1701 +#: data/mp/messages/strings/names.txt:1703 msgid "Wide Spectrum Sensor Tower" msgstr "廣域雷é”" -#: data/mp/messages/strings/names.txt:1716 -#: data/mp/messages/strings/names.txt:1717 +#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1720 msgid "Plasma Cannon" msgstr "離å­åŠ è¾²ç ²" -#: data/mp/messages/strings/names.txt:1718 -#: data/mp/messages/strings/names.txt:1719 +#: data/mp/messages/strings/names.txt:1721 +#: data/mp/messages/strings/names.txt:1722 msgid "Plasma Cannon Emplacement" msgstr "離å­åŠ è¾²ç ²ç ²å°" -#: data/mp/messages/strings/names.txt:1721 -#: data/mp/messages/strings/names.txt:1722 -#: data/mp/messages/strings/names.txt:1723 #: data/mp/messages/strings/names.txt:1724 +#: data/mp/messages/strings/names.txt:1725 +#: data/mp/messages/strings/names.txt:1726 +#: data/mp/messages/strings/names.txt:1727 msgid "Super Pulse Laser Cyborg" msgstr "超級生化人步兵(脈è¡é›·å°„)" -#: data/mp/messages/strings/names.txt:1726 -#: data/mp/messages/strings/names.txt:1727 -#: data/mp/messages/strings/names.txt:1728 #: data/mp/messages/strings/names.txt:1729 +#: data/mp/messages/strings/names.txt:1730 +#: data/mp/messages/strings/names.txt:1731 +#: data/mp/messages/strings/names.txt:1732 msgid "Super Rail-Gunner" msgstr "超級生化人步兵(軌é“砲)" -#: data/mp/messages/strings/names.txt:1731 -#: data/mp/messages/strings/names.txt:1732 -#: data/mp/messages/strings/names.txt:1733 #: data/mp/messages/strings/names.txt:1734 +#: data/mp/messages/strings/names.txt:1735 +#: data/mp/messages/strings/names.txt:1736 +#: data/mp/messages/strings/names.txt:1737 msgid "Super Scourge Cyborg" msgstr "超級生化人步兵(天譴飛彈)" -#: data/mp/messages/strings/names.txt:1736 -#: data/mp/messages/strings/names.txt:1737 +#: data/mp/messages/strings/names.txt:1739 +#: data/mp/messages/strings/names.txt:1740 msgid "Nexus Link Tower" msgstr "Nexus Link防衛塔" -#: data/mp/messages/strings/names.txt:1739 #: data/mp/messages/strings/names.txt:1742 +#: data/mp/messages/strings/names.txt:1745 msgid "EMP Cannon" msgstr "é›»ç£è„ˆè¡åŠ è¾²ç ²" -#: data/mp/messages/strings/names.txt:1740 -#: data/mp/messages/strings/names.txt:1741 +#: data/mp/messages/strings/names.txt:1743 +#: data/mp/messages/strings/names.txt:1744 msgid "EMP Cannon Tower" msgstr "é›»ç£è„ˆè¡åŠ è¾²ç ²é˜²è¡›å¡”" -#: data/mp/messages/strings/names.txt:1746 -#: data/mp/messages/strings/names.txt:1748 +#: data/mp/messages/strings/names.txt:1749 +#: data/mp/messages/strings/names.txt:1751 msgid "Mass Driver Fortress" msgstr "質é‡æŠ•å°„器堡壘" -#: data/mp/messages/strings/names.txt:1747 +#: data/mp/messages/strings/names.txt:1750 msgid "Mass Driver" msgstr "質é‡æŠ•å°„器" -#: data/mp/messages/strings/names.txt:1750 -#: data/mp/messages/strings/names.txt:1751 -#: data/mp/messages/strings/names.txt:1752 +#: data/mp/messages/strings/names.txt:1753 +#: data/mp/messages/strings/names.txt:1754 +#: data/mp/messages/strings/names.txt:1755 msgid "Cannon Fortress" msgstr "加農砲堡壘" -#: data/mp/messages/strings/names.txt:1754 -#: data/mp/messages/strings/names.txt:1755 -#: data/mp/messages/strings/names.txt:1756 +#: data/mp/messages/strings/names.txt:1757 +#: data/mp/messages/strings/names.txt:1758 +#: data/mp/messages/strings/names.txt:1759 msgid "Heavy Rocket Bastion" msgstr "é‡åž‹ç«ç®­å ¡å£˜" -#: data/mp/messages/strings/names.txt:1758 -#: data/mp/messages/strings/names.txt:1759 -#: data/mp/messages/strings/names.txt:1760 +#: data/mp/messages/strings/names.txt:1761 +#: data/mp/messages/strings/names.txt:1762 +#: data/mp/messages/strings/names.txt:1763 msgid "Missile Fortress" msgstr "飛彈堡壘" -#: data/mp/messages/strings/names.txt:1764 +#: data/mp/messages/strings/names.txt:1767 #, fuzzy msgid "Heavy Body - Wyvern" msgstr "超é‡é‡ç´šè»Šèº«ï¼šé›™è¶³é£›é¾" -#: data/mp/messages/strings/names.txt:1765 +#: data/mp/messages/strings/names.txt:1768 msgid "Wyvern" msgstr "雙足飛é¾" -#: data/mp/messages/strings/names.txt:1767 +#: data/mp/messages/strings/names.txt:1770 #, fuzzy msgid "Multi Turret Body - Dragon" msgstr "超é‡é‡ç´šè»Šèº«ï¼šé¾" -#: data/mp/messages/strings/names.txt:1768 +#: data/mp/messages/strings/names.txt:1771 msgid "Dragon" msgstr "é¾" -#: data/mp/messages/strings/names.txt:1770 +#: data/mp/messages/strings/names.txt:1773 msgid "Superhot Plasmite gel" msgstr "超熱等離å­å‡è† ä¸€åž‹" -#: data/mp/messages/strings/names.txt:1771 +#: data/mp/messages/strings/names.txt:1774 msgid "Superhot Plasmite gel Mk2" msgstr "超熱等離å­å‡è† äºŒåž‹" -#: data/mp/messages/strings/names.txt:1772 +#: data/mp/messages/strings/names.txt:1775 msgid "Superhot Plasmite gel Mk3" msgstr "超熱等離å­å‡è† ä¸‰åž‹" -#: data/mp/messages/strings/names.txt:1776 -#: data/mp/messages/strings/names.txt:1778 +#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1781 msgid "EMP Mortar" msgstr "é›»ç£è„ˆè¡è¿«æ“Šç ²ç ²å°" -#: data/mp/messages/strings/names.txt:1777 -#: data/mp/messages/strings/names.txt:1779 +#: data/mp/messages/strings/names.txt:1780 +#: data/mp/messages/strings/names.txt:1782 msgid "EMP Mortar Pit" msgstr "é›»ç£è„ˆè¡è¿«æ“Šç ²ç ²å‘" -#: data/mp/messages/strings/names.txt:1780 -#: data/mp/messages/strings/names.txt:1782 +#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1785 msgid "Stormbringer AA Laser" msgstr "興風者級防空雷射" -#: data/mp/messages/strings/names.txt:1781 -#: data/mp/messages/strings/names.txt:1783 +#: data/mp/messages/strings/names.txt:1784 +#: data/mp/messages/strings/names.txt:1786 msgid "Stormbringer Emplacement" msgstr "興風者級高射砲å°" -#: data/mp/messages/strings/names.txt:1784 -#: data/mp/messages/strings/names.txt:1785 +#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1788 msgid "Vindicator Hardpoint" msgstr "æ“護者級地å°ç©ºé£›å½ˆè¦å¡ž" -#: data/mp/messages/strings/names.txt:1786 -#: data/mp/messages/strings/names.txt:1787 +#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1790 msgid "Whirlwind Hardpoint" msgstr "旋風級高射砲è¦å¡ž" -#: data/mp/messages/strings/names.txt:1788 -#: data/mp/messages/strings/names.txt:1789 +#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1792 msgid "Cyclone Hardpoint" msgstr "暴風級高射砲è¦å¡ž" -#: data/mp/messages/strings/names.txt:1790 -#: data/mp/messages/strings/names.txt:1791 +#: data/mp/messages/strings/names.txt:1793 +#: data/mp/messages/strings/names.txt:1794 msgid "Avenger Hardpoint" msgstr "復仇者者級地å°ç©ºé£›å½ˆè¦å¡ž" -#: data/mp/messages/strings/names.txt:1795 -#: data/mp/messages/strings/names.txt:1796 +#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1799 msgid "Twin Assault Gun" msgstr "雙管çªæ“Šæ§" -#: data/mp/messages/strings/names.txt:1797 -#: data/mp/messages/strings/names.txt:1798 +#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1801 msgid "Twin Assault Gun Hardpoint" msgstr "雙管çªæ“Šæ§è¦å¡ž" -#: data/mp/messages/strings/names.txt:1800 +#: data/mp/messages/strings/names.txt:1803 msgid "VTOL Plasmite Bomb Bay" msgstr "VTOL等離å­ç‚¸å½ˆè‰™" -#: data/mp/messages/strings/names.txt:1801 +#: data/mp/messages/strings/names.txt:1804 msgid "Plasmite Bomb" msgstr "等離å­ç‚¸å½ˆè‰™" -#: data/mp/messages/strings/names.txt:1802 +#: data/mp/messages/strings/names.txt:1805 msgid "VTOL EMP Missile Launcher" msgstr "VTOLé›»ç£è„ˆè¡é£›å½ˆç™¼å°„器" -#: data/mp/messages/strings/names.txt:1803 +#: data/mp/messages/strings/names.txt:1806 msgid "EMP Missile Launcher" msgstr "é›»ç£è„ˆè¡é£›å½ˆ" -#: data/mp/messages/strings/names.txt:1807 -#: data/mp/messages/strings/names.txt:1808 +#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1811 #, fuzzy msgid "Command Turret II" msgstr "指æ®å®˜" -#: data/mp/messages/strings/names.txt:1809 -#: data/mp/messages/strings/names.txt:1810 +#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1813 #, fuzzy msgid "Command Turret III" msgstr "指æ®å®˜è»Šä¸‰åž‹" -#: data/mp/messages/strings/names.txt:1811 -#: data/mp/messages/strings/names.txt:1812 +#: data/mp/messages/strings/names.txt:1814 +#: data/mp/messages/strings/names.txt:1815 #, fuzzy msgid "Command Turret IV" msgstr "指æ®å®˜" -#: data/mp/messages/strings/names.txt:1874 +#: data/mp/messages/strings/names.txt:1877 #, fuzzy msgid "VTOL Hyper Velocity Cannon Bug VTOL" msgstr "VTOL(高速加農砲)" -#: data/mp/messages/strings/names.txt:1876 +#: data/mp/messages/strings/names.txt:1879 #, fuzzy msgid "VTOL Hyper Velocity Cannon Scorpion VTOL" msgstr "毒è VTOL(高速加農砲)" -#: data/mp/messages/strings/names.txt:1878 +#: data/mp/messages/strings/names.txt:1881 #, fuzzy msgid "VTOL Hyper Velocity Cannon Mantis VTOL" msgstr "VTOL(高速加農砲)" -#: data/mp/messages/strings/names.txt:1917 +#: data/mp/messages/strings/names.txt:1920 #, fuzzy msgid "Mini-Rocket Array Cobra Tracks" msgstr "åŠå±¥å¸¶å¼çœ¼é¡è›‡å¦å…‹ï¼ˆè¿·ä½ ç«ç®­ç‚®ï¼‰" -#: data/mp/messages/strings/names.txt:1920 +#: data/mp/messages/strings/names.txt:1923 #, fuzzy msgid "Hyper Velocity Cannon Python Hover" msgstr "蟒蛇氣墊船(é‡åž‹åŠ è¾²ç ²ï¼‰" +#: data/mp/messages/strings/names.txt:1960 +#, fuzzy +msgid "Plasmite Retribution VTOL" +msgstr "中é‡ç´šè»Šèº«ï¼šæ‡²ç½°è€…" + #: lib/framework/i18n.c:54 #: lib/framework/i18n.c:111 msgid "System locale" @@ -11565,31 +12586,40 @@ msgstr "" msgid "Latin" msgstr "拉ä¸èªž" -#: lib/netplay/netplay.c:1277 -#: lib/netplay/netplay.c:2108 +#: lib/netplay/netplay.c:200 +#: lib/netplay/netplay.c:1058 msgid "Enter password here" msgstr "" -#: lib/netplay/netplay.c:3082 +#: lib/netplay/netplay.c:2043 #, c-format msgid "Could not resolve masterserver name (%s)!" msgstr "" -#: lib/netplay/netplay.c:3107 +#: lib/netplay/netplay.c:2056 #, c-format msgid "Could not communicate with lobby server! Is TCP port %u open for outgoing traffic?" msgstr "" -#: lib/netplay/netplay.c:3526 -msgid ", mods: " +#: po/strings.txt:1 +msgid "Warzone 2100" +msgstr "" + +#: po/strings.txt:2 +#, fuzzy +msgid "Strategy Game" +msgstr "儲存éŠæˆ²" + +#: po/strings.txt:3 +msgid "Postnuclear realtime strategy" msgstr "" #: src/challenge.c:188 #: src/hci.c:1018 -#: src/hci.c:3829 -#: src/hci.c:3980 -#: src/hci.c:4497 -#: src/hci.c:5701 +#: src/hci.c:3833 +#: src/hci.c:3982 +#: src/hci.c:4499 +#: src/hci.c:5685 #: src/intelmap.c:543 #: src/intorder.c:787 #: src/loadsave.c:256 @@ -11739,15 +12769,15 @@ msgstr "host" msgid "go directly to host screen" msgstr "go directly to host screen" -#: src/configuration.c:452 -#: src/configuration.c:453 -#: src/multistat.c:135 +#: src/configuration.c:445 +#: src/configuration.c:446 +#: src/multistat.c:124 msgid "Player" msgstr "玩家" #: src/design.c:457 #: src/design.c:478 -#: src/design.c:3559 +#: src/design.c:3555 msgid "New Vehicle" msgstr "新車身" @@ -11786,18 +12816,18 @@ msgstr "引擎輸出" #: src/design.c:729 #: src/design.c:784 -#: src/design.c:1586 -#: src/design.c:1623 -#: src/design.c:1644 -#: src/design.c:1662 -#: src/design.c:1683 -#: src/design.c:1701 -#: src/design.c:1739 -#: src/design.c:1774 -#: src/design.c:1909 -#: src/design.c:1926 -#: src/design.c:1961 -#: src/design.c:1997 +#: src/design.c:1582 +#: src/design.c:1619 +#: src/design.c:1640 +#: src/design.c:1658 +#: src/design.c:1679 +#: src/design.c:1697 +#: src/design.c:1735 +#: src/design.c:1770 +#: src/design.c:1905 +#: src/design.c:1922 +#: src/design.c:1957 +#: src/design.c:1993 msgid "Weight" msgstr "é‡é‡" @@ -11811,186 +12841,186 @@ msgstr "全部所需能æº" msgid "Total Body Points" msgstr "HP" -#: src/design.c:1065 -#: src/design.c:1097 +#: src/design.c:1061 +#: src/design.c:1093 msgid "Power Usage" msgstr "需è¦èƒ½æº" -#: src/design.c:1349 +#: src/design.c:1345 msgid "Transporter" msgstr "é‹è¼¸æ©Ÿ" -#: src/design.c:1371 +#: src/design.c:1367 msgid "Hydra " msgstr "" -#: src/design.c:1568 +#: src/design.c:1564 msgid "Sensor Range" msgstr "é›·é”å¯è¦–è·é›¢" -#: src/design.c:1577 +#: src/design.c:1573 msgid "Sensor Power" msgstr "é›·é”能æº" -#: src/design.c:1614 +#: src/design.c:1610 msgid "ECM Power" msgstr "ECM Power" -#: src/design.c:1636 -#: src/design.c:1653 -#: src/design.c:1675 -#: src/design.c:1692 +#: src/design.c:1632 +#: src/design.c:1649 +#: src/design.c:1671 +#: src/design.c:1688 msgid "Build Points" msgstr "建築物HP(Build Points)" -#: src/design.c:1715 -#: src/design.c:1747 +#: src/design.c:1711 +#: src/design.c:1743 msgid "Range" msgstr "射程" -#: src/design.c:1723 -#: src/design.c:1756 +#: src/design.c:1719 +#: src/design.c:1752 msgid "Damage" msgstr "傷害" -#: src/design.c:1731 -#: src/design.c:1765 +#: src/design.c:1727 +#: src/design.c:1761 msgid "Rate-of-Fire" msgstr "射速" -#: src/design.c:1901 -#: src/design.c:1917 +#: src/design.c:1897 +#: src/design.c:1913 msgid "Air Speed" msgstr "空中移動速度" -#: src/design.c:1937 -#: src/design.c:1970 +#: src/design.c:1933 +#: src/design.c:1966 msgid "Road Speed" msgstr "é“路移動速度" -#: src/design.c:1945 -#: src/design.c:1979 +#: src/design.c:1941 +#: src/design.c:1975 msgid "Off-Road Speed" msgstr "越野移動速度" -#: src/design.c:1953 -#: src/design.c:1988 +#: src/design.c:1949 +#: src/design.c:1984 msgid "Water Speed" msgstr "æ°´é¢ç§»å‹•é€Ÿåº¦" -#: src/design.c:2122 +#: src/design.c:2118 msgid "Weapons" msgstr "武器è£å‚™" -#: src/design.c:2144 +#: src/design.c:2140 msgid "Systems" msgstr "系統è£å‚™" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player left" msgstr "玩家" -#: src/display3d.c:562 +#: src/display3d.c:566 #, fuzzy msgid "Player dropped" msgstr "玩家" -#: src/display.c:1661 +#: src/display.c:1660 msgid "Cannot Build. Oil Resource Burning." msgstr "油田燃燒中,無法建築鑽油井" -#: src/display.c:1841 -#: src/display.c:2443 +#: src/display.c:1840 +#: src/display.c:2432 #, c-format msgid "%s - Damage %d%% - Experience %d, %s" msgstr "%s - æå‚· %d%% - 經驗值 %d, %s" -#: src/display.c:1857 +#: src/display.c:1856 #, fuzzy, c-format msgid "%s - Allied - Damage %d%% - Experience %d, %s" msgstr "%s - æå‚· %d%% - 經驗值 %d, %s" -#: src/display.c:2047 +#: src/display.c:2046 msgid "Truck ordered to build Oil Derrick" msgstr "命令工程車建造鑽油井" -#: src/display.c:2048 +#: src/display.c:2047 #, fuzzy msgid "2 trucks ordered to build Oil Derrick" msgstr "命令工程車建造鑽油井" -#: src/display.c:2049 +#: src/display.c:2048 #, fuzzy, c-format msgid "%d trucks ordered to build Oil Derrick" msgstr "命令工程車建造鑽油井" -#: src/droid.c:209 +#: src/droid.c:210 msgid "Unit Lost!" msgstr "æ失單ä½ï¼" -#: src/droid.c:1343 +#: src/droid.c:1344 msgid "Structure Restored" msgstr "建築物é‡å»º" -#: src/droid.c:2935 +#: src/droid.c:2960 #, c-format msgid "Group %u selected - %u Unit" msgid_plural "Group %u selected - %u Units" msgstr[0] "第 %u 隊è½ä»¤ - å…± %u å–®ä½" -#: src/droid.c:2948 +#: src/droid.c:2973 #, c-format msgid "%u unit assigned to Group %u" msgid_plural "%u units assigned to Group %u" msgstr[0] "å…± %u å–®ä½ è¢«æŒ‡æ´¾ç‚º 第 %u 隊" -#: src/droid.c:2961 +#: src/droid.c:2986 #, c-format msgid "Centered on Group %u - %u Unit" msgid_plural "Centered on Group %u - %u Units" msgstr[0] "視角移動至第 %u 隊 - å…± %u å–®ä½" -#: src/droid.c:2965 +#: src/droid.c:2990 #, c-format msgid "Aligning with Group %u - %u Unit" msgid_plural "Aligning with Group %u - %u Units" msgstr[0] "Aligning with Group %u - %u å–®ä½" -#: src/droid.c:3249 +#: src/droid.c:3274 msgid "Rookie" msgstr "èœé³¥" -#: src/droid.c:3250 +#: src/droid.c:3275 msgctxt "rank" msgid "Green" msgstr "é’æ¾€" -#: src/droid.c:3251 +#: src/droid.c:3276 msgid "Trained" msgstr "訓練有素的" -#: src/droid.c:3252 +#: src/droid.c:3277 msgid "Regular" msgstr "好樣的" -#: src/droid.c:3253 +#: src/droid.c:3278 msgid "Professional" msgstr "專家" -#: src/droid.c:3254 +#: src/droid.c:3279 msgid "Veteran" msgstr "è€æ‰‹" -#: src/droid.c:3255 +#: src/droid.c:3280 msgid "Elite" msgstr "è英" -#: src/droid.c:3256 +#: src/droid.c:3281 msgid "Special" msgstr "特務" -#: src/droid.c:3257 +#: src/droid.c:3282 msgid "Hero" msgstr "英雄" @@ -12036,11 +13066,11 @@ msgstr "教學模å¼" #: src/frontend.c:376 #: src/frontend.c:529 #: src/frontend.c:591 -#: src/frontend.c:733 -#: src/frontend.c:872 -#: src/frontend.c:979 -#: src/frontend.c:1186 -#: src/frontend.c:1329 +#: src/frontend.c:725 +#: src/frontend.c:864 +#: src/frontend.c:971 +#: src/frontend.c:1178 +#: src/frontend.c:1321 msgctxt "menu" msgid "Return" msgstr "返回" @@ -12121,19 +13151,19 @@ msgid "Video Playback" msgstr "播放影片" #: src/frontend.c:656 -#: src/frontend.c:826 +#: src/frontend.c:818 msgid "1X" msgstr "1å€å¤§å°" #: src/frontend.c:660 -#: src/frontend.c:816 +#: src/frontend.c:808 msgid "2X" msgstr "2å€å¤§å°" #: src/frontend.c:664 -#: src/frontend.c:821 -#: src/frontend.c:944 -#: src/frontend.c:1002 +#: src/frontend.c:813 +#: src/frontend.c:936 +#: src/frontend.c:994 msgid "Fullscreen" msgstr "全螢幕" @@ -12142,43 +13172,42 @@ msgid "Screen Shake" msgstr "震動螢幕" #: src/frontend.c:677 -#: src/frontend.c:707 -#: src/frontend.c:721 -#: src/frontend.c:757 -#: src/frontend.c:793 -#: src/frontend.c:802 -#: src/frontend.c:965 -#: src/frontend.c:1063 -#: src/frontend.c:1101 -#: src/frontend.c:1137 -#: src/frontend.c:1149 -#: src/frontend.c:1161 -#: src/frontend.c:1173 -#: src/frontend.c:1209 -#: src/frontend.c:1222 -#: src/frontend.c:1236 -#: src/frontend.c:1250 +#: src/frontend.c:705 +#: src/frontend.c:713 +#: src/frontend.c:749 +#: src/frontend.c:785 +#: src/frontend.c:794 +#: src/frontend.c:957 +#: src/frontend.c:1055 +#: src/frontend.c:1093 +#: src/frontend.c:1129 +#: src/frontend.c:1141 +#: src/frontend.c:1153 +#: src/frontend.c:1165 +#: src/frontend.c:1201 +#: src/frontend.c:1214 +#: src/frontend.c:1228 +#: src/frontend.c:1242 msgid "On" msgstr "é–‹å•Ÿ" #: src/frontend.c:681 -#: src/frontend.c:703 -#: src/frontend.c:713 -#: src/frontend.c:725 -#: src/frontend.c:752 -#: src/frontend.c:788 -#: src/frontend.c:806 -#: src/frontend.c:969 -#: src/frontend.c:1058 -#: src/frontend.c:1096 -#: src/frontend.c:1141 -#: src/frontend.c:1153 -#: src/frontend.c:1165 -#: src/frontend.c:1177 -#: src/frontend.c:1204 -#: src/frontend.c:1217 -#: src/frontend.c:1231 -#: src/frontend.c:1245 +#: src/frontend.c:701 +#: src/frontend.c:717 +#: src/frontend.c:744 +#: src/frontend.c:780 +#: src/frontend.c:798 +#: src/frontend.c:961 +#: src/frontend.c:1050 +#: src/frontend.c:1088 +#: src/frontend.c:1133 +#: src/frontend.c:1145 +#: src/frontend.c:1157 +#: src/frontend.c:1169 +#: src/frontend.c:1196 +#: src/frontend.c:1209 +#: src/frontend.c:1223 +#: src/frontend.c:1237 msgid "Off" msgstr "關閉" @@ -12188,153 +13217,152 @@ msgid "Fog" msgstr "迷霧" #: src/frontend.c:689 -#: src/frontend.c:775 +#: src/frontend.c:767 msgid "Mist" msgstr "迷霧" #: src/frontend.c:693 -#: src/frontend.c:768 +#: src/frontend.c:760 #: src/multiint.c:1325 msgid "Fog Of War" msgstr "完全迷霧" -#: src/frontend.c:700 -#: src/frontend.c:712 +#: src/frontend.c:698 msgid "Subtitles" msgstr "字幕" -#: src/frontend.c:718 +#: src/frontend.c:710 msgid "Shadows" msgstr "å½±å­" -#: src/frontend.c:729 +#: src/frontend.c:721 #, fuzzy msgid "GRAPHICS OPTIONS" msgstr "éŠæˆ²é¸é …" -#: src/frontend.c:860 +#: src/frontend.c:852 #: src/ingameop.c:177 msgid "Voice Volume" msgstr "語音音é‡" -#: src/frontend.c:864 +#: src/frontend.c:856 #: src/ingameop.c:182 msgid "FX Volume" msgstr "音效音é‡" -#: src/frontend.c:868 +#: src/frontend.c:860 #: src/ingameop.c:187 msgid "Music Volume" msgstr "背景音樂音é‡" -#: src/frontend.c:875 +#: src/frontend.c:867 #, fuzzy msgid "AUDIO OPTIONS" msgstr "éŠæˆ²é¸é …" -#: src/frontend.c:940 +#: src/frontend.c:932 msgid "Graphics Mode*" msgstr "圖形模å¼*" -#: src/frontend.c:948 -#: src/frontend.c:997 +#: src/frontend.c:940 +#: src/frontend.c:989 msgid "Windowed" msgstr "視窗模å¼" -#: src/frontend.c:952 +#: src/frontend.c:944 msgid "Resolution*" msgstr "解æžåº¦*" -#: src/frontend.c:957 +#: src/frontend.c:949 msgid "Texture size" msgstr "貼圖精細度" -#: src/frontend.c:961 +#: src/frontend.c:953 msgid "Vertical sync*" msgstr "åž‚ç›´åŒæ­¥*" -#: src/frontend.c:973 +#: src/frontend.c:965 msgid "* Takes effect on game restart" msgstr "*é‡å•ŸéŠæˆ²å¾Œç”Ÿæ•ˆ" -#: src/frontend.c:976 +#: src/frontend.c:968 #, fuzzy msgid "VIDEO OPTIONS" msgstr "éŠæˆ²é¸é …" -#: src/frontend.c:1134 +#: src/frontend.c:1126 #, fuzzy msgid "Reverse Rotation" msgstr "åå‘滑鼠" -#: src/frontend.c:1145 +#: src/frontend.c:1137 msgid "Trap Cursor" msgstr "æ•æ‰æ»‘é¼ " -#: src/frontend.c:1157 +#: src/frontend.c:1149 msgid "Colored Cursors*" msgstr "" -#: src/frontend.c:1170 +#: src/frontend.c:1162 #, fuzzy msgid "Switch Mouse Buttons" msgstr "滑鼠é¸é …" -#: src/frontend.c:1180 +#: src/frontend.c:1172 msgid "* May negatively affect performance" msgstr "" -#: src/frontend.c:1183 +#: src/frontend.c:1175 #, fuzzy msgid "MOUSE OPTIONS" msgstr "éŠæˆ²é¸é …" -#: src/frontend.c:1284 -#: src/frontend.c:1350 +#: src/frontend.c:1276 +#: src/frontend.c:1342 msgid "Difficulty" msgstr "難度" -#: src/frontend.c:1288 -#: src/frontend.c:1358 -#: src/frontend.c:1389 +#: src/frontend.c:1280 +#: src/frontend.c:1350 +#: src/frontend.c:1381 msgid "Easy" msgstr "容易" -#: src/frontend.c:1291 -#: src/frontend.c:1361 -#: src/frontend.c:1381 +#: src/frontend.c:1283 +#: src/frontend.c:1353 +#: src/frontend.c:1373 msgid "Normal" msgstr "普通" -#: src/frontend.c:1295 -#: src/frontend.c:1364 -#: src/frontend.c:1385 +#: src/frontend.c:1287 +#: src/frontend.c:1356 +#: src/frontend.c:1377 msgid "Hard" msgstr "困難" -#: src/frontend.c:1300 -#: src/frontend.c:1351 +#: src/frontend.c:1292 +#: src/frontend.c:1343 msgid "Scroll Speed" msgstr "æ²å‹•é€Ÿåº¦" -#: src/frontend.c:1314 -#: src/frontend.c:1348 +#: src/frontend.c:1306 +#: src/frontend.c:1340 msgid "Language" msgstr "語言" -#: src/frontend.c:1326 -#: src/frontend.c:1349 +#: src/frontend.c:1318 +#: src/frontend.c:1341 msgid "Unit Colour" msgstr "å–®ä½é¡è‰²" -#: src/frontend.c:1332 -#: src/frontend.c:1352 +#: src/frontend.c:1324 +#: src/frontend.c:1344 msgid "GAME OPTIONS" msgstr "éŠæˆ²é¸é …" -#: src/frontend.c:1693 +#: src/frontend.c:1685 #: src/multiint.c:2235 -msgid "Active mods: " +msgid "Mod: " msgstr "" #: src/hci.c:1363 @@ -12368,105 +13396,105 @@ msgstr "玩家 %u 利用作弊(除錯)模å¼å»ºç«‹äº†ä¸€å€‹æ–°åŠŸèƒ½: %s." msgid "Player %u is cheating (debug menu) him/herself a new droid: %s." msgstr "玩家 %u 利用作弊(除錯)模å¼å»ºç«‹äº†ä¸€å€‹æ–°droid: %s." -#: src/hci.c:3731 +#: src/hci.c:3735 msgid "Commanders (F6)" msgstr "指æ®å‘½ä»¤ (F6)" -#: src/hci.c:3747 +#: src/hci.c:3751 msgid "Intelligence Display (F5)" msgstr "顯示任務åŠæƒ…報(F5)" -#: src/hci.c:3763 +#: src/hci.c:3767 msgid "Manufacture (F1)" msgstr "ç”Ÿç”¢æ–°çš„å–®ä½ ï¼ˆF1)" -#: src/hci.c:3779 +#: src/hci.c:3783 msgid "Design (F4)" msgstr "設計新的單ä½ï¼ˆF4)" -#: src/hci.c:3795 +#: src/hci.c:3799 msgid "Research (F2)" msgstr "研發新科技(F2)" -#: src/hci.c:3811 +#: src/hci.c:3815 msgid "Build (F3)" msgstr "建造新的建築物 (F3)" -#: src/hci.c:3891 +#: src/hci.c:3893 #: src/multiint.c:1370 #: src/multimenu.c:763 msgid "Power" msgstr "能æº" -#: src/hci.c:4075 +#: src/hci.c:4077 msgid "Tile" msgstr "貼圖" -#: src/hci.c:4076 +#: src/hci.c:4078 msgid "Place tiles on map" msgstr "在地圖上加入貼圖" -#: src/hci.c:4085 +#: src/hci.c:4087 msgid "Unit" msgstr "å–®ä½" -#: src/hci.c:4086 +#: src/hci.c:4088 msgid "Place Unit on map" msgstr "在地圖上加入單ä½" -#: src/hci.c:4094 +#: src/hci.c:4096 msgid "Struct" msgstr "建築" -#: src/hci.c:4095 +#: src/hci.c:4097 msgid "Place Structures on map" msgstr "在地圖上加入建築物" -#: src/hci.c:4103 +#: src/hci.c:4105 msgid "Feat" msgstr "特徵" -#: src/hci.c:4104 +#: src/hci.c:4106 msgid "Place Features on map" msgstr "在地圖上加入特徵" -#: src/hci.c:4115 +#: src/hci.c:4117 msgid "Pause or unpause the game" msgstr "æš«åœï¼ˆæˆ–繼續)éŠæˆ²" -#: src/hci.c:4129 +#: src/hci.c:4131 msgid "Align height of all map objects" msgstr "使地圖上所有物件等高" -#: src/hci.c:4154 +#: src/hci.c:4156 #: src/ingameop.c:119 #: src/ingameop.c:276 #: src/ingameop.c:281 msgid "Quit" msgstr "退出" -#: src/hci.c:4155 +#: src/hci.c:4157 msgid "Exit Game" msgstr "離開éŠæˆ²" -#: src/hci.c:4582 +#: src/hci.c:4580 #: src/intdisplay.c:270 msgid "Progress Bar" msgstr "進度æ¢" -#: src/hci.c:5616 +#: src/hci.c:5600 msgid "Factory Delivery Point" msgstr "工廠單ä½ç”¢å‡ºé»ž" -#: src/hci.c:5635 +#: src/hci.c:5619 msgid "Loop Production" msgstr "循環生產" -#: src/hci.c:5726 +#: src/hci.c:5710 msgid "Tab Scroll left" msgstr "é ç°½å‘å·¦æ²å‹•" -#: src/hci.c:5743 +#: src/hci.c:5727 msgid "Tab Scroll right" msgstr "é ç°½å‘å³æ²å‹•" @@ -12510,6 +13538,14 @@ msgstr "" msgid "--> QUIT <--" msgstr "" +#: src/init.c:391 +#, c-format +msgid "" +"The required mod could not be loaded: %s\n" +"\n" +"Warzone will try to load the game without it." +msgstr "" + #: src/intdisplay.c:197 #, fuzzy msgid "Build Progress" @@ -12525,7 +13561,7 @@ msgid "Power Accrued" msgstr "能é‡å¢žåŠ " #: src/intelmap.c:247 -#: src/keybind.c:1400 +#: src/keybind.c:1396 msgid "PAUSED" msgstr "æš«åœ" @@ -12652,293 +13688,293 @@ msgstr "指定VTOL工廠生產" msgid "Circle" msgstr "圓(循環)" -#: src/keybind.c:134 +#: src/keybind.c:135 msgid "Sorry, that cheat is disabled in multiplayer games." msgstr "抱歉,多人éŠæˆ²ä¸­ç„¡æ³•ä½¿ç”¨æ­¤ä½œå¼Šç¢¼" -#: src/keybind.c:140 +#: src/keybind.c:141 msgid "Warning! This cheat is buggy. We recommend to NOT use it." msgstr "" -#: src/keybind.c:224 +#: src/keybind.c:225 msgid "Lets us see what you see!" msgstr "讓我看看你看到了什麼ï¼" -#: src/keybind.c:226 +#: src/keybind.c:227 msgid "Fine, weapon & sensor display is off!" msgstr "關閉細節ã€æ­¦å™¨åŠé›·é”顯示" -#: src/keybind.c:357 +#: src/keybind.c:358 #, fuzzy, c-format msgid "Player %u is cheating him/herself a new droid army of %s(s)." msgstr "玩家 %u 利用作弊(除錯)模å¼å»ºç«‹äº†ä¸€å€‹æ–°droid: %s." -#: src/keybind.c:397 -#: src/keybind.c:427 -#: src/keybind.c:444 -#: src/keybind.c:488 -#: src/keybind.c:593 -#: src/keybind.c:633 -#: src/keybind.c:739 -#: src/keybind.c:1290 -#: src/keybind.c:1347 -#: src/keybind.c:1449 -#: src/keybind.c:1545 -#: src/keybind.c:1896 -#: src/keybind.c:1937 +#: src/keybind.c:398 +#: src/keybind.c:428 +#: src/keybind.c:445 +#: src/keybind.c:489 +#: src/keybind.c:597 +#: src/keybind.c:637 +#: src/keybind.c:743 +#: src/keybind.c:1286 +#: src/keybind.c:1343 +#: src/keybind.c:1445 +#: src/keybind.c:1541 +#: src/keybind.c:1892 +#: src/keybind.c:1933 #, c-format msgid "(Player %u) is using cheat :%s" msgstr "" -#: src/keybind.c:398 +#: src/keybind.c:399 msgid "Hard as nails!!!" msgstr "åƒçˆªå­ä¸€æ¨£ç¡¬ï¼ï¼" -#: src/keybind.c:412 +#: src/keybind.c:413 msgid "Takings thing easy!" msgstr "讓事情變簡單ï¼" -#: src/keybind.c:428 +#: src/keybind.c:429 msgid "1000 big ones!!!" msgstr "1000 big ones!!!" -#: src/keybind.c:445 +#: src/keybind.c:446 msgid "Power overwhelming" msgstr "巨大的能é‡" -#: src/keybind.c:460 +#: src/keybind.c:461 msgid "Back to normality!" msgstr "回到正常狀態" -#: src/keybind.c:473 +#: src/keybind.c:474 msgid "Getting tricky!" msgstr "得到技巧ï¼" -#: src/keybind.c:489 +#: src/keybind.c:490 msgid "Twice as nice!" msgstr "給我兩å€çš„力é‡ï¼ï¼" -#: src/keybind.c:500 +#: src/keybind.c:501 msgid "FPS display is enabled." msgstr "FPS顯示開啟" -#: src/keybind.c:504 +#: src/keybind.c:505 msgid "FPS display is disabled." msgstr "FPS顯示關閉" -#: src/keybind.c:525 +#: src/keybind.c:529 #, c-format msgid "FPS %d; FPS-Limit: %d; PIEs %d; polys %d; Terr. polys %d; States %d" msgstr "FPS %d; FPSé™åˆ¶: %d; PIEs %d; polys %d; Terr. polys %d; 狀態 %d" -#: src/keybind.c:557 +#: src/keybind.c:561 #, c-format msgid "(Player %u) is using a cheat :Num Droids: %d Num Structures: %d Num Features: %d" msgstr "" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power disabled" msgstr "ç„¡é™åˆ¶èƒ½æºï¼šé—œ" -#: src/keybind.c:594 +#: src/keybind.c:598 msgid "Infinite power enabled" msgstr "ç„¡é™åˆ¶èƒ½æºï¼šé–‹" -#: src/keybind.c:634 +#: src/keybind.c:638 msgid "All items made available" msgstr "å¯ä½¿ç”¨æ‰€æœ‰çš„é …ç›®" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog on" msgstr "戰爭迷霧開啟" -#: src/keybind.c:740 +#: src/keybind.c:744 msgid "Fog off" msgstr "戰爭迷霧關閉" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, c-format msgid "Warning! This cheat can cause dire problems later on! [%s]" msgstr "" -#: src/keybind.c:1179 +#: src/keybind.c:1175 #, fuzzy msgid "Ending Mission." msgstr "傳來訊æ¯..." -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW ENABLED!" msgstr "" -#: src/keybind.c:1291 +#: src/keybind.c:1287 msgid "CHEATS ARE NOW DISABLED!" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode ON" msgstr "" -#: src/keybind.c:1348 +#: src/keybind.c:1344 msgid "God Mode OFF" msgstr "" -#: src/keybind.c:1360 +#: src/keybind.c:1356 msgid "View Aligned to North" msgstr "View Aligned to North" -#: src/keybind.c:1369 +#: src/keybind.c:1365 #, fuzzy, c-format msgid "Trap cursor %s" msgstr "æ•æ‰æ»‘é¼ " -#: src/keybind.c:1450 +#: src/keybind.c:1446 msgid "Researched EVERYTHING for you!" msgstr "替你研發所有科技ï¼" -#: src/keybind.c:1481 +#: src/keybind.c:1477 #, c-format msgid "(Player %u) is using cheat :%s %s" msgstr "" -#: src/keybind.c:1482 +#: src/keybind.c:1478 #, fuzzy msgid "Researched" msgstr "研發新科技" -#: src/keybind.c:1503 +#: src/keybind.c:1499 msgid "Only displaying energy bars when selected" msgstr "" -#: src/keybind.c:1506 +#: src/keybind.c:1502 msgid "Always displaying energy bars for units" msgstr "" -#: src/keybind.c:1509 +#: src/keybind.c:1505 msgid "Always displaying energy bars for units and structures" msgstr "" -#: src/keybind.c:1531 +#: src/keybind.c:1527 msgid "Demo mode off - Returning to normal game mode" msgstr "關閉展示模å¼â€”回到正常éŠæˆ²æ¨¡å¼" -#: src/keybind.c:1546 +#: src/keybind.c:1542 #, fuzzy msgid "Debug menu is Open" msgstr "建築é¸å–®å°‡é‡æ–°é–‹å•Ÿ" -#: src/keybind.c:1577 +#: src/keybind.c:1573 msgid "Unable to locate any resource extractors!" msgstr "無法找到任何資æºï¼ˆresource extractors)" -#: src/keybind.c:1798 +#: src/keybind.c:1794 msgid "Oh, the weather outside is frightful... SNOW" msgstr "喔,外é¢çš„天氣真糟...下雪" -#: src/keybind.c:1804 +#: src/keybind.c:1800 msgid "Singing in the rain, I'm singing in the rain... RAIN" msgstr "下雨啦~下雨啦~" -#: src/keybind.c:1810 +#: src/keybind.c:1806 msgid "Forecast : Clear skies for all areas... NO WEATHER" msgstr "天氣é å ±ï¼šä¸€æ•´ç‰‡æ™´æœ—的天空。" -#: src/keybind.c:1895 +#: src/keybind.c:1891 msgid "Warning! This can have drastic consequences if used incorrectly in missions." msgstr "" -#: src/keybind.c:1897 +#: src/keybind.c:1893 #, fuzzy msgid "All enemies destroyed by cheating!" msgstr "敵è»å·²ç¶“死了...由於你作弊的關係.." -#: src/keybind.c:1938 +#: src/keybind.c:1934 msgid "Destroying selected droids and structures!" msgstr "" -#: src/keybind.c:2460 +#: src/keybind.c:2456 msgid "Centered on player HQ, direction NORTH" msgstr "視角移至主基地,é¢å‘北方" -#: src/keybind.c:2472 +#: src/keybind.c:2468 msgid "Unable to locate HQ!" msgstr "無法定ä½è‡³ä¸»åŸºåœ°" -#: src/keybind.c:2479 +#: src/keybind.c:2475 msgid "Formation speed limiting has been removed from the game due to bugs." msgstr "" -#: src/keybind.c:2528 +#: src/keybind.c:2524 msgid "Vertical rotation direction: Normal" msgstr "" -#: src/keybind.c:2533 +#: src/keybind.c:2529 msgid "Vertical rotation direction: Flipped" msgstr "" -#: src/keybind.c:2542 +#: src/keybind.c:2538 msgid "Screen shake when things die: Off" msgstr "" -#: src/keybind.c:2547 +#: src/keybind.c:2543 msgid "Screen shake when things die: On" msgstr "" -#: src/keybind.c:2592 -#: src/keybind.c:2635 +#: src/keybind.c:2588 +#: src/keybind.c:2631 #, fuzzy msgid "Sorry, but game speed cannot be changed in multiplayer." msgstr "抱歉,多人éŠæˆ²ä¸­ç„¡æ³•ä½¿ç”¨æ­¤ä½œå¼Šç¢¼" -#: src/keybind.c:2613 -#: src/keybind.c:2656 -#: src/keybind.c:2678 +#: src/keybind.c:2609 +#: src/keybind.c:2652 +#: src/keybind.c:2674 msgid "Game Speed Reset" msgstr "é‡è¨­éŠæˆ²é€Ÿåº¦" -#: src/keybind.c:2617 +#: src/keybind.c:2613 #, c-format msgid "Game Speed Increased to %3.1f" msgstr "éŠæˆ²é€Ÿåº¦å¢žåŠ è‡³ %3.1f" -#: src/keybind.c:2660 +#: src/keybind.c:2656 #, c-format msgid "Game Speed Reduced to %3.1f" msgstr "éŠæˆ²é€Ÿåº¦æ¸›å°‘至 %3.1f" -#: src/keybind.c:2690 +#: src/keybind.c:2686 msgid "Build menu will reopen" msgstr "建築é¸å–®å°‡é‡æ–°é–‹å•Ÿ" -#: src/keybind.c:2694 +#: src/keybind.c:2690 msgid "Build menu will not reopen" msgstr "建造é¸å–®å°‡ä¸æœƒé–‹å•Ÿ" -#: src/keybind.c:2706 +#: src/keybind.c:2702 msgid "Radar showing friend-foe colors" msgstr "é›·é”顯示å‹è»é¡è‰²" -#: src/keybind.c:2710 +#: src/keybind.c:2706 msgid "Radar showing player colors" msgstr "é›·é”顯示玩家é¡è‰²" -#: src/keybind.c:2731 +#: src/keybind.c:2727 msgid "Radar showing only objects" msgstr "é›·é”僅顯示物件" -#: src/keybind.c:2734 +#: src/keybind.c:2730 msgid "Radar blending terrain and height" msgstr "é›·é”æ繪地形åŠé«˜åº¦" -#: src/keybind.c:2737 +#: src/keybind.c:2733 msgid "Radar showing terrain" msgstr "é›·é”顯示地形" -#: src/keybind.c:2740 +#: src/keybind.c:2736 #, fuzzy msgid "Radar showing revealed terrain" msgstr "é›·é”顯示地形" -#: src/keybind.c:2743 +#: src/keybind.c:2739 msgid "Radar showing height" msgstr "é›·é”顯示高度" @@ -13363,8 +14399,8 @@ msgstr "繼續éŠæˆ²" msgid "GAME SAVED :" msgstr "éŠæˆ²å·²å„²å­˜" -#: src/move.c:2697 -#: src/move.c:2713 +#: src/move.c:2692 +#: src/move.c:2708 #, c-format msgid "You found %u power in an oil drum." msgstr "" @@ -13677,21 +14713,21 @@ msgstr "主玩家將 %s 踢出éŠæˆ²ï¼" msgid "Host is Starting Game" msgstr "主玩家已開始éŠæˆ²" -#: src/multiint.c:3452 +#: src/multiint.c:3459 msgid "Players" msgstr "玩家" -#: src/multiint.c:3569 +#: src/multiint.c:3576 #, c-format msgid "Sending Map: %d%% " msgstr "" -#: src/multiint.c:3577 +#: src/multiint.c:3584 #, c-format msgid "Map: %d%% downloaded" msgstr "" -#: src/multiint.c:3603 +#: src/multiint.c:3610 msgid "HOST" msgstr "" @@ -13700,27 +14736,27 @@ msgstr "" msgid "Players Still Joining" msgstr "玩家加入中" -#: src/multijoin.c:213 +#: src/multijoin.c:214 #, c-format msgid "%s has Left the Game" msgstr "%s 已離開éŠæˆ²" -#: src/multijoin.c:227 +#: src/multijoin.c:228 #, c-format msgid "File transfer has been aborted for %d." msgstr "" -#: src/multijoin.c:348 +#: src/multijoin.c:349 #, c-format msgid "%s (%u) has an incompatible mod, and has been kicked." msgstr "" -#: src/multijoin.c:387 +#: src/multijoin.c:388 #, c-format msgid "%s is Joining the Game" msgstr "%s 加入éŠæˆ²" -#: src/multijoin.c:397 +#: src/multijoin.c:398 #, fuzzy msgid "System message:" msgstr "系統語系" @@ -13808,48 +14844,48 @@ msgstr "æ供玩家能æº" msgid "Kicking player %s, because they tried to bypass data integrity check!" msgstr "" -#: src/multiplay.c:1064 +#: src/multiplay.c:1072 #, fuzzy msgid "(allies" msgstr "åŒç›Ÿ" -#: src/multiplay.c:1072 +#: src/multiplay.c:1080 msgid "(private to " msgstr "" -#: src/multiplay.c:1085 +#: src/multiplay.c:1093 msgid "[invalid]" msgstr "" -#: src/multiplay.c:1944 +#: src/multiplay.c:1952 msgid "Green" msgstr "綠色" -#: src/multiplay.c:1945 +#: src/multiplay.c:1953 msgid "Orange" msgstr "橙色" -#: src/multiplay.c:1946 +#: src/multiplay.c:1954 msgid "Grey" msgstr "ç°è‰²" -#: src/multiplay.c:1947 +#: src/multiplay.c:1955 msgid "Black" msgstr "黑色" -#: src/multiplay.c:1948 +#: src/multiplay.c:1956 msgid "Red" msgstr "紅色" -#: src/multiplay.c:1949 +#: src/multiplay.c:1957 msgid "Blue" msgstr "è—色" -#: src/multiplay.c:1950 +#: src/multiplay.c:1958 msgid "Pink" msgstr "粉紅色" -#: src/multiplay.c:1951 +#: src/multiplay.c:1959 msgid "Cyan" msgstr "é’綠色" @@ -13992,12 +15028,12 @@ msgstr "ä½ ç²å‹äº†ï¼" msgid "YOU WERE DEFEATED!" msgstr "你被打敗了ï¼" -#: src/scriptfuncs.c:10151 +#: src/scriptfuncs.c:10164 #, c-format msgid "Beacon received from %s!" msgstr "ç”± %s ç²å¾—引導指標" -#: src/scriptfuncs.c:10197 +#: src/scriptfuncs.c:10210 #, c-format msgid "Beacon %d" msgstr "引導指標 %d" @@ -14025,61 +15061,61 @@ msgstr "找ä¸åˆ°ä»»ä½•é›·é”å–®ä½ï¼" msgid "Unable to locate any Commanders!" msgstr "找ä¸åˆ°ä»»ä½•æŒ‡æ®å®˜è»Šï¼" -#: src/structure.c:2838 +#: src/structure.c:2837 msgid "Command Control Limit Reached - Production Halted" msgstr "å·²é”到å¯æŽ§åˆ¶å–®ä½ç¸½æ•¸ä¸Šé™ï¼Œåœæ­¢ç”Ÿç”¢æ–°å–®ä½" -#: src/structure.c:6126 -#: src/structure.c:6151 +#: src/structure.c:6125 +#: src/structure.c:6150 #, c-format msgid "%s - %u Unit assigned" msgid_plural "%s - %u Units assigned" msgstr[0] "%s - 已指派 %u å–®ä½" -#: src/structure.c:6156 -#: src/structure.c:6224 -#: src/structure.c:6240 -#: src/structure.c:6254 +#: src/structure.c:6155 +#: src/structure.c:6223 +#: src/structure.c:6239 +#: src/structure.c:6253 #, c-format msgid "%s - Damage %3.0f%%" msgstr "%s - æå‚· %3.0f%%" -#: src/structure.c:6206 +#: src/structure.c:6205 #, c-format msgid "%s - Connected %u of %u" msgstr "%s - é€£æŽ¥é‘½æ²¹äº•æ•¸é‡ %u of %u" -#: src/structure.c:6370 -#: src/structure.c:6415 +#: src/structure.c:6369 +#: src/structure.c:6414 #, c-format msgid "%s - Electronically Damaged" msgstr "%s -é›»å­å‚·å®³" -#: src/structure.c:6651 +#: src/structure.c:6650 msgid "Electronic Reward - Visibility Report" msgstr "é›»å­å›žé¥‹â€”å¯æª¢è¦–報告" -#: src/structure.c:6691 +#: src/structure.c:6690 msgid "Factory Reward - Propulsion" msgstr "工廠çŽå‹µâ€”推進動力" -#: src/structure.c:6715 +#: src/structure.c:6714 msgid "Factory Reward - Body" msgstr "工廠çŽå‹µâ€”車身" -#: src/structure.c:6739 +#: src/structure.c:6738 msgid "Factory Reward - Weapon" msgstr "工廠çŽå‹µâ€”武器" -#: src/structure.c:6748 +#: src/structure.c:6747 msgid "Factory Reward - Nothing" msgstr "工廠çŽå‹µâ€”ç„¡" -#: src/structure.c:6776 +#: src/structure.c:6775 msgid "Repair Facility Award - Repair" msgstr "ä¿®ç†ä¸­å¿ƒçŽå‹µâ€”ä¿®ç†" -#: src/structure.c:6783 +#: src/structure.c:6782 msgid "Repair Facility Award - Nothing" msgstr "ä¿®ç†å·¥å» å›žé¥‹â€”ç„¡" @@ -14088,7 +15124,7 @@ msgstr "ä¿®ç†å·¥å» å›žé¥‹â€”ç„¡" msgid "Launch Transport" msgstr "發射é‹è¼¸è‰¦" -#: src/transporter.c:1757 +#: src/transporter.c:1752 msgid "Reinforcements landing" msgstr "æ´è»å·²é™è½" @@ -14120,6 +15156,18 @@ msgstr " - Built %s" msgid "Version %s%s%s%s" msgstr "版本 %s%s%s%s" +#, fuzzy +#~ msgid "Phosphor Bomb Bay Manits VTOL" +#~ msgstr "ç‡å…‰ç‚¸å½ˆè‰™" + +#, fuzzy +#~ msgid "Heap Bomb Bay Manits VTOL" +#~ msgstr "VTOL(高爆性穿甲炸彈艙)" + +#, fuzzy +#~ msgid ", mod: " +#~ msgstr "mod" + #, fuzzy #~ msgid "Increases Bombing damage" #~ msgstr "增加加農砲系武器傷害" @@ -14189,9 +15237,6 @@ msgstr "版本 %s%s%s%s" #~ msgid "Software (colored)" #~ msgstr "軟體 (colored)" -#~ msgid "Game" -#~ msgstr "éŠæˆ²" - #~ msgid "Mayhem" #~ msgstr "混亂模å¼" @@ -14495,24 +15540,9 @@ msgstr "版本 %s%s%s%s" #~ msgid "Commander" #~ msgstr "指æ®å®˜" -#~ msgid "Congratulations on defeating the New Paradigm." -#~ msgstr "æ­å–œä½ æ‰“敗了The New Paradigm" - #~ msgid "This sector is now secure." #~ msgstr "這個地å€ç¾åœ¨å®‰å…¨äº†" -#~ msgid "Nexus has technology and weapons and is not friendly." -#~ msgstr "NEXUS æ“有先進的科技與武器—而且他們並ä¸å‹å–„" - -#~ msgid "Warriors of the Collective..." -#~ msgstr "the Collective 的戰士們..." - -#~ msgid "Destroy and kill all who resist the Machine." -#~ msgstr "打敗並殺掉所有跟「機器ã€æŠµæŠ—的人" - -#~ msgid "Attack!" -#~ msgstr "攻擊ï¼" - #~ msgid "Be wary of attempts by NEXUS to control and infiltrate your systems." #~ msgstr "å°å¿ƒNEXUS å°ä½ çš„系統的滲é€åŠæŽ§åˆ¶" @@ -14583,9 +15613,6 @@ msgstr "版本 %s%s%s%s" #~ msgid "Incoming Airstrike" #~ msgstr "空襲警報" -#~ msgid "Team Alpha Eradicated" -#~ msgstr "Alpha 中隊被消滅了" - #~ msgid "Team Beta Eradicated" #~ msgstr "Beta 中隊被消滅了" diff --git a/src/action.c b/src/action.c index c2a23a518..56e0744c8 100644 --- a/src/action.c +++ b/src/action.c @@ -23,41 +23,36 @@ * Functions for setting the action of a droid. * */ -#include #include "lib/framework/frame.h" -#include "lib/gamelib/gtime.h" #include "lib/script/script.h" +#include "lib/sound/audio.h" +#include "lib/sound/audio_id.h" #include "action.h" -#include "lib/framework/vector.h" -#include "lib/sound/audio_id.h" -#include "lib/sound/audio.h" #include "combat.h" #include "formation.h" #include "geometry.h" -#include "hci.h" #include "intdisplay.h" #include "mission.h" -#include "multiplay.h" #include "projectile.h" +#include "random.h" #include "research.h" #include "scriptcb.h" #include "scripttabs.h" #include "transporter.h" -#include "visibility.h" -#include "random.h" /* attack run distance */ #define VTOL_ATTACK_LENGTH 1000 #define VTOL_ATTACK_WIDTH 200 #define VTOL_ATTACK_TARDIST 400 -#define VTOL_ATTACK_RETURNDIST 700 // turret rotation limit #define VTOL_TURRET_LIMIT DEG(45) #define VTOL_TURRET_LIMIT_BOMB DEG(60) +#define VTOL_ATTACK_AUDIO_DELAY (3*GAME_TICKS_PER_SEC) + /** Time to pause before a droid blows up. */ #define ACTION_DESTRUCT_TIME 2000 @@ -68,9 +63,6 @@ #define REPAIR_PITCH_LOWER 30 #define REPAIR_PITCH_UPPER -15 -/** How long to follow a damaged droid around before giving up if don't get near. */ -#define KEEP_TRYING_REPAIR 10000 - /* How many tiles to pull back. */ #define PULL_BACK_DIST 10 @@ -92,6 +84,22 @@ typedef struct _droid_action_data /** Radius for search when looking for VTOL landing position */ static const int vtolLandingRadius = 23; +/** + * @typedef tileMatchFunction + * + * @brief pointer to a 'tile search function', used by spiralSearch() + * + * @param x,y are the coordinates that should be inspected. + * + * @param data a pointer to state data, allows the search function to retain + * state in between calls and can be used as a means of returning + * its result to the caller of spiralSearch(). + * + * @return true when the search has finished, false when the search should + * continue. + */ +typedef bool (*tileMatchFunction)(int x, int y, void* matchState); + const char* getDroidActionName(DROID_ACTION action) { static const char* name[] = @@ -146,7 +154,7 @@ const char* getDroidActionName(DROID_ACTION action) } /* Check if a target is at correct range to attack */ -BOOL actionInAttackRange(DROID *psDroid, BASE_OBJECT *psObj, int weapon_slot) +static BOOL actionInAttackRange(DROID *psDroid, BASE_OBJECT *psObj, int weapon_slot) { SDWORD dx, dy, dz, radSq, rangeSq, longRange; WEAPON_STATS *psStats; @@ -765,7 +773,7 @@ BOOL actionReachedBuildPos(DROID *psDroid, SDWORD x, SDWORD y, BASE_STATS *psSta // check if a droid is on the foundations of a new building -BOOL actionDroidOnBuildPos(DROID *psDroid, SDWORD x, SDWORD y, BASE_STATS *psStats) +static BOOL actionDroidOnBuildPos(DROID *psDroid, SDWORD x, SDWORD y, BASE_STATS *psStats) { SDWORD width, breadth, tx,ty, dx,dy; @@ -822,8 +830,6 @@ static void actionHomeBasePos(SDWORD player, SDWORD *px, SDWORD *py) *py = getLandingY(player); } -#define VTOL_ATTACK_AUDIO_DELAY (3*GAME_TICKS_PER_SEC) - // Update the action state for a droid void actionUpdateDroid(DROID *psDroid) { @@ -2909,7 +2915,7 @@ static BOOL vtolLandingTile(SDWORD x, SDWORD y) * \return true if finished because the searchFunction requested termination, * false if the radius limit was reached */ -bool spiralSearch(int startX, int startY, int max_radius, tileMatchFunction match, void* matchState) +static bool spiralSearch(int startX, int startY, int max_radius, tileMatchFunction match, void* matchState) { int radius; // radius counter diff --git a/src/action.h b/src/action.h index a21add04c..c0801f394 100644 --- a/src/action.h +++ b/src/action.h @@ -25,7 +25,6 @@ #define __INCLUDED_SRC_ACTION_H__ #include "droiddef.h" -#include "structuredef.h" //STRUCT_MAXWEAPS #ifdef __cplusplus extern "C" @@ -91,7 +90,7 @@ typedef enum _droid_action DACTION_CIRCLE = 41, ///< 41 circling while engaging } DROID_ACTION; -extern const char* getDroidActionName(DROID_ACTION action); +const char* getDroidActionName(DROID_ACTION action); /** After failing a route ... this is the amount of time that the droid goes all defensive until it can start going aggressive. */ #define MIN_SULK_TIME (1500) // 1.5 sec @@ -113,16 +112,16 @@ extern const char* getDroidActionName(DROID_ACTION action); * data manipulation in this function itself. In either case, this * function requires a major refactoring... */ -extern void actionUpdateDroid(DROID *psDroid); +void actionUpdateDroid(DROID *psDroid); /** Give a droid an action. */ -extern void actionDroid(DROID *psDroid, DROID_ACTION action); +void actionDroid(DROID *psDroid, DROID_ACTION action); /** Give a droid an action with a location target. */ -extern void actionDroidLoc(DROID *psDroid, DROID_ACTION action, UDWORD x, UDWORD y); +void actionDroidLoc(DROID *psDroid, DROID_ACTION action, UDWORD x, UDWORD y); /** Give a droid an action with an object target. */ -extern void actionDroidObj(DROID *psDroid, DROID_ACTION action, BASE_OBJECT *psObj); +void actionDroidObj(DROID *psDroid, DROID_ACTION action, BASE_OBJECT *psObj); /** Give a droid an action with an object target and a location. */ void actionDroidObjLoc(DROID *psDroid, DROID_ACTION action, @@ -132,16 +131,13 @@ void actionDroidObjLoc(DROID *psDroid, DROID_ACTION action, BOOL actionTargetTurret(BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget, WEAPON *psWeapon); /** Realign turret. */ -extern void actionAlignTurret(BASE_OBJECT *psObj, int weapon_slot); - -/** Check if a target is at correct range to attack. */ -extern BOOL actionInAttackRange(DROID *psDroid, BASE_OBJECT *psObj, int weapon_slot); +void actionAlignTurret(BASE_OBJECT *psObj, int weapon_slot); /** Check if a target is within weapon range. */ -extern BOOL actionInRange(DROID *psDroid, BASE_OBJECT *psObj, int weapon_slot); +BOOL actionInRange(DROID *psDroid, BASE_OBJECT *psObj, int weapon_slot); /** Check if a target is inside minimum weapon range. */ -extern BOOL actionInsideMinRange(DROID *psDroid, BASE_OBJECT *psObj, WEAPON_STATS *psWeapStats); +BOOL actionInsideMinRange(DROID *psDroid, BASE_OBJECT *psObj, WEAPON_STATS *psWeapStats); /** Return whether a droid can see a target to fire on it. */ BOOL actionVisibleTarget(DROID *psDroid, BASE_OBJECT *psTarget, int weapon_slot); @@ -149,29 +145,8 @@ BOOL actionVisibleTarget(DROID *psDroid, BASE_OBJECT *psTarget, int weapon_slot) /** Check whether a droid is in the neighboring tile to a build position. */ BOOL actionReachedBuildPos(DROID *psDroid, SDWORD x, SDWORD y, BASE_STATS *psStats); -/** Check if a droid is on the foundations of a new building. */ -BOOL actionDroidOnBuildPos(DROID *psDroid, SDWORD x, SDWORD y, BASE_STATS *psStats); - /** Send the vtol droid back to the nearest rearming pad - if there is one, otherwise return to base. */ -extern void moveToRearm(DROID *psDroid); - -/** - * @typedef tileMatchFunction - * - * @brief pointer to a 'tile search function', used by spiralSearch() - * - * @param x,y are the coordinates that should be inspected. - * - * @param data a pointer to state data, allows the search function to retain - * state in between calls and can be used as a means of returning - * its result to the caller of spiralSearch(). - * - * @return true when the search has finished, false when the search should - * continue. - */ -typedef bool (*tileMatchFunction)(int x, int y, void* matchState); - -bool spiralSearch(int startX, int startY, int max_radius, tileMatchFunction match, void* matchState); +void moveToRearm(DROID *psDroid); /** Choose a landing position for a VTOL when it goes to rearm. */ bool actionVTOLLandingPos(const DROID* psDroid, UDWORD* px, UDWORD* py); diff --git a/src/advvis.c b/src/advvis.c index e530fc4fe..82b17fd6d 100644 --- a/src/advvis.c +++ b/src/advvis.c @@ -24,11 +24,8 @@ */ #include "lib/framework/frame.h" -#include "lib/gamelib/gtime.h" #include "advvis.h" -#include "display3d.h" -#include "hci.h" #include "map.h" // ------------------------------------------------------------------------------------ diff --git a/src/advvis.h b/src/advvis.h index 4b1fde21d..8d71cf521 100644 --- a/src/advvis.h +++ b/src/advvis.h @@ -21,7 +21,6 @@ #ifndef __INCLUDED_SRC_ADVVIS_H__ #define __INCLUDED_SRC_ADVVIS_H__ -#include "lib/framework/types.h" #include "basedef.h" #ifdef __cplusplus @@ -29,12 +28,12 @@ extern "C" { #endif //__cplusplus -extern void avUpdateTiles( void ); -extern UDWORD avGetObjLightLevel( BASE_OBJECT *psObj, UDWORD origLevel); -extern void setRevealStatus( BOOL val ); -extern BOOL getRevealStatus( void ); -extern void preProcessVisibility( void ); -extern void avSetStatus(BOOL var); +void avUpdateTiles(void); +UDWORD avGetObjLightLevel(BASE_OBJECT *psObj, UDWORD origLevel); +void setRevealStatus(BOOL val); +BOOL getRevealStatus(void); +void preProcessVisibility(void); +void avSetStatus(BOOL var); #ifdef __cplusplus } diff --git a/src/ai.c b/src/ai.c index 3055500f6..cacae84fe 100644 --- a/src/ai.c +++ b/src/ai.c @@ -30,19 +30,41 @@ #include "cmddroid.h" #include "combat.h" #include "drive.h" -#include "geometry.h" -#include "map.h" #include "mapgrid.h" -#include "multiplay.h" +#include "map.h" #include "projectile.h" -#include "visibility.h" #define FRUSTRATED_TIME (1000 * 5) -/* Calculates attack priority for a certain target */ -static SDWORD targetAttackWeight(BASE_OBJECT *psTarget, BASE_OBJECT *psAttacker, SDWORD weapon_slot); +/* Weights used for target selection code, + * target distance is used as 'common currency' + */ +#define WEIGHT_DIST_TILE 13 //In points used in weaponmodifier.txt and structuremodifier.txt +#define WEIGHT_DIST_TILE_DROID WEIGHT_DIST_TILE //How much weight a distance of 1 tile (128 world units) has when looking for the best nearest target +#define WEIGHT_DIST_TILE_STRUCT WEIGHT_DIST_TILE +#define WEIGHT_HEALTH_DROID (WEIGHT_DIST_TILE * 10) //How much weight unit damage has (100% of damage is equaly weighted as 10 tiles distance) +//~100% damage should be ~8 tiles (max sensor range) +#define WEIGHT_HEALTH_STRUCT (WEIGHT_DIST_TILE * 7) -static BOOL updateAttackTarget(BASE_OBJECT * psAttacker, SDWORD weapon_slot); +#define WEIGHT_NOT_VISIBLE_F 10 //We really don't like objects we can't see + +#define WEIGHT_SERVICE_DROIDS (WEIGHT_DIST_TILE_DROID * 5) //We don't want them to be repairing droids or structures while we are after them +#define WEIGHT_WEAPON_DROIDS (WEIGHT_DIST_TILE_DROID * 4) //We prefer to go after anything that has a gun and can hurt us +#define WEIGHT_COMMAND_DROIDS (WEIGHT_DIST_TILE_DROID * 6) //Commanders get a higher priority +#define WEIGHT_MILITARY_STRUCT WEIGHT_DIST_TILE_STRUCT //Droid/cyborg factories, repair facility; shouldn't have too much weight +#define WEIGHT_WEAPON_STRUCT WEIGHT_WEAPON_DROIDS //Same as weapon droids (?) +#define WEIGHT_DERRICK_STRUCT (WEIGHT_MILITARY_STRUCT + WEIGHT_DIST_TILE_STRUCT * 4) //Even if it's 4 tiles further away than defenses we still choose it + +#define WEIGHT_STRUCT_NOTBUILT_F 8 //Humans won't fool us anymore! + +#define OLD_TARGET_THRESHOLD (WEIGHT_DIST_TILE * 4) //it only makes sense to switch target if new one is 4+ tiles closer + +#define EMP_DISABLED_PENALTY_F 10 //EMP shouldn't attack emped targets again +#define EMP_STRUCT_PENALTY_F (EMP_DISABLED_PENALTY_F * 2) //EMP don't attack structures, should be bigger than EMP_DISABLED_PENALTY_F + +//Some weights for the units attached to a commander +#define WEIGHT_CMD_RANK (WEIGHT_DIST_TILE * 4) //A single rank is as important as 4 tiles distance +#define WEIGHT_CMD_SAME_TARGET WEIGHT_DIST_TILE //Don't want this to be too high, since a commander can have many units assigned // alliances // players are 0-7; player 8 appears to be unused; player 9 is features @@ -153,7 +175,7 @@ BOOL aiShutdown(void) } /** Search the global list of sensors for a possible target for psObj. */ -BASE_OBJECT *aiSearchSensorTargets(BASE_OBJECT *psObj, int weapon_slot, WEAPON_STATS *psWStats, UWORD *targetOrigin) +static BASE_OBJECT *aiSearchSensorTargets(BASE_OBJECT *psObj, int weapon_slot, WEAPON_STATS *psWStats, UWORD *targetOrigin) { int longRange = proj_GetLongRange(psWStats); int tarDist = longRange * longRange; @@ -237,6 +259,243 @@ BASE_OBJECT *aiSearchSensorTargets(BASE_OBJECT *psObj, int weapon_slot, WEAPON_S return psTarget; } +/* Calculates attack priority for a certain target */ +static SDWORD targetAttackWeight(BASE_OBJECT *psTarget, BASE_OBJECT *psAttacker, SDWORD weapon_slot) +{ + SDWORD targetTypeBonus=0, damageRatio=0, attackWeight=0, noTarget=-1; + UDWORD weaponSlot; + DROID *targetDroid=NULL,*psAttackerDroid=NULL,*psGroupDroid,*psDroid; + STRUCTURE *targetStructure=NULL; + WEAPON_EFFECT weaponEffect; + WEAPON_STATS *attackerWeapon; + BOOL bEmpWeap=false,bCmdAttached=false,bTargetingCmd=false; + + if (psTarget == NULL || psAttacker == NULL || aiObjectIsProbablyDoomed(psTarget)) + { + return noTarget; + } + ASSERT(psTarget != psAttacker, "targetAttackWeight: Wanted to evaluate the worth of attacking ourselves..."); + + targetTypeBonus = 0; //Sensors/ecm droids, non-military structures get lower priority + + /* Get attacker weapon effect */ + if(psAttacker->type == OBJ_DROID) + { + psAttackerDroid = (DROID *)psAttacker; + + attackerWeapon = (WEAPON_STATS *)(asWeaponStats + psAttackerDroid->asWeaps[weapon_slot].nStat); + + //check if this droid is assigned to a commander + bCmdAttached = hasCommander(psAttackerDroid); + + //find out if current target is targeting our commander + if(bCmdAttached) + { + if(psTarget->type == OBJ_DROID) + { + psDroid = (DROID *)psTarget; + + //go through all enemy weapon slots + for(weaponSlot = 0; !bTargetingCmd && + weaponSlot < ((DROID *)psTarget)->numWeaps; weaponSlot++) + { + //see if this weapon is targeting our commander + if (psDroid->psActionTarget[weaponSlot] == (BASE_OBJECT *)psAttackerDroid->psGroup->psCommander) + { + bTargetingCmd = true; + } + } + } + else + { + if(psTarget->type == OBJ_STRUCTURE) + { + //go through all enemy weapons + for(weaponSlot = 0; !bTargetingCmd && weaponSlot < ((STRUCTURE *)psTarget)->numWeaps; weaponSlot++) + { + if (((STRUCTURE *)psTarget)->psTarget[weaponSlot] == + (BASE_OBJECT *)psAttackerDroid->psGroup->psCommander) + { + bTargetingCmd = true; + } + } + } + } + } + } + else if(psAttacker->type == OBJ_STRUCTURE) + { + attackerWeapon = ((WEAPON_STATS *)(asWeaponStats + ((STRUCTURE *)psAttacker)->asWeaps[weapon_slot].nStat)); + } + else /* feature */ + { + ASSERT(!"invalid attacker object type", "targetAttackWeight: Invalid attacker object type"); + return noTarget; + } + + //Get weapon effect + weaponEffect = attackerWeapon->weaponEffect; + + //See if attacker is using an EMP weapon + bEmpWeap = (attackerWeapon->weaponSubClass == WSC_EMP); + + /* Calculate attack weight */ + if(psTarget->type == OBJ_DROID) + { + targetDroid = (DROID *)psTarget; + + if (targetDroid->died) + { + debug(LOG_NEVER, "Target droid is dead, skipping invalid droid.\n"); + return noTarget; + } + + /* Calculate damage this target suffered */ + if (targetDroid->originalBody == 0) // FIXME Somewhere we get 0HP droids from + { + damageRatio = 0; + debug(LOG_ERROR, "targetAttackWeight: 0HP droid detected!"); + debug(LOG_ERROR, " Type: %i Name: \"%s\" Owner: %i \"%s\")", + targetDroid->droidType, targetDroid->aName, targetDroid->player, getPlayerName(targetDroid->player)); + } + else + { + damageRatio = 1 - targetDroid->body / targetDroid->originalBody; + } + assert(targetDroid->originalBody != 0); // Assert later so we get the info from above + + /* See if this type of a droid should be prioritized */ + switch (targetDroid->droidType) + { + case DROID_SENSOR: + case DROID_ECM: + case DROID_PERSON: + case DROID_TRANSPORTER: + case DROID_DEFAULT: + case DROID_ANY: + break; + + case DROID_CYBORG: + case DROID_WEAPON: + case DROID_CYBORG_SUPER: + targetTypeBonus = WEIGHT_WEAPON_DROIDS; + break; + + case DROID_COMMAND: + targetTypeBonus = WEIGHT_COMMAND_DROIDS; + break; + + case DROID_CONSTRUCT: + case DROID_REPAIR: + case DROID_CYBORG_CONSTRUCT: + case DROID_CYBORG_REPAIR: + targetTypeBonus = WEIGHT_SERVICE_DROIDS; + break; + } + + /* Now calculate the overall weight */ + attackWeight = asWeaponModifier[weaponEffect][(asPropulsionStats + targetDroid->asBits[COMP_PROPULSION].nStat)->propulsionType] // Our weapon's effect against target + + WEIGHT_DIST_TILE_DROID * psAttacker->sensorRange/TILE_UNITS + - WEIGHT_DIST_TILE_DROID * map_coord(iHypot(psAttacker->pos.x - targetDroid->pos.x, psAttacker->pos.y - targetDroid->pos.y)) // farer droids are less attractive + + WEIGHT_HEALTH_DROID * damageRatio // we prefer damaged droids + + targetTypeBonus; // some droid types have higher priority + + /* If attacking with EMP try to avoid targets that were already "EMPed" */ + if(bEmpWeap && + (targetDroid->lastHitWeapon == WSC_EMP) && + ((gameTime - targetDroid->timeLastHit) < EMP_DISABLE_TIME)) //target still disabled + { + attackWeight /= EMP_DISABLED_PENALTY_F; + } + } + else if(psTarget->type == OBJ_STRUCTURE) + { + targetStructure = (STRUCTURE *)psTarget; + + /* Calculate damage this target suffered */ + damageRatio = 1 - targetStructure->body / structureBody(targetStructure); + + /* See if this type of a structure should be prioritized */ + switch(targetStructure->pStructureType->type) + { + case REF_DEFENSE: + targetTypeBonus = WEIGHT_WEAPON_STRUCT; + break; + + case REF_RESOURCE_EXTRACTOR: + targetTypeBonus = WEIGHT_DERRICK_STRUCT; + break; + + case REF_FACTORY: + case REF_CYBORG_FACTORY: + case REF_REPAIR_FACILITY: + targetTypeBonus = WEIGHT_MILITARY_STRUCT; + break; + default: + break; + } + + /* Now calculate the overall weight */ + attackWeight = asStructStrengthModifier[weaponEffect][targetStructure->pStructureType->strength] // Our weapon's effect against target + + WEIGHT_DIST_TILE_STRUCT * psAttacker->sensorRange/TILE_UNITS + - WEIGHT_DIST_TILE_STRUCT * map_coord(iHypot(psAttacker->pos.x - targetStructure->pos.x, psAttacker->pos.y - targetStructure->pos.y)) // farer structs are less attractive + + WEIGHT_HEALTH_STRUCT * damageRatio // we prefer damaged structures + + targetTypeBonus; // some structure types have higher priority + + /* Go for unfinished structures only if nothing else found (same for non-visible structures) */ + if(targetStructure->status != SS_BUILT) //a decoy? + { + attackWeight /= WEIGHT_STRUCT_NOTBUILT_F; + } + + /* EMP should only attack structures if no enemy droids are around */ + if(bEmpWeap) + { + attackWeight /= EMP_STRUCT_PENALTY_F; + } + } + else //a feature + { + return 1; + } + + /* We prefer objects we can see and can attack immediately */ + if(!visibleObject((BASE_OBJECT *)psAttacker, psTarget, true)) + { + attackWeight /= WEIGHT_NOT_VISIBLE_F; + } + + /* Commander-related criterias */ + if(bCmdAttached) //attached to a commander and don't have a target assigned by some order + { + ASSERT(psAttackerDroid->psGroup->psCommander != NULL, "Commander is NULL"); + + //if commander is being targeted by our target, try to defend the commander + if(bTargetingCmd) + { + attackWeight += WEIGHT_CMD_RANK * ( 1 + getDroidLevel(psAttackerDroid->psGroup->psCommander)); + } + + //fire support - go through all droids assigned to the commander + for (psGroupDroid = psAttackerDroid->psGroup->psList; psGroupDroid; psGroupDroid = psGroupDroid->psGrpNext) + { + for(weaponSlot = 0; weaponSlot < psGroupDroid->numWeaps; weaponSlot++) + { + //see if this droid is currently targeting current target + if(psGroupDroid->psTarget == psTarget || + psGroupDroid->psActionTarget[weaponSlot] == psTarget) + { + //we prefer targets that are already targeted and hence will be destroyed faster + attackWeight += WEIGHT_CMD_SAME_TARGET; + } + } + } + } + + return attackWeight; +} + + // Find the best nearest target for a droid // Returns integer representing target priority, -1 if failed SDWORD aiBestNearestTarget(DROID *psDroid, BASE_OBJECT **ppsObj, int weapon_slot, UWORD *targetOrigin) @@ -484,243 +743,6 @@ void aiObjectAddExpectedDamage(BASE_OBJECT *psObject, SDWORD damage) } } -/* Calculates attack priority for a certain target */ -static SDWORD targetAttackWeight(BASE_OBJECT *psTarget, BASE_OBJECT *psAttacker, SDWORD weapon_slot) -{ - SDWORD targetTypeBonus=0, damageRatio=0, attackWeight=0, noTarget=-1; - UDWORD weaponSlot; - DROID *targetDroid=NULL,*psAttackerDroid=NULL,*psGroupDroid,*psDroid; - STRUCTURE *targetStructure=NULL; - WEAPON_EFFECT weaponEffect; - WEAPON_STATS *attackerWeapon; - BOOL bEmpWeap=false,bCmdAttached=false,bTargetingCmd=false; - - if (psTarget == NULL || psAttacker == NULL || aiObjectIsProbablyDoomed(psTarget)) - { - return noTarget; - } - ASSERT(psTarget != psAttacker, "targetAttackWeight: Wanted to evaluate the worth of attacking ourselves..."); - - targetTypeBonus = 0; //Sensors/ecm droids, non-military structures get lower priority - - /* Get attacker weapon effect */ - if(psAttacker->type == OBJ_DROID) - { - psAttackerDroid = (DROID *)psAttacker; - - attackerWeapon = (WEAPON_STATS *)(asWeaponStats + psAttackerDroid->asWeaps[weapon_slot].nStat); - - //check if this droid is assigned to a commander - bCmdAttached = hasCommander(psAttackerDroid); - - //find out if current target is targeting our commander - if(bCmdAttached) - { - if(psTarget->type == OBJ_DROID) - { - psDroid = (DROID *)psTarget; - - //go through all enemy weapon slots - for(weaponSlot = 0; !bTargetingCmd && - weaponSlot < ((DROID *)psTarget)->numWeaps; weaponSlot++) - { - //see if this weapon is targeting our commander - if (psDroid->psActionTarget[weaponSlot] == (BASE_OBJECT *)psAttackerDroid->psGroup->psCommander) - { - bTargetingCmd = true; - } - } - } - else - { - if(psTarget->type == OBJ_STRUCTURE) - { - //go through all enemy weapons - for(weaponSlot = 0; !bTargetingCmd && weaponSlot < ((STRUCTURE *)psTarget)->numWeaps; weaponSlot++) - { - if (((STRUCTURE *)psTarget)->psTarget[weaponSlot] == - (BASE_OBJECT *)psAttackerDroid->psGroup->psCommander) - { - bTargetingCmd = true; - } - } - } - } - } - } - else if(psAttacker->type == OBJ_STRUCTURE) - { - attackerWeapon = ((WEAPON_STATS *)(asWeaponStats + ((STRUCTURE *)psAttacker)->asWeaps[weapon_slot].nStat)); - } - else /* feature */ - { - ASSERT(!"invalid attacker object type", "targetAttackWeight: Invalid attacker object type"); - return noTarget; - } - - //Get weapon effect - weaponEffect = attackerWeapon->weaponEffect; - - //See if attacker is using an EMP weapon - bEmpWeap = (attackerWeapon->weaponSubClass == WSC_EMP); - - /* Calculate attack weight */ - if(psTarget->type == OBJ_DROID) - { - targetDroid = (DROID *)psTarget; - - if (targetDroid->died) - { - debug(LOG_NEVER, "Target droid is dead, skipping invalid droid.\n"); - return noTarget; - } - - /* Calculate damage this target suffered */ - if (targetDroid->originalBody == 0) // FIXME Somewhere we get 0HP droids from - { - damageRatio = 0; - debug(LOG_ERROR, "targetAttackWeight: 0HP droid detected!"); - debug(LOG_ERROR, " Type: %i Name: \"%s\" Owner: %i \"%s\")", - targetDroid->droidType, targetDroid->aName, targetDroid->player, getPlayerName(targetDroid->player)); - } - else - { - damageRatio = 1 - targetDroid->body / targetDroid->originalBody; - } - assert(targetDroid->originalBody != 0); // Assert later so we get the info from above - - /* See if this type of a droid should be prioritized */ - switch (targetDroid->droidType) - { - case DROID_SENSOR: - case DROID_ECM: - case DROID_PERSON: - case DROID_TRANSPORTER: - case DROID_DEFAULT: - case DROID_ANY: - break; - - case DROID_CYBORG: - case DROID_WEAPON: - case DROID_CYBORG_SUPER: - targetTypeBonus = WEIGHT_WEAPON_DROIDS; - break; - - case DROID_COMMAND: - targetTypeBonus = WEIGHT_COMMAND_DROIDS; - break; - - case DROID_CONSTRUCT: - case DROID_REPAIR: - case DROID_CYBORG_CONSTRUCT: - case DROID_CYBORG_REPAIR: - targetTypeBonus = WEIGHT_SERVICE_DROIDS; - break; - } - - /* Now calculate the overall weight */ - attackWeight = asWeaponModifier[weaponEffect][(asPropulsionStats + targetDroid->asBits[COMP_PROPULSION].nStat)->propulsionType] // Our weapon's effect against target - + WEIGHT_DIST_TILE_DROID * psAttacker->sensorRange/TILE_UNITS - - WEIGHT_DIST_TILE_DROID * map_coord(iHypot(psAttacker->pos.x - targetDroid->pos.x, psAttacker->pos.y - targetDroid->pos.y)) // farer droids are less attractive - + WEIGHT_HEALTH_DROID * damageRatio // we prefer damaged droids - + targetTypeBonus; // some droid types have higher priority - - /* If attacking with EMP try to avoid targets that were already "EMPed" */ - if(bEmpWeap && - (targetDroid->lastHitWeapon == WSC_EMP) && - ((gameTime - targetDroid->timeLastHit) < EMP_DISABLE_TIME)) //target still disabled - { - attackWeight /= EMP_DISABLED_PENALTY_F; - } - } - else if(psTarget->type == OBJ_STRUCTURE) - { - targetStructure = (STRUCTURE *)psTarget; - - /* Calculate damage this target suffered */ - damageRatio = 1 - targetStructure->body / structureBody(targetStructure); - - /* See if this type of a structure should be prioritized */ - switch(targetStructure->pStructureType->type) - { - case REF_DEFENSE: - targetTypeBonus = WEIGHT_WEAPON_STRUCT; - break; - - case REF_RESOURCE_EXTRACTOR: - targetTypeBonus = WEIGHT_DERRICK_STRUCT; - break; - - case REF_FACTORY: - case REF_CYBORG_FACTORY: - case REF_REPAIR_FACILITY: - targetTypeBonus = WEIGHT_MILITARY_STRUCT; - break; - default: - break; - } - - /* Now calculate the overall weight */ - attackWeight = asStructStrengthModifier[weaponEffect][targetStructure->pStructureType->strength] // Our weapon's effect against target - + WEIGHT_DIST_TILE_STRUCT * psAttacker->sensorRange/TILE_UNITS - - WEIGHT_DIST_TILE_STRUCT * map_coord(iHypot(psAttacker->pos.x - targetStructure->pos.x, psAttacker->pos.y - targetStructure->pos.y)) // farer structs are less attractive - + WEIGHT_HEALTH_STRUCT * damageRatio // we prefer damaged structures - + targetTypeBonus; // some structure types have higher priority - - /* Go for unfinished structures only if nothing else found (same for non-visible structures) */ - if(targetStructure->status != SS_BUILT) //a decoy? - { - attackWeight /= WEIGHT_STRUCT_NOTBUILT_F; - } - - /* EMP should only attack structures if no enemy droids are around */ - if(bEmpWeap) - { - attackWeight /= EMP_STRUCT_PENALTY_F; - } - } - else //a feature - { - return 1; - } - - /* We prefer objects we can see and can attack immediately */ - if(!visibleObject((BASE_OBJECT *)psAttacker, psTarget, true)) - { - attackWeight /= WEIGHT_NOT_VISIBLE_F; - } - - /* Commander-related criterias */ - if(bCmdAttached) //attached to a commander and don't have a target assigned by some order - { - ASSERT(psAttackerDroid->psGroup->psCommander != NULL, "Commander is NULL"); - - //if commander is being targeted by our target, try to defend the commander - if(bTargetingCmd) - { - attackWeight += WEIGHT_CMD_RANK * ( 1 + getDroidLevel(psAttackerDroid->psGroup->psCommander)); - } - - //fire support - go through all droids assigned to the commander - for (psGroupDroid = psAttackerDroid->psGroup->psList; psGroupDroid; psGroupDroid = psGroupDroid->psGrpNext) - { - for(weaponSlot = 0; weaponSlot < psGroupDroid->numWeaps; weaponSlot++) - { - //see if this droid is currently targeting current target - if(psGroupDroid->psTarget == psTarget || - psGroupDroid->psActionTarget[weaponSlot] == psTarget) - { - //we prefer targets that are already targeted and hence will be destroyed faster - attackWeight += WEIGHT_CMD_SAME_TARGET; - } - } - } - } - - return attackWeight; -} - - // see if an object is a wall static BOOL aiObjIsWall(BASE_OBJECT *psObj) { @@ -1018,6 +1040,43 @@ BOOL aiChooseSensorTarget(BASE_OBJECT *psObj, BASE_OBJECT **ppsTarget) return false; } +/* Make droid/structure look for a better target */ +static BOOL updateAttackTarget(BASE_OBJECT * psAttacker, SDWORD weapon_slot) +{ + BASE_OBJECT *psBetterTarget=NULL; + UWORD tmpOrigin = ORIGIN_UNKNOWN; + + if(aiChooseTarget(psAttacker, &psBetterTarget, weapon_slot, true, &tmpOrigin)) //update target + { + if(psAttacker->type == OBJ_DROID) + { + DROID *psDroid = (DROID *)psAttacker; + + if( (orderState(psDroid, DORDER_NONE) || + orderState(psDroid, DORDER_GUARD) || + orderState(psDroid, DORDER_ATTACKTARGET)) && + weapon_slot == 0) //Watermelon:only primary slot(0) updates affect order + { + orderDroidObj((DROID *)psAttacker, DORDER_ATTACKTARGET, psBetterTarget); + } + else //can't override current order + { + setDroidActionTarget(psDroid, psBetterTarget, weapon_slot); + } + } + else if (psAttacker->type == OBJ_STRUCTURE) + { + STRUCTURE *psBuilding = (STRUCTURE *)psAttacker; + + setStructureTarget(psBuilding, psBetterTarget, weapon_slot, tmpOrigin); + } + + return true; + } + + return false; +} + /* Do the AI for a droid */ void aiUpdateDroid(DROID *psDroid) { @@ -1260,39 +1319,3 @@ BOOL validTarget(BASE_OBJECT *psObject, BASE_OBJECT *psTarget, int weapon_slot) return bValidTarget; } -/* Make droid/structure look for a better target */ -static BOOL updateAttackTarget(BASE_OBJECT * psAttacker, SDWORD weapon_slot) -{ - BASE_OBJECT *psBetterTarget=NULL; - UWORD tmpOrigin = ORIGIN_UNKNOWN; - - if(aiChooseTarget(psAttacker, &psBetterTarget, weapon_slot, true, &tmpOrigin)) //update target - { - if(psAttacker->type == OBJ_DROID) - { - DROID *psDroid = (DROID *)psAttacker; - - if( (orderState(psDroid, DORDER_NONE) || - orderState(psDroid, DORDER_GUARD) || - orderState(psDroid, DORDER_ATTACKTARGET)) && - weapon_slot == 0) //Watermelon:only primary slot(0) updates affect order - { - orderDroidObj((DROID *)psAttacker, DORDER_ATTACKTARGET, psBetterTarget); - } - else //can't override current order - { - setDroidActionTarget(psDroid, psBetterTarget, weapon_slot); - } - } - else if (psAttacker->type == OBJ_STRUCTURE) - { - STRUCTURE *psBuilding = (STRUCTURE *)psAttacker; - - setStructureTarget(psBuilding, psBetterTarget, weapon_slot, tmpOrigin); - } - - return true; - } - - return false; -} diff --git a/src/ai.h b/src/ai.h index 80ca5be73..f1f9b131e 100644 --- a/src/ai.h +++ b/src/ai.h @@ -24,8 +24,7 @@ #ifndef __INCLUDED_SRC_AI_H__ #define __INCLUDED_SRC_AI_H__ -#include "objectdef.h" -#include "action.h" //DROID_OACTION_INFO +#include "droiddef.h" #ifdef __cplusplus extern "C" @@ -41,37 +40,6 @@ extern "C" #define NO_ALLIANCES 0 //alliance possibilities for games. #define ALLIANCES 1 #define ALLIANCES_TEAMS 2 //locked teams -//#define GROUP_WINS 2 - -/* Weights used for target selection code, - * target distance is used as 'common currency' - */ -#define WEIGHT_DIST_TILE 13 //In points used in weaponmodifier.txt and structuremodifier.txt -#define WEIGHT_DIST_TILE_DROID WEIGHT_DIST_TILE //How much weight a distance of 1 tile (128 world units) has when looking for the best nearest target -#define WEIGHT_DIST_TILE_STRUCT WEIGHT_DIST_TILE -#define WEIGHT_HEALTH_DROID (WEIGHT_DIST_TILE * 10) //How much weight unit damage has (100% of damage is equaly weighted as 10 tiles distance) -//~100% damage should be ~8 tiles (max sensor range) -#define WEIGHT_HEALTH_STRUCT (WEIGHT_DIST_TILE * 7) - -#define WEIGHT_NOT_VISIBLE_F 10 //We really don't like objects we can't see - -#define WEIGHT_SERVICE_DROIDS (WEIGHT_DIST_TILE_DROID * 5) //We don't want them to be repairing droids or structures while we are after them -#define WEIGHT_WEAPON_DROIDS (WEIGHT_DIST_TILE_DROID * 4) //We prefer to go after anything that has a gun and can hurt us -#define WEIGHT_COMMAND_DROIDS (WEIGHT_DIST_TILE_DROID * 6) //Commanders get a higher priority -#define WEIGHT_MILITARY_STRUCT WEIGHT_DIST_TILE_STRUCT //Droid/cyborg factories, repair facility; shouldn't have too much weight -#define WEIGHT_WEAPON_STRUCT WEIGHT_WEAPON_DROIDS //Same as weapon droids (?) -#define WEIGHT_DERRICK_STRUCT (WEIGHT_MILITARY_STRUCT + WEIGHT_DIST_TILE_STRUCT * 4) //Even if it's 4 tiles further away than defenses we still choose it - -#define WEIGHT_STRUCT_NOTBUILT_F 8 //Humans won't fool us anymore! - -#define OLD_TARGET_THRESHOLD (WEIGHT_DIST_TILE * 4) //it only makes sense to switch target if new one is 4+ tiles closer - -#define EMP_DISABLED_PENALTY_F 10 //EMP shouldn't attack emped targets again -#define EMP_STRUCT_PENALTY_F (EMP_DISABLED_PENALTY_F * 2) //EMP don't attack structures, should be bigger than EMP_DISABLED_PENALTY_F - -//Some weights for the units attached to a commander -#define WEIGHT_CMD_RANK (WEIGHT_DIST_TILE * 4) //A single rank is as important as 4 tiles distance -#define WEIGHT_CMD_SAME_TARGET WEIGHT_DIST_TILE //Don't want this to be too high, since a commander can have many units assigned // alliances extern uint8_t alliances[MAX_PLAYER_SLOTS][MAX_PLAYER_SLOTS]; @@ -82,43 +50,37 @@ extern uint8_t satuplinkbits; #define aiCheckAlliances(_s1, _s2) (alliances[_s1][_s2] == ALLIANCE_FORMED) /* Initialise the AI system */ -extern BOOL aiInitialise(void); +BOOL aiInitialise(void); /* Shutdown the AI system */ -extern BOOL aiShutdown(void); +BOOL aiShutdown(void); /* Initialise a droid structure for AI */ //extern BOOL aiInitDroid(DROID *psDroid); /* Do the AI for a droid */ -extern void aiUpdateDroid(DROID *psDroid); +void aiUpdateDroid(DROID *psDroid); // Find the nearest best target for a droid // returns integer representing quality of choice, -1 if failed -extern SDWORD aiBestNearestTarget(DROID *psDroid, BASE_OBJECT **ppsObj, int weapon_slot, UWORD *targetOrigin); +SDWORD aiBestNearestTarget(DROID *psDroid, BASE_OBJECT **ppsObj, int weapon_slot, UWORD *targetOrigin); // Are there a lot of bullets heading towards the structure? -extern BOOL aiObjectIsProbablyDoomed(BASE_OBJECT *psObject); +BOOL aiObjectIsProbablyDoomed(BASE_OBJECT *psObject); // Update the expected damage of the object. -extern void aiObjectAddExpectedDamage(BASE_OBJECT *psObject, SDWORD damage); +void aiObjectAddExpectedDamage(BASE_OBJECT *psObject, SDWORD damage); /* See if there is a target in range added int weapon_slot*/ -extern BOOL aiChooseTarget(BASE_OBJECT *psObj, +BOOL aiChooseTarget(BASE_OBJECT *psObj, BASE_OBJECT **ppsTarget, int weapon_slot, BOOL bUpdateTarget, UWORD *targetOrigin); -/*set the droid to attack if wihin range otherwise move to target*/ -extern void attackTarget(DROID *psDroid, BASE_OBJECT *psTarget); - /** See if there is a target in range for Sensor objects. */ -extern BOOL aiChooseSensorTarget(BASE_OBJECT *psObj, BASE_OBJECT **ppsTarget); - -/** See if there is a friendly sensor anywhere holding a valid target for psObj. */ -BASE_OBJECT *aiSearchSensorTargets(BASE_OBJECT *psObj, int weapon_slot, WEAPON_STATS *psWStats, UWORD *targetOrigin); +BOOL aiChooseSensorTarget(BASE_OBJECT *psObj, BASE_OBJECT **ppsTarget); /*set of rules which determine whether the weapon associated with the object can fire on the propulsion type of the target*/ -extern BOOL validTarget(BASE_OBJECT *psObject, BASE_OBJECT *psTarget, int weapon_slot); +BOOL validTarget(BASE_OBJECT *psObject, BASE_OBJECT *psTarget, int weapon_slot); #ifdef __cplusplus } diff --git a/src/aiexperience.c b/src/aiexperience.c index b985104b0..d8ecf1086 100644 --- a/src/aiexperience.c +++ b/src/aiexperience.c @@ -17,23 +17,23 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include - -#include "objmem.h" -#include "objectdef.h" -#include "map.h" #include "lib/framework/frame.h" -#include "lib/script/interpreter.h" -#include "lib/script/stack.h" -#include "lib/script/codeprint.h" -#include "lib/script/script.h" -#include "multiplay.h" - -#include "console.h" //for RIGHT_JUSTIFY -#include "geometry.h" #include "aiexperience.h" +#include "console.h" +#include "map.h" + +#define SAVE_FORMAT_VERSION 2 + +#define MAX_OIL_ENTRIES 600 //(Max number of derricks or oil resources) / 2 +#define MAX_OIL_LOCATIONS 300 //max number of oil locations to store + +#define SAME_LOC_RANGE 8 //if within this range, consider it the same loc + +//Return values of experience-loading routine +#define EXPERIENCE_LOAD_OK 0 //no problemens encountered +#define EXPERIENCE_LOAD_ERROR 1 //error while loading experience +#define EXPERIENCE_LOAD_NOSAVE (-1) //no experience exists static PHYSFS_file* aiSaveFile[8]; @@ -46,12 +46,6 @@ SDWORD baseDefendLocPrior[MAX_PLAYERS][MAX_BASE_DEFEND_LOCATIONS]; //Priority SDWORD oilDefendLocation[MAX_PLAYERS][MAX_OIL_DEFEND_LOCATIONS][2]; SDWORD oilDefendLocPrior[MAX_PLAYERS][MAX_OIL_DEFEND_LOCATIONS]; -static bool WriteAISaveData(SDWORD nPlayer); -static int ReadAISaveData(SDWORD nPlayer); -static bool canRecallOilAt(SDWORD nPlayer, SDWORD x, SDWORD y); -static bool SortBaseDefendLoc(SDWORD nPlayer); -static bool SortOilDefendLoc(SDWORD nPlayer); - void InitializeAIExperience(void) { SDWORD i,j; @@ -127,6 +121,240 @@ BOOL SaveAIExperience(BOOL bNotify) return true; } +static bool SetUpInputFile(const unsigned int nPlayer) +{ + char* FileName; + + /* Create filename */ + sasprintf(&FileName, "multiplay/learndata/player%u/%s.lrn", nPlayer, game.map); + + aiSaveFile[nPlayer] = PHYSFS_openRead(FileName); + + if (aiSaveFile[nPlayer] == NULL) + { + debug(LOG_ERROR, "Couldn't open input file: [directory: %s] '%s' for player %u: %s", PHYSFS_getRealDir(FileName), FileName, nPlayer, PHYSFS_getLastError()); + return false; + } + + return true; +} + +static int ReadAISaveData(SDWORD nPlayer) +{ + FEATURE *psFeature; + SDWORD NumEntries=0; //How many derricks/oil resources will be saved + UDWORD PosXY[MAX_OIL_ENTRIES]; //Locations, 0=x,1=y,2=x etc + UDWORD i,j; + BOOL Found,bTileVisible; + UDWORD version; + + if(!SetUpInputFile(nPlayer)) + { + //debug(LOG_ERROR,"No experience data loaded for %d",nPlayer); + return EXPERIENCE_LOAD_NOSAVE; + } + else + { + /* Read data version */ + if (PHYSFS_read(aiSaveFile[nPlayer], &version, sizeof(NumEntries), 1 ) != 1 ) + { + debug(LOG_ERROR, "Failed to read version number for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + // Check version, assume backward compatibility + if(version > SAVE_FORMAT_VERSION) + { + debug(LOG_ERROR, "Incompatible version of the learn data (%d, expected %d) for player '%d'", version, SAVE_FORMAT_VERSION, nPlayer); + } + + /************************/ + /* Enemy bases */ + /************************/ + + /* read max number of players (usually 8) */ + if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) + { + debug(LOG_ERROR, "Failed to read number of players for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /* read base locations of all players */ + if (PHYSFS_read(aiSaveFile[nPlayer], baseLocation[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + { + debug(LOG_ERROR, "Failed to load baseLocation for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /************************************/ + /* Base attack locations */ + /************************************/ + + /* read MAX_BASE_DEFEND_LOCATIONS */ + if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(SDWORD), 1 ) != 1 ) + { + debug(LOG_ERROR, "Failed to read MAX_BASE_DEFEND_LOCATIONS for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /* check it's the same as current MAX_BASE_DEFEND_LOCATIONS */ + if(NumEntries > MAX_BASE_DEFEND_LOCATIONS) + { + debug(LOG_ERROR, "saved MAX_BASE_DEFEND_LOCATIONS and current one don't match (%d / %d)", NumEntries, MAX_BASE_DEFEND_LOCATIONS); + return EXPERIENCE_LOAD_ERROR; + } + + //debug(LOG_ERROR,"num base attack loc: %d", NumEntries); + + /* read base defence locations */ + if (PHYSFS_read(aiSaveFile[nPlayer], baseDefendLocation[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + { + debug(LOG_ERROR, "Failed to load baseDefendLocation for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /* read base defend priorities */ + if (PHYSFS_read(aiSaveFile[nPlayer], baseDefendLocPrior[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + { + debug(LOG_ERROR, "Failed to load baseDefendLocPrior for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /************************************/ + /* Oil attack locations */ + /************************************/ + + /* read MAX_OIL_DEFEND_LOCATIONS */ + if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) + { + debug(LOG_ERROR, "Failed to read max number of oil attack locations for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /* check it's the same as current MAX_OIL_DEFEND_LOCATIONS */ + if(NumEntries > MAX_OIL_DEFEND_LOCATIONS) + { + debug(LOG_ERROR, "saved MAX_OIL_DEFEND_LOCATIONS and current one don't match (%d / %d)", NumEntries, MAX_OIL_DEFEND_LOCATIONS); + return EXPERIENCE_LOAD_ERROR; + } + + //debug(LOG_ERROR,"num oil attack loc: %d", NumEntries); + + /* read oil locations */ + if (PHYSFS_read(aiSaveFile[nPlayer], oilDefendLocation[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + { + debug(LOG_ERROR, "Failed to load oilDefendLocation for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /* read oil location priority */ + if (PHYSFS_read(aiSaveFile[nPlayer], oilDefendLocPrior[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + { + debug(LOG_ERROR, "Failed to load oilDefendLocPrior for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /****************************/ + /* Oil Resources */ + /****************************/ + + /* read MAX_OIL_LOCATIONS */ + if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) + { + debug(LOG_ERROR, "Failed to load MAX_OIL_LOCATIONS for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + /* check it's the same as current MAX_OIL_LOCATIONS */ + if(NumEntries > MAX_OIL_LOCATIONS) + { + debug(LOG_ERROR, "saved MAX_OIL_LOCATIONS and current one don't match (%d / %d)", NumEntries, MAX_OIL_LOCATIONS); + return EXPERIENCE_LOAD_ERROR; + } + + + /* Read number of Oil Resources */ + if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) + { + debug(LOG_ERROR, "Failed to read Oil Resources count for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + //debug(LOG_ERROR,"Num oil: %d", NumEntries); + + if(NumEntries > 0) //any oil resources were saved? + { + /* Read Oil Resources coordinates */ + if (PHYSFS_read(aiSaveFile[nPlayer], PosXY, sizeof(UDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + { + debug(LOG_ERROR, "Failed to read Oil Resources coordinates for player '%d'",nPlayer); + return EXPERIENCE_LOAD_ERROR; + } + + for(i=0; ipsNext) + { + if(psFeature->psStats->subType == FEAT_OIL_RESOURCE) //Oil resource + { + if (!(psFeature->visible[nPlayer])) //Not visible yet + { + if((PosXY[i * 2] == psFeature->pos.x) && (PosXY[i * 2 + 1] == psFeature->pos.y)) /* Found it */ + { + //debug_console("Matched oil resource at x: %d y: %d", PosXY[i * 2]/128,PosXY[i * 2 + 1]/128); + + psFeature->visible[nPlayer] = true; //Make visible for AI + Found = true; + break; + } + } + + } + } + + //if(!Found) //Couldn't find oil resource with this coords on the map + // debug_console("!!Failed to match oil resource #%d at x: %d y: %d", i,PosXY[i * 2]/128,PosXY[i * 2 + 1]/128); + } + + /************************/ + /* Fog of War */ + /************************/ + if(version >= 2) + { + for(i=0;i -1) && (nPlayer < MAX_PLAYERS)) @@ -137,28 +365,6 @@ SDWORD LoadPlayerAIExperience(SDWORD nPlayer) return EXPERIENCE_LOAD_ERROR; } -BOOL SavePlayerAIExperience(SDWORD nPlayer, BOOL bNotify) -{ - if((nPlayer > -1) && (nPlayer < MAX_PLAYERS)) - { - if(!WriteAISaveData(nPlayer)) - { - debug(LOG_ERROR,"SavePlayerAIExperience - failed to save exper"); - - //addConsoleMessage("Failed to save experience.",RIGHT_JUSTIFY,SYSTEM_MESSAGE); - console("Failed to save experience for player %d.", nPlayer); - return false; - } - } - - if(bNotify) - { - console("Experience for player %d saved successfully.", nPlayer); - } - - return true; -} - static bool SetUpOutputFile(unsigned int nPlayer) { char* SaveDir; @@ -188,25 +394,25 @@ static bool SetUpOutputFile(unsigned int nPlayer) return true; } -static bool SetUpInputFile(const unsigned int nPlayer) +static bool canRecallOilAt(SDWORD nPlayer, SDWORD x, SDWORD y) { - char* FileName; + unsigned int i; - /* Create filename */ - sasprintf(&FileName, "multiplay/learndata/player%u/%s.lrn", nPlayer, game.map); - - aiSaveFile[nPlayer] = PHYSFS_openRead(FileName); - - if (aiSaveFile[nPlayer] == NULL) + /* go through all remembered oil and check */ + for(i = 0; i < MAX_OIL_LOCATIONS; ++i) { - debug(LOG_ERROR, "Couldn't open input file: [directory: %s] '%s' for player %u: %s", PHYSFS_getRealDir(FileName), FileName, nPlayer, PHYSFS_getLastError()); - return false; + if (oilLocation[nPlayer][i][0] != x) + continue; + + if (oilLocation[nPlayer][i][1] != y) + continue; + + return true; //yep, both matched } - return true; + return false; //no } - static bool WriteAISaveData(SDWORD nPlayer) { @@ -454,239 +660,85 @@ static bool WriteAISaveData(SDWORD nPlayer) return PHYSFS_close(aiSaveFile[nPlayer]); } -static bool canRecallOilAt(SDWORD nPlayer, SDWORD x, SDWORD y) +BOOL SavePlayerAIExperience(SDWORD nPlayer, BOOL bNotify) { - unsigned int i; - - /* go through all remembered oil and check */ - for(i = 0; i < MAX_OIL_LOCATIONS; ++i) + if((nPlayer > -1) && (nPlayer < MAX_PLAYERS)) { - if (oilLocation[nPlayer][i][0] != x) - continue; + if(!WriteAISaveData(nPlayer)) + { + debug(LOG_ERROR,"SavePlayerAIExperience - failed to save exper"); - if (oilLocation[nPlayer][i][1] != y) - continue; - - return true; //yep, both matched + //addConsoleMessage("Failed to save experience.",RIGHT_JUSTIFY,SYSTEM_MESSAGE); + console("Failed to save experience for player %d.", nPlayer); + return false; + } } - return false; //no + if(bNotify) + { + console("Experience for player %d saved successfully.", nPlayer); + } + + return true; } -static int ReadAISaveData(SDWORD nPlayer) + +//sort the priorities, placing the higher ones at the top +static bool SortBaseDefendLoc(SDWORD nPlayer) { - FEATURE *psFeature; - SDWORD NumEntries=0; //How many derricks/oil resources will be saved - UDWORD PosXY[MAX_OIL_ENTRIES]; //Locations, 0=x,1=y,2=x etc - UDWORD i,j; - BOOL Found,bTileVisible; - UDWORD version; + SDWORD i, prior, temp,LowestPrior,LowestIndex,SortBound; - if(!SetUpInputFile(nPlayer)) + + + SortBound = MAX_BASE_DEFEND_LOCATIONS-1; //nothing sorted yet, point at last elem + + while(SortBound >= 0) //while didn't reach the top { - //debug(LOG_ERROR,"No experience data loaded for %d",nPlayer); - return EXPERIENCE_LOAD_NOSAVE; - } - else - { - /* Read data version */ - if (PHYSFS_read(aiSaveFile[nPlayer], &version, sizeof(NumEntries), 1 ) != 1 ) + LowestPrior = (SDWORD_MAX - 1); + + LowestIndex = -1; + + //find lowest element + for(i=0; i <= SortBound; i++) { - debug(LOG_ERROR, "Failed to read version number for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - // Check version, assume backward compatibility - if(version > SAVE_FORMAT_VERSION) - { - debug(LOG_ERROR, "Incompatible version of the learn data (%d, expected %d) for player '%d'", version, SAVE_FORMAT_VERSION, nPlayer); - } - - /************************/ - /* Enemy bases */ - /************************/ - - /* read max number of players (usually 8) */ - if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) - { - debug(LOG_ERROR, "Failed to read number of players for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /* read base locations of all players */ - if (PHYSFS_read(aiSaveFile[nPlayer], baseLocation[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) - { - debug(LOG_ERROR, "Failed to load baseLocation for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /************************************/ - /* Base attack locations */ - /************************************/ - - /* read MAX_BASE_DEFEND_LOCATIONS */ - if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(SDWORD), 1 ) != 1 ) - { - debug(LOG_ERROR, "Failed to read MAX_BASE_DEFEND_LOCATIONS for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /* check it's the same as current MAX_BASE_DEFEND_LOCATIONS */ - if(NumEntries > MAX_BASE_DEFEND_LOCATIONS) - { - debug(LOG_ERROR, "saved MAX_BASE_DEFEND_LOCATIONS and current one don't match (%d / %d)", NumEntries, MAX_BASE_DEFEND_LOCATIONS); - return EXPERIENCE_LOAD_ERROR; - } - - //debug(LOG_ERROR,"num base attack loc: %d", NumEntries); - - /* read base defence locations */ - if (PHYSFS_read(aiSaveFile[nPlayer], baseDefendLocation[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) - { - debug(LOG_ERROR, "Failed to load baseDefendLocation for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /* read base defend priorities */ - if (PHYSFS_read(aiSaveFile[nPlayer], baseDefendLocPrior[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) - { - debug(LOG_ERROR, "Failed to load baseDefendLocPrior for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /************************************/ - /* Oil attack locations */ - /************************************/ - - /* read MAX_OIL_DEFEND_LOCATIONS */ - if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) - { - debug(LOG_ERROR, "Failed to read max number of oil attack locations for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /* check it's the same as current MAX_OIL_DEFEND_LOCATIONS */ - if(NumEntries > MAX_OIL_DEFEND_LOCATIONS) - { - debug(LOG_ERROR, "saved MAX_OIL_DEFEND_LOCATIONS and current one don't match (%d / %d)", NumEntries, MAX_OIL_DEFEND_LOCATIONS); - return EXPERIENCE_LOAD_ERROR; - } - - //debug(LOG_ERROR,"num oil attack loc: %d", NumEntries); - - /* read oil locations */ - if (PHYSFS_read(aiSaveFile[nPlayer], oilDefendLocation[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) - { - debug(LOG_ERROR, "Failed to load oilDefendLocation for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /* read oil location priority */ - if (PHYSFS_read(aiSaveFile[nPlayer], oilDefendLocPrior[nPlayer], sizeof(SDWORD), NumEntries * 2 ) != (NumEntries * 2) ) - { - debug(LOG_ERROR, "Failed to load oilDefendLocPrior for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /****************************/ - /* Oil Resources */ - /****************************/ - - /* read MAX_OIL_LOCATIONS */ - if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) - { - debug(LOG_ERROR, "Failed to load MAX_OIL_LOCATIONS for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - /* check it's the same as current MAX_OIL_LOCATIONS */ - if(NumEntries > MAX_OIL_LOCATIONS) - { - debug(LOG_ERROR, "saved MAX_OIL_LOCATIONS and current one don't match (%d / %d)", NumEntries, MAX_OIL_LOCATIONS); - return EXPERIENCE_LOAD_ERROR; - } - - - /* Read number of Oil Resources */ - if (PHYSFS_read(aiSaveFile[nPlayer], &NumEntries, sizeof(NumEntries), 1 ) != 1 ) - { - debug(LOG_ERROR, "Failed to read Oil Resources count for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - //debug(LOG_ERROR,"Num oil: %d", NumEntries); - - if(NumEntries > 0) //any oil resources were saved? - { - /* Read Oil Resources coordinates */ - if (PHYSFS_read(aiSaveFile[nPlayer], PosXY, sizeof(UDWORD), NumEntries * 2 ) != (NumEntries * 2) ) + prior = baseDefendLocPrior[nPlayer][i]; + if(prior < LowestPrior) //lower and isn't a flag meaning this one wasn't initialized with anything { - debug(LOG_ERROR, "Failed to read Oil Resources coordinates for player '%d'",nPlayer); - return EXPERIENCE_LOAD_ERROR; - } - - for(i=0; ipsNext) - { - if(psFeature->psStats->subType == FEAT_OIL_RESOURCE) //Oil resource - { - if (!(psFeature->visible[nPlayer])) //Not visible yet - { - if((PosXY[i * 2] == psFeature->pos.x) && (PosXY[i * 2 + 1] == psFeature->pos.y)) /* Found it */ - { - //debug_console("Matched oil resource at x: %d y: %d", PosXY[i * 2]/128,PosXY[i * 2 + 1]/128); - - psFeature->visible[nPlayer] = true; //Make visible for AI - Found = true; - break; - } - } - - } - } - - //if(!Found) //Couldn't find oil resource with this coords on the map - // debug_console("!!Failed to match oil resource #%d at x: %d y: %d", i,PosXY[i * 2]/128,PosXY[i * 2 + 1]/128); - } - - /************************/ - /* Fog of War */ - /************************/ - if(version >= 2) - { - for(i=0;i= 0) //while didn't reach the top - { - LowestPrior = (SDWORD_MAX - 1); - - LowestIndex = -1; - - //find lowest element - for(i=0; i <= SortBound; i++) - { - prior = baseDefendLocPrior[nPlayer][i]; - if(prior < LowestPrior) //lower and isn't a flag meaning this one wasn't initialized with anything - { - LowestPrior = prior; - LowestIndex = i; - } - } - - //huh, nothing found? (probably nothing set yet, no experience) - if(LowestIndex < 0) - { - //debug(LOG_ERROR,"sortBaseDefendLoc() - No lowest elem found"); - return true; - } - - //swap - if(LowestPrior < baseDefendLocPrior[nPlayer][SortBound]) //need to swap? (might be the same elem) - { - //priority - temp = baseDefendLocPrior[nPlayer][SortBound]; - baseDefendLocPrior[nPlayer][SortBound] = baseDefendLocPrior[nPlayer][LowestIndex]; - baseDefendLocPrior[nPlayer][LowestIndex] = temp; - - //x - temp = baseDefendLocation[nPlayer][SortBound][0]; - baseDefendLocation[nPlayer][SortBound][0] = baseDefendLocation[nPlayer][LowestIndex][0]; - baseDefendLocation[nPlayer][LowestIndex][0] = temp; - - //y - temp = baseDefendLocation[nPlayer][SortBound][1]; - baseDefendLocation[nPlayer][SortBound][1] = baseDefendLocation[nPlayer][LowestIndex][1]; - baseDefendLocation[nPlayer][LowestIndex][1] = temp; - } - - SortBound--; //in any case lower the boundry, even if didn't swap - } - - return true; -} - void BaseExperienceDebug(SDWORD nPlayer) { SDWORD i; @@ -842,6 +836,61 @@ void OilExperienceDebug(SDWORD nPlayer) } +//sort the priorities, placing the higher ones at the top +static bool SortOilDefendLoc(SDWORD nPlayer) +{ + int SortBound; + + //while didn't reach the top + for (SortBound = MAX_OIL_DEFEND_LOCATIONS - 1; SortBound >= 0; --SortBound) + { + int LowestPrior = SDWORD_MAX - 1, + LowestIndex = -1; + int i; + + //find lowest element + for (i = 0; i <= SortBound; ++i) + { + const int prior = oilDefendLocPrior[nPlayer][i]; + if (prior < LowestPrior) //lower and isn't a flag meaning this one wasn't initialized with anything + { + LowestPrior = prior; + LowestIndex = i; + } + } + + //huh, nothing found? (probably nothing set yet, no experience) + if (LowestIndex < 0) + { + //debug(LOG_ERROR,"sortBaseDefendLoc() - No lowest elem found"); + return true; + } + + //swap + if (LowestPrior < oilDefendLocPrior[nPlayer][SortBound]) //need to swap? (might be the same elem) + { + int temp; + + //priority + temp = oilDefendLocPrior[nPlayer][SortBound]; + oilDefendLocPrior[nPlayer][SortBound] = oilDefendLocPrior[nPlayer][LowestIndex]; + oilDefendLocPrior[nPlayer][LowestIndex] = temp; + + //x + temp = oilDefendLocation[nPlayer][SortBound][0]; + oilDefendLocation[nPlayer][SortBound][0] = oilDefendLocation[nPlayer][LowestIndex][0]; + oilDefendLocation[nPlayer][LowestIndex][0] = temp; + + //y + temp = oilDefendLocation[nPlayer][SortBound][1]; + oilDefendLocation[nPlayer][SortBound][1] = oilDefendLocation[nPlayer][LowestIndex][1]; + oilDefendLocation[nPlayer][LowestIndex][1] = temp; + } + } + + return true; +} + //x and y are passed by script, find out if this loc is close to //an already stored loc, if yes then increase its priority BOOL StoreOilDefendLoc(SDWORD x, SDWORD y, SDWORD nPlayer) @@ -910,61 +959,6 @@ int GetOilDefendLocIndex(SDWORD x, SDWORD y, SDWORD nPlayer) return -1; } -//sort the priorities, placing the higher ones at the top -static bool SortOilDefendLoc(SDWORD nPlayer) -{ - int SortBound; - - //while didn't reach the top - for (SortBound = MAX_OIL_DEFEND_LOCATIONS - 1; SortBound >= 0; --SortBound) - { - int LowestPrior = SDWORD_MAX - 1, - LowestIndex = -1; - int i; - - //find lowest element - for (i = 0; i <= SortBound; ++i) - { - const int prior = oilDefendLocPrior[nPlayer][i]; - if (prior < LowestPrior) //lower and isn't a flag meaning this one wasn't initialized with anything - { - LowestPrior = prior; - LowestIndex = i; - } - } - - //huh, nothing found? (probably nothing set yet, no experience) - if (LowestIndex < 0) - { - //debug(LOG_ERROR,"sortBaseDefendLoc() - No lowest elem found"); - return true; - } - - //swap - if (LowestPrior < oilDefendLocPrior[nPlayer][SortBound]) //need to swap? (might be the same elem) - { - int temp; - - //priority - temp = oilDefendLocPrior[nPlayer][SortBound]; - oilDefendLocPrior[nPlayer][SortBound] = oilDefendLocPrior[nPlayer][LowestIndex]; - oilDefendLocPrior[nPlayer][LowestIndex] = temp; - - //x - temp = oilDefendLocation[nPlayer][SortBound][0]; - oilDefendLocation[nPlayer][SortBound][0] = oilDefendLocation[nPlayer][LowestIndex][0]; - oilDefendLocation[nPlayer][LowestIndex][0] = temp; - - //y - temp = oilDefendLocation[nPlayer][SortBound][1]; - oilDefendLocation[nPlayer][SortBound][1] = oilDefendLocation[nPlayer][LowestIndex][1]; - oilDefendLocation[nPlayer][LowestIndex][1] = temp; - } - } - - return true; -} - bool CanRememberPlayerBaseLoc(SDWORD lookingPlayer, SDWORD enemyPlayer) { return lookingPlayer >= 0 diff --git a/src/aiexperience.h b/src/aiexperience.h index 20ddb7dfa..a126a11ef 100644 --- a/src/aiexperience.h +++ b/src/aiexperience.h @@ -25,14 +25,8 @@ extern "C" { #endif //__cplusplus -#define SAVE_FORMAT_VERSION 2 - -#define MAX_OIL_ENTRIES 600 //(Max number of derricks or oil resources) / 2 - #define MAX_OIL_DEFEND_LOCATIONS 100 //max number of attack locations to store -#define MAX_OIL_LOCATIONS 300 //max number of oil locations to store #define MAX_BASE_DEFEND_LOCATIONS 30 //max number of base locations to store -#define SAME_LOC_RANGE 8 //if within this range, consider it the same loc extern SDWORD baseLocation[MAX_PLAYERS][MAX_PLAYERS][2]; extern SDWORD baseDefendLocation[MAX_PLAYERS][MAX_BASE_DEFEND_LOCATIONS][2]; @@ -41,32 +35,27 @@ extern SDWORD oilDefendLocation[MAX_PLAYERS][MAX_OIL_DEFEND_LOCATIONS][2]; extern SDWORD baseDefendLocPrior[MAX_PLAYERS][MAX_BASE_DEFEND_LOCATIONS]; extern SDWORD oilDefendLocPrior[MAX_PLAYERS][MAX_OIL_DEFEND_LOCATIONS]; -extern BOOL SavePlayerAIExperience(SDWORD nPlayer, BOOL bNotify); -extern SDWORD LoadPlayerAIExperience(SDWORD nPlayer); +BOOL SavePlayerAIExperience(SDWORD nPlayer, BOOL bNotify); +SDWORD LoadPlayerAIExperience(SDWORD nPlayer); -extern void LoadAIExperience(BOOL bNotify); -extern BOOL SaveAIExperience(BOOL bNotify); +void LoadAIExperience(BOOL bNotify); +BOOL SaveAIExperience(BOOL bNotify); -extern void InitializeAIExperience(void); +void InitializeAIExperience(void); -extern BOOL StoreBaseDefendLoc(SDWORD x, SDWORD y, SDWORD nPlayer); -extern BOOL StoreOilDefendLoc(SDWORD x, SDWORD y, SDWORD nPlayer); +BOOL StoreBaseDefendLoc(SDWORD x, SDWORD y, SDWORD nPlayer); +BOOL StoreOilDefendLoc(SDWORD x, SDWORD y, SDWORD nPlayer); -extern int GetOilDefendLocIndex(SDWORD x, SDWORD y, SDWORD nPlayer); -extern SDWORD GetBaseDefendLocIndex(SDWORD x, SDWORD y, SDWORD nPlayer); +int GetOilDefendLocIndex(SDWORD x, SDWORD y, SDWORD nPlayer); +SDWORD GetBaseDefendLocIndex(SDWORD x, SDWORD y, SDWORD nPlayer); -extern bool CanRememberPlayerBaseLoc(SDWORD lookingPlayer, SDWORD enemyPlayer); -extern bool CanRememberPlayerBaseDefenseLoc(SDWORD player, SDWORD index); -extern bool CanRememberPlayerOilDefenseLoc(SDWORD player, SDWORD index); +bool CanRememberPlayerBaseLoc(SDWORD lookingPlayer, SDWORD enemyPlayer); +bool CanRememberPlayerBaseDefenseLoc(SDWORD player, SDWORD index); +bool CanRememberPlayerOilDefenseLoc(SDWORD player, SDWORD index); -extern void BaseExperienceDebug(SDWORD nPlayer); -extern void OilExperienceDebug(SDWORD nPlayer); - -//Return values of experience-loading routine -#define EXPERIENCE_LOAD_OK 0 //no problemens encountered -#define EXPERIENCE_LOAD_ERROR 1 //error while loading experience -#define EXPERIENCE_LOAD_NOSAVE (-1) //no experience exists +void BaseExperienceDebug(SDWORD nPlayer); +void OilExperienceDebug(SDWORD nPlayer); #ifdef __cplusplus } diff --git a/src/astar.c b/src/astar.c index 355bc1dc5..06377acfb 100644 --- a/src/astar.c +++ b/src/astar.c @@ -23,8 +23,9 @@ #ifndef WZ_TESTING #include "lib/framework/frame.h" -#include "map.h" + #include "astar.h" +#include "map.h" #endif /** Counter to implement lazy deletion from nodeArray. @@ -325,6 +326,20 @@ SDWORD fpathAStarRoute(MOVE_CONTROL *psMove, PATHJOB *psJob) } else { + // We cannot cut corners + x = psCurr->x + aDirOffset[(dir + 1) % 8].x; + y = psCurr->y + aDirOffset[(dir + 1) % 8].y; + if (fpathBaseBlockingTile(x, y, psJob->propulsion, psJob->owner, psJob->moveType)) + { + continue; + } + x = psCurr->x + aDirOffset[(dir - 1) % 8].x; + y = psCurr->y + aDirOffset[(dir - 1) % 8].y; + if (fpathBaseBlockingTile(x, y, psJob->propulsion, psJob->owner, psJob->moveType)) + { + continue; + } + currDist = psCurr->dist + 14; } diff --git a/src/atmos.h b/src/atmos.h index e5e4d9b8e..3eab2e5e3 100644 --- a/src/atmos.h +++ b/src/atmos.h @@ -21,6 +21,9 @@ #ifndef __INCLUDED_SRC_ATMOS_H__ #define __INCLUDED_SRC_ATMOS_H__ +#include "lib/framework/vector.h" +#include "lib/ivis_common/ivisdef.h" + #ifdef __cplusplus extern "C" { diff --git a/src/baseobject.c b/src/baseobject.c index 2c3d970a0..18f52ac74 100644 --- a/src/baseobject.c +++ b/src/baseobject.c @@ -19,7 +19,7 @@ */ #include "lib/framework/frame.h" -#include "lib/framework/debug.h" + #include "baseobject.h" #include "droid.h" #include "projectile.h" @@ -37,7 +37,7 @@ static inline uint16_t interpolateAngle(uint16_t v1, uint16_t v2, uint32_t t1, u return v1 + angleDelta(v2 - v1) * numer/denom; } -Position interpolatePos(Position p1, Position p2, uint32_t t1, uint32_t t2, uint32_t t) +static Position interpolatePos(Position p1, Position p2, uint32_t t1, uint32_t t2, uint32_t t) { Position ret = { interpolateInt(p1.x, p2.x, t1, t2, t), interpolateInt(p1.y, p2.y, t1, t2, t), @@ -55,7 +55,7 @@ Rotation interpolateRot(Rotation v1, Rotation v2, uint32_t t1, uint32_t t2, uint return rot; } -SPACETIME interpolateSpacetime(SPACETIME st1, SPACETIME st2, uint32_t t) +static SPACETIME interpolateSpacetime(SPACETIME st1, SPACETIME st2, uint32_t t) { return constructSpacetime(interpolatePos(st1.pos, st2.pos, st1.time, st2.time, t), interpolateRot(st1.rot, st2.rot, st1.time, st2.time, t), t); } diff --git a/src/baseobject.h b/src/baseobject.h index f1439b081..e103e145d 100644 --- a/src/baseobject.h +++ b/src/baseobject.h @@ -33,12 +33,8 @@ extern "C" static const unsigned int max_check_object_recursion = 4; -/// Get interpolated position at time t. -Position interpolatePos(Vector3i p1, Vector3i p2, uint32_t t1, uint32_t t2, uint32_t t); /// Get interpolated direction at time t. Rotation interpolateRot(Rotation v1, Rotation v2, uint32_t t1, uint32_t t2, uint32_t t); -/// Get interpolated spacetime at time t. -SPACETIME interpolateSpacetime(SPACETIME st1, SPACETIME st2, uint32_t t); /// Get interpolated object spacetime at time t. SPACETIME interpolateObjectSpacetime(const SIMPLE_OBJECT *obj, uint32_t t); diff --git a/src/bridge.c b/src/bridge.c index 6f3237752..c4c35b2c4 100644 --- a/src/bridge.c +++ b/src/bridge.c @@ -17,18 +17,15 @@ along with Warzone 2100; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + #include "lib/framework/frame.h" -#include "map.h" -#include "hci.h" -#include "mapdisplay.h" -#include "display3d.h" -#include "lib/ivis_common/ivisdef.h" //ivis matrix code -#include "lib/ivis_common/piedef.h" //pie render #include "lib/ivis_opengl/piematrix.h" #include "lib/ivis_common/piepalette.h" -#include "miscimd.h" -#include "effects.h" + #include "bridge.h" +#include "display3d.h" +#include "effects.h" +#include "map.h" /** * @file bridge.c @@ -43,6 +40,9 @@ * is unused. Can it be reused? - Per, 2007 */ +#define MINIMUM_BRIDGE_SPAN 2 +#define MAXIMUM_BRIDGE_SPAN 12 + /* Returns true or false as to whether a bridge is valid. For it to be true - all intervening points must be lower than the start diff --git a/src/bridge.h b/src/bridge.h index cc2654b93..6e376923c 100644 --- a/src/bridge.h +++ b/src/bridge.h @@ -28,13 +28,6 @@ extern "C" { #endif //__cplusplus -#define MINIMUM_BRIDGE_SPAN 2 -#define MAXIMUM_BRIDGE_SPAN 12 -#define BRIDGE_END_HORIZ 1 -#define BRIDGE_END_VERT 2 -#define BRIDGE_MID_HORIZ 3 -#define BRIDGE_MID_VERT 4 - typedef struct _bridge_info { int startX, startY, endX, endY; // Copy of coordinates of bridge. @@ -45,16 +38,16 @@ typedef struct _bridge_info } BRIDGE_INFO; /* Establishes whether a bridge could be built along the coordinates given */ -extern BOOL bridgeValid(UDWORD startX, UDWORD startY, UDWORD endX, UDWORD endY); +BOOL bridgeValid(UDWORD startX, UDWORD startY, UDWORD endX, UDWORD endY); /* Draws a wall section - got to be in world matrix context though! */ -extern BOOL renderBridgeSection(STRUCTURE *psStructure); +BOOL renderBridgeSection(STRUCTURE *psStructure); /* Will provide you with everything you ever wanted to know about your bridge but were afraid to ask */ -extern void getBridgeInfo(UDWORD startX, UDWORD startY, UDWORD endX, UDWORD endY, BRIDGE_INFO *info); +void getBridgeInfo(UDWORD startX, UDWORD startY, UDWORD endX, UDWORD endY, BRIDGE_INFO *info); /* FIX ME - this is used in debug to test the bridge build code */ -extern void testBuildBridge(UDWORD startX, UDWORD startY, UDWORD endX, UDWORD endY); +void testBuildBridge(UDWORD startX, UDWORD startY, UDWORD endX, UDWORD endY); #ifdef __cplusplus } diff --git a/src/bucket3d.c b/src/bucket3d.c index 1ee5d7213..e2558565c 100644 --- a/src/bucket3d.c +++ b/src/bucket3d.c @@ -23,24 +23,16 @@ * Stores object render calls in a linked list renders after bucket sorting objects. */ -/* Includes direct access to matrix code */ -#include "lib/ivis_common/piedef.h" -#include "lib/framework/fixedpoint.h" -#include "lib/ivis_common/piestate.h" -#include "lib/ivis_common/rendmode.h" -#include "lib/ivis_opengl/piematrix.h" -/* Includes from PUMPKIN stuff */ #include "lib/framework/frame.h" -#include "objectdef.h" -#include "map.h" -#include "display3d.h" -#include "miscimd.h" -#include "effects.h" -#include "component.h" -#include "bucket3d.h" -#include "message.h" -#include "console.h" +#include "lib/ivis_opengl/piematrix.h" + #include "atmos.h" +#include "bucket3d.h" +#include "component.h" +#include "display3d.h" +#include "effects.h" +#include "map.h" +#include "miscimd.h" #define CLIP_LEFT ((SDWORD)0) #define CLIP_RIGHT ((SDWORD)pie_GetVideoBufferWidth()) @@ -63,10 +55,6 @@ static BUCKET_TAG *bucketArrayS = NULL; static BUCKET_TAG *bucketArrayF = NULL; static BUCKET_TAG *bucketArrayEOS = NULL; -/* function prototypes */ -static SDWORD bucketCalculateZ(RENDER_TYPE objectType, void* pObject); -static SDWORD bucketCalculateState(RENDER_TYPE objectType, void* pObject); - // C version of BUCKET_TAG::operator <(). static int bucketArray_less_than(const void *av, const void *bv) { @@ -75,120 +63,6 @@ static int bucketArray_less_than(const void *av, const void *bv) return (a->actualZ < b->actualZ) - (a->actualZ > b->actualZ); // Sort in reverse z order. } -/* add an object to the current render list */ -extern void bucketAddTypeToList(RENDER_TYPE objectType, void* pObject) -{ - BUCKET_TAG newTag; - int32_t z; - bool useCalculateZ = false; - - switch (objectType) - { - case RENDER_EFFECT: - switch (((EFFECT*)pObject)->group) - { - case EFFECT_EXPLOSION: - case EFFECT_CONSTRUCTION: - case EFFECT_SMOKE: - case EFFECT_FIREWORK: - useCalculateZ = true; - break; - default: break; - } - break; - case RENDER_SHADOW: - case RENDER_PROJECTILE: - case RENDER_PROXMSG: - useCalculateZ = true; - break; - default: break; - } - // NOTE bucketCalculateState calls bucketCalculateZ, don't know why not just use bucketCalculateZ. - z = useCalculateZ ? bucketCalculateZ(objectType, pObject) : bucketCalculateState(objectType, pObject); - - if (z < 0) - { - /* Object will not be render - has been clipped! */ - if(objectType == RENDER_DROID || objectType == RENDER_STRUCTURE) - { - /* Won't draw selection boxes */ - ((BASE_OBJECT *)pObject)->sDisplay.frameNumber = 0; - } - - return; - } - - //put the object data into the tag - newTag.objectType = objectType; - newTag.pObject = pObject; - newTag.actualZ = z; - - //add tag to bucketArray - // C version of std::vector::push_back(). - if (bucketArrayF == bucketArrayEOS) - { - BUCKET_TAG *old = bucketArrayS; - size_t reserve = (bucketArrayEOS - old)*2 + 1; - bucketArrayS = realloc(old, reserve*sizeof(*old)); - bucketArrayF = bucketArrayS + (bucketArrayF - old); - bucketArrayEOS = bucketArrayS + reserve; - } - *bucketArrayF++ = newTag; -} - - -/* render Objects in list */ -extern void bucketRenderCurrentList(void) -{ - BUCKET_TAG* thisTag; - - // C version of std::sort(). - qsort(bucketArrayS, bucketArrayF - bucketArrayS, sizeof(*bucketArrayS), &bucketArray_less_than); - - // C version of for (std::vector::iterator thisTag = bucketArray.begin(); thisTag != bucketArray.end(); ++thisTag). C wins! - for (thisTag = bucketArrayS; thisTag != bucketArrayF; ++thisTag) // render from back to front - { - switch(thisTag->objectType) - { - case RENDER_PARTICLE: - renderParticle((ATPART*)thisTag->pObject); - break; - case RENDER_EFFECT: - renderEffect((EFFECT*)thisTag->pObject); - break; - case RENDER_DROID: - renderDroid((DROID*)thisTag->pObject); - break; - case RENDER_SHADOW: - renderShadow((DROID*)thisTag->pObject, getImdFromIndex(MI_SHADOW)); - break; - case RENDER_STRUCTURE: - renderStructure((STRUCTURE*)thisTag->pObject); - break; - case RENDER_FEATURE: - renderFeature((FEATURE*)thisTag->pObject); - break; - case RENDER_PROXMSG: - renderProximityMsg((PROXIMITY_DISPLAY*)thisTag->pObject); - break; - case RENDER_PROJECTILE: - renderProjectile((PROJECTILE*)thisTag->pObject); - break; - case RENDER_ANIMATION: - renderAnimComponent((COMPONENT_OBJECT*)thisTag->pObject); - break; - case RENDER_DELIVPOINT: - renderDeliveryPoint((FLAG_POSITION*)thisTag->pObject, false); - break; - } - } - - //reset the bucket array as we go - //reset the tag array - // C version of bucketArray.clear(). - bucketArrayF = bucketArrayS; -} - static SDWORD bucketCalculateZ(RENDER_TYPE objectType, void* pObject) { SDWORD z = 0, radius; @@ -595,3 +469,117 @@ static SDWORD bucketCalculateState(RENDER_TYPE objectType, void* pObject) return z; } + +/* add an object to the current render list */ +void bucketAddTypeToList(RENDER_TYPE objectType, void* pObject) +{ + BUCKET_TAG newTag; + int32_t z; + bool useCalculateZ = false; + + switch (objectType) + { + case RENDER_EFFECT: + switch (((EFFECT*)pObject)->group) + { + case EFFECT_EXPLOSION: + case EFFECT_CONSTRUCTION: + case EFFECT_SMOKE: + case EFFECT_FIREWORK: + useCalculateZ = true; + break; + default: break; + } + break; + case RENDER_SHADOW: + case RENDER_PROJECTILE: + case RENDER_PROXMSG: + useCalculateZ = true; + break; + default: break; + } + // NOTE bucketCalculateState calls bucketCalculateZ, don't know why not just use bucketCalculateZ. + z = useCalculateZ ? bucketCalculateZ(objectType, pObject) : bucketCalculateState(objectType, pObject); + + if (z < 0) + { + /* Object will not be render - has been clipped! */ + if(objectType == RENDER_DROID || objectType == RENDER_STRUCTURE) + { + /* Won't draw selection boxes */ + ((BASE_OBJECT *)pObject)->sDisplay.frameNumber = 0; + } + + return; + } + + //put the object data into the tag + newTag.objectType = objectType; + newTag.pObject = pObject; + newTag.actualZ = z; + + //add tag to bucketArray + // C version of std::vector::push_back(). + if (bucketArrayF == bucketArrayEOS) + { + BUCKET_TAG *old = bucketArrayS; + size_t reserve = (bucketArrayEOS - old)*2 + 1; + bucketArrayS = realloc(old, reserve*sizeof(*old)); + bucketArrayF = bucketArrayS + (bucketArrayF - old); + bucketArrayEOS = bucketArrayS + reserve; + } + *bucketArrayF++ = newTag; +} + + +/* render Objects in list */ +void bucketRenderCurrentList(void) +{ + BUCKET_TAG* thisTag; + + // C version of std::sort(). + qsort(bucketArrayS, bucketArrayF - bucketArrayS, sizeof(*bucketArrayS), &bucketArray_less_than); + + // C version of for (std::vector::iterator thisTag = bucketArray.begin(); thisTag != bucketArray.end(); ++thisTag). C wins! + for (thisTag = bucketArrayS; thisTag != bucketArrayF; ++thisTag) // render from back to front + { + switch(thisTag->objectType) + { + case RENDER_PARTICLE: + renderParticle((ATPART*)thisTag->pObject); + break; + case RENDER_EFFECT: + renderEffect((EFFECT*)thisTag->pObject); + break; + case RENDER_DROID: + renderDroid((DROID*)thisTag->pObject); + break; + case RENDER_SHADOW: + renderShadow((DROID*)thisTag->pObject, getImdFromIndex(MI_SHADOW)); + break; + case RENDER_STRUCTURE: + renderStructure((STRUCTURE*)thisTag->pObject); + break; + case RENDER_FEATURE: + renderFeature((FEATURE*)thisTag->pObject); + break; + case RENDER_PROXMSG: + renderProximityMsg((PROXIMITY_DISPLAY*)thisTag->pObject); + break; + case RENDER_PROJECTILE: + renderProjectile((PROJECTILE*)thisTag->pObject); + break; + case RENDER_ANIMATION: + renderAnimComponent((COMPONENT_OBJECT*)thisTag->pObject); + break; + case RENDER_DELIVPOINT: + renderDeliveryPoint((FLAG_POSITION*)thisTag->pObject, false); + break; + } + } + + //reset the bucket array as we go + //reset the tag array + // C version of bucketArray.clear(). + bucketArrayF = bucketArrayS; +} diff --git a/src/bucket3d.h b/src/bucket3d.h index d5d35bd6d..b83c8f43f 100644 --- a/src/bucket3d.h +++ b/src/bucket3d.h @@ -43,10 +43,10 @@ typedef enum _render_type //function prototypes /* add an object to the current render list */ -extern void bucketAddTypeToList(RENDER_TYPE objectType, void *object); +void bucketAddTypeToList(RENDER_TYPE objectType, void *object); /* render Objects in list */ -extern void bucketRenderCurrentList(void); +void bucketRenderCurrentList(void); #ifdef __cplusplus } diff --git a/src/challenge.c b/src/challenge.c index 833329130..b2ef0424b 100644 --- a/src/challenge.c +++ b/src/challenge.c @@ -48,7 +48,7 @@ #define totalslots 36 // challenge slots #define slotsInColumn 12 // # of slots in a column -#define totalslotspace 64 // guessing 64 max chars for filename. +#define totalslotspace 256 // max chars for slot strings. #define CHALLENGE_X D_W + 16 #define CHALLENGE_Y D_H + 5 @@ -237,9 +237,9 @@ bool addChallenges() for (i = files; *i != NULL; ++i) { W_BUTTON *button; - char description[128]; - char highscore[64]; - const char *name, *difficulty, *map; + char description[totalslotspace]; + char highscore[totalslotspace]; + const char *name, *difficulty, *map, *givendescription; dictionary *dict; // See if this filename contains the extension we're looking for @@ -284,7 +284,8 @@ bool addChallenges() name = iniparser_getstring(dict, "challenge:Name", "BAD NAME"); map = iniparser_getstring(dict, "challenge:Map", "BAD MAP"); difficulty = iniparser_getstring(dict, "challenge:difficulty", "BAD DIFFICULTY"); - ssprintf(description, "%s - %s - %s", map, difficulty, highscore); + givendescription = iniparser_getstring(dict, "challenge:description", ""); + ssprintf(description, "%s, %s, %s. %s", map, difficulty, highscore, givendescription); button = (W_BUTTON*)widgGetFromID(psRequestScreen, CHALLENGE_ENTRY_START + slotCount); diff --git a/src/cheat.c b/src/cheat.c index 25b164ad8..fe6fb72a2 100644 --- a/src/cheat.c +++ b/src/cheat.c @@ -70,10 +70,12 @@ static CHEAT_ENTRY cheatCodes[] = {"showfps", kf_ToggleFPS}, //displays your average FPS {"showsamples", kf_ToggleSamples}, //displays the # of Sound samples in Queue & List {"showorders", kf_ToggleOrders}, //displays unit order/action state. + {"showlevelname", kf_ToggleLevelName}, // shows the current level name on screen {"logical", kf_ToggleLogical}, //logical game updates separated from graphics updates. {"pause", kf_TogglePauseMode}, // Pause the game. {"sync me", kf_ForceSync}, {"power info", kf_PowerInfo}, + {"reload me", kf_Reload}, // reload selected weapons immediately }; BOOL attemptCheatCode(const char* cheat_name) @@ -81,6 +83,18 @@ BOOL attemptCheatCode(const char* cheat_name) const CHEAT_ENTRY * curCheat; static const CHEAT_ENTRY * const EndCheat = &cheatCodes[ARRAY_SIZE(cheatCodes)]; + // there is no reason to make people enter "cheat mode" to enter following commands + if (!strcasecmp("showfps", cheat_name)) + { + kf_ToggleFPS(); + return true; + } + else if (!strcasecmp("showlevelname", cheat_name)) + { + kf_ToggleLevelName(); + return true; + } + if (strcmp(cheat_name, "cheat on") == 0 || strcmp(cheat_name, "debug") == 0) { if (!getDebugMappingStatus()) diff --git a/src/clparse.c b/src/clparse.c index 45f29ceee..da1178543 100644 --- a/src/clparse.c +++ b/src/clparse.c @@ -321,14 +321,14 @@ bool ParseCommandLineEarly(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Usage: --debug "); + debug(LOG_FATAL, "Usage: --debug="); return false; } // Attempt to enable the given debug section if (!debug_enable_switch(token)) { - debug(LOG_ERROR, "Debug flag \"%s\" not found!", token); + debug(LOG_FATAL, "Debug flag \"%s\" not found!", token); return false; } break; @@ -338,10 +338,11 @@ bool ParseCommandLineEarly(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Missing debugfile filename?"); + debug(LOG_FATAL, "Missing debugfile filename?"); return false; } debug_register_callback( debug_callback_file, debug_callback_file_init, debug_callback_file_exit, (void*)token ); + customDebugfile = true; break; case CLI_FLUSHDEBUGSTDERR: @@ -354,7 +355,7 @@ bool ParseCommandLineEarly(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Unrecognised configuration directory"); + debug(LOG_FATAL, "Unrecognised configuration directory"); return false; } sstrcpy(configdir, token); @@ -418,7 +419,7 @@ bool ParseCommandLine(int argc, const char** argv) break; case CLI_CHEAT: - printf(" ** DEBUG MODE UNLOCKED! **\n"); + //printf(" ** DEBUG MODE UNLOCKED! **\n"); bAllowDebugMode = true; break; @@ -427,7 +428,7 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Unrecognised datadir"); + debug(LOG_FATAL, "Unrecognised datadir"); return false; } sstrcpy(datadir, token); @@ -441,7 +442,7 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "No IP/hostname given"); + debug(LOG_FATAL, "No IP/hostname given"); return false; } sstrcpy(iptoconnect, token); @@ -455,14 +456,14 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "No game name"); + debug(LOG_FATAL, "No game name"); return false; } if (strcmp(token, "CAM_1A") && strcmp(token, "CAM_2A") && strcmp(token, "CAM_3A") && strcmp(token, "TUTORIAL3") && strcmp(token, "FASTPLAY")) { - debug(LOG_ERROR, "The game parameter requires one of the following keywords:"); - debug(LOG_ERROR, "CAM_1A, CAM_2A, CAM_3A, TUTORIAL3, or FASTPLAY"); + debug(LOG_FATAL, "The game parameter requires one of the following keywords:"); + debug(LOG_FATAL, "CAM_1A, CAM_2A, CAM_3A, TUTORIAL3, or FASTPLAY"); return false; } NetPlay.bComms = false; @@ -477,7 +478,6 @@ bool ParseCommandLine(int argc, const char** argv) { game.type = SKIRMISH; // tutorial is skirmish for some reason } - game.type = CAMPAIGN; sstrcpy(aLevelName, token); SetGameMode(GS_NORMAL); break; @@ -489,7 +489,7 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Missing mod name?"); + debug(LOG_FATAL, "Missing mod name?"); return false; } @@ -497,7 +497,7 @@ bool ParseCommandLine(int argc, const char** argv) for (i = 0; i < 100 && global_mods[i] != NULL; ++i); if (i >= 100 || global_mods[i] != NULL) { - debug(LOG_ERROR, "Too many mods registered! Aborting!"); + debug(LOG_FATAL, "Too many mods registered! Aborting!"); return false; } global_mods[i] = strdup(token); @@ -511,7 +511,7 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Missing mod name?"); + debug(LOG_FATAL, "Missing mod name?"); return false; } @@ -519,7 +519,7 @@ bool ParseCommandLine(int argc, const char** argv) for (i = 0; i < 100 && campaign_mods[i] != NULL; ++i); if (i >= 100 || campaign_mods[i] != NULL) { - debug(LOG_ERROR, "Too many mods registered! Aborting!"); + debug(LOG_FATAL, "Too many mods registered! Aborting!"); return false; } campaign_mods[i] = strdup(token); @@ -533,14 +533,14 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Missing mod name?"); + debug(LOG_FATAL, "Missing mod name?"); return false; } for (i = 0; i < 100 && multiplay_mods[i] != NULL; ++i); if (i >= 100 || multiplay_mods[i] != NULL) { - debug(LOG_ERROR, "Too many mods registered! Aborting!"); + debug(LOG_FATAL, "Too many mods registered! Aborting!"); return false; } multiplay_mods[i] = strdup(token); @@ -553,15 +553,15 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (sscanf(token, "%ix%i", &width, &height ) != 2 ) { - debug(LOG_ERROR, "Invalid parameter specified (format is WIDTHxHEIGHT, e.g. 800x600)"); + debug(LOG_FATAL, "Invalid parameter specified (format is WIDTHxHEIGHT, e.g. 800x600)"); return false; } if (width < 640) { - debug(LOG_ERROR, "Screen width < 640 unsupported, using 640"); + debug(LOG_POPUP, "Screen width < 640 unsupported, using 640"); width = 640; } if (height < 480) { - debug(LOG_ERROR, "Screen height < 480 unsupported, using 480"); + debug(LOG_POPUP, "Screen height < 480 unsupported, using 480"); height = 480; } // tell the display system of the desired resolution @@ -577,7 +577,7 @@ bool ParseCommandLine(int argc, const char** argv) token = poptGetOptArg(poptCon); if (token == NULL) { - debug(LOG_ERROR, "Unrecognised savegame name"); + debug(LOG_POPUP, "Unrecognised savegame name"); return false; } snprintf(saveGameName, sizeof(saveGameName), "%s/%s", SaveGamePath, token); diff --git a/src/combat.c b/src/combat.c index f308899f9..0b5e61402 100644 --- a/src/combat.c +++ b/src/combat.c @@ -25,42 +25,20 @@ */ #include "lib/framework/frame.h" -#include "lib/framework/math_ext.h" #include "lib/netplay/netplay.h" -#include "objects.h" -#include "combat.h" -#include "stats.h" -#include "visibility.h" -#include "lib/gamelib/gtime.h" -#include "map.h" -#include "move.h" -#include "cluster.h" -#include "messagedef.h" -#include "miscimd.h" -#include "projectile.h" -#include "lib/sound/audio.h" -#include "geometry.h" -#include "cmddroid.h" -#include "mapgrid.h" -#include "order.h" -#include "ai.h" #include "action.h" +#include "cluster.h" +#include "combat.h" #include "difficulty.h" +#include "geometry.h" +#include "mapgrid.h" +#include "projectile.h" #include "random.h" -/* minimum miss distance */ -#define MIN_MISSDIST (TILE_UNITS/6) - -/* The number of tiles of clear space needed for indirect fire */ -#define INDIRECT_LOSDIST 2 - // maximum random pause for firing #define RANDOM_PAUSE 500 -// visibility level below which the to hit chances are reduced -#define VIS_ATTACK_MOD_LEVEL 150 - /* direction array for missed bullets */ typedef struct _bul_dir { @@ -79,21 +57,6 @@ static BUL_DIR aScatterDir[BUL_MAXSCATTERDIR] = { -1,-1 }, }; -/* Initialise the combat system */ -BOOL combInitialise(void) -{ - return true; -} - - -/* Shutdown the combat system */ -BOOL combShutdown(void) -{ - return true; -} - -unsigned int objGuessFutureDamage(WEAPON_STATS *psStats, unsigned int player, BASE_OBJECT *psTarget, HIT_SIDE impactSide); - // Watermelon:real projectile /* Fire a weapon at something */ void combFire(WEAPON *psWeap, BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget, int weapon_slot) diff --git a/src/combat.h b/src/combat.h index ab4b35fcf..46651cb8e 100644 --- a/src/combat.h +++ b/src/combat.h @@ -24,9 +24,6 @@ #ifndef __INCLUDED_SRC_COMBAT_H__ #define __INCLUDED_SRC_COMBAT_H__ -#include "lib/framework/frame.h" -#include "objects.h" - #ifdef __cplusplus extern "C" { @@ -49,23 +46,16 @@ extern "C" #define ORIGIN_AIRDEF_SENSOR 7 ///< Came from Air Defense sensor #define ORIGIN_RADAR_DETECTOR 8 ///< Came from Radar Detector sensor -/* Initialise the combat system */ -extern BOOL combInitialise(void); - -/* Shutdown the combat system */ -extern BOOL combShutdown(void); - /* Fire a weapon at something added int weapon_slot*/ -extern void combFire(WEAPON *psWeap, BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget, int weapon_slot); +void combFire(WEAPON *psWeap, BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget, int weapon_slot); /*checks through the target players list of structures and droids to see if any support a counter battery sensor*/ -extern void counterBatteryFire(BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget); +void counterBatteryFire(BASE_OBJECT *psAttacker, BASE_OBJECT *psTarget); -extern float objDamage(BASE_OBJECT *psObj, UDWORD damage, UDWORD originalhp, UDWORD weaponClass, - UDWORD weaponSubClass, HIT_SIDE impactSide); +float objDamage(BASE_OBJECT *psObj, UDWORD damage, UDWORD originalhp, UDWORD weaponClass, UDWORD weaponSubClass, HIT_SIDE impactSide); -extern unsigned int objGuessFutureDamage(WEAPON_STATS *psStats, unsigned int player, BASE_OBJECT *psTarget, HIT_SIDE impactSide); +unsigned int objGuessFutureDamage(WEAPON_STATS *psStats, unsigned int player, BASE_OBJECT *psTarget, HIT_SIDE impactSide); #ifdef __cplusplus } diff --git a/src/component.c b/src/component.c index 792e8f7b7..0b4fb10fb 100644 --- a/src/component.c +++ b/src/component.c @@ -21,44 +21,27 @@ * @file component.c * Draws component objects - oh yes indeed. */ -#include #include "lib/framework/frame.h" -#include "lib/netplay/netplay.h" -#include "basedef.h" -#include "droid.h" -#include "action.h" -#include "order.h" -#include "component.h" -#include "lib/ivis_common/ivisdef.h" //ivis matrix code +#include "lib/ivis_common/piestate.h" #include "lib/ivis_opengl/piematrix.h" -#include "lib/ivis_common/piedef.h" //ivis matrix code -#include "lib/framework/fixedpoint.h" -#include "lib/ivis_common/piestate.h" //ivis render code -#include "lib/ivis_common/piepalette.h" -#include "lighting.h" +#include "lib/netplay/netplay.h" + +#include "action.h" +#include "component.h" +#include "display3d.h" +#include "e3demo.h" +#include "effects.h" +#include "intdisplay.h" #include "loop.h" +#include "map.h" +#include "miscimd.h" +#include "order.h" +#include "projectile.h" +#include "transporter.h" #define GetRadius(x) ((x)->sradius) -#include "stats.h" -#include "lib/ivis_common/piemode.h" -#include "objects.h" -#include "display.h" -#include "geometry.h" -#include "display3d.h" -#include "map.h" -#include "lib/gamelib/gtime.h" -#include "intdisplay.h" -#include "miscimd.h" -#include "effects.h" -#include "e3demo.h" -#include "transporter.h" -#include "projectile.h" - -static void unsetMatrix(void); -static void setMatrix(Vector3i *Position, Vector3i *Rotation, BOOL RotXYZ); - #define BLIP_ANIM_DURATION 200 #define DEFAULT_COMPONENT_TRANSLUCENCY 128 #define DROID_EMP_SPREAD (20 - rand()%40) @@ -66,15 +49,7 @@ static void setMatrix(Vector3i *Position, Vector3i *Rotation, BOOL RotXYZ); //VTOL weapon connector start #define VTOL_CONNECTOR_START 5 -static void displayCompObj(DROID* psDroid, BOOL bButton); -static iIMDShape *getLeftPropulsionIMD(DROID *psDroid); -static iIMDShape *getRightPropulsionIMD(DROID *psDroid); -static UDWORD getStructureHeight(STRUCTURE *psStructure); - static BOOL leftFirst; -extern UDWORD selectedPlayer; - -UBYTE PlayerColour[MAX_PLAYERS] = {0,1,2,3,4,5,6,7}; // Colour Lookups // use col = MAX_PLAYERS for anycolour (see multiint.c) @@ -198,7 +173,7 @@ UDWORD getStructureStatSize(STRUCTURE_STATS *Stats) return (size); } -UDWORD getStructureHeight(STRUCTURE *psStructure) +static UDWORD getStructureHeight(STRUCTURE *psStructure) { return (getStructureStatHeight(psStructure->pStructureType)); } @@ -506,171 +481,40 @@ void displayResearchButton(BASE_STATS *Stat, Vector3i *Rotation, Vector3i *Posit -// Render a composite droid given a DROID_TEMPLATE structure. -// -void displayComponentButtonTemplate(DROID_TEMPLATE *psTemplate, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale) +static iIMDShape *getLeftPropulsionIMD(DROID *psDroid) { - static DROID Droid; // Made static to reduce stack usage. - SDWORD difference; + UDWORD bodyStat, propStat; + iIMDShape **imd; - /* init to NULL */ - memset( &Droid, 0, sizeof(DROID) ); + bodyStat = psDroid->asBits[COMP_BODY].nStat; + propStat = psDroid->asBits[COMP_PROPULSION].nStat; - setMatrix(Position, Rotation, RotXYZ); - pie_MatScale(scale); + imd = asBodyStats[bodyStat].ppIMDList; + imd += (propStat * NUM_PROP_SIDES + LEFT_PROP); -// Decide how to sort it. - - difference = Rotation->y%360; - - if((difference>0 && difference <180) || difference<-180) - { - leftFirst = false; - } - else - { - leftFirst = true; - } - - droidSetBits(psTemplate,&Droid); - Droid.player = (UBYTE)selectedPlayer; - - Droid.pos.x = Droid.pos.y = Droid.pos.z = 0; - - //draw multi component object as a button object - displayCompObj(&Droid, true); - - - unsetMatrix(); + return *imd; } -// Render a composite droid given a DROID structure. -// -void displayComponentButtonObject(DROID *psDroid, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale) +static iIMDShape *getRightPropulsionIMD(DROID *psDroid) { - SDWORD difference; + UDWORD bodyStat, propStat; + iIMDShape **imd; - setMatrix(Position, Rotation, RotXYZ); - pie_MatScale(scale); + bodyStat = psDroid->asBits[COMP_BODY].nStat; + propStat = psDroid->asBits[COMP_PROPULSION].nStat; -// Decide how to sort it. - difference = Rotation->y%360; + imd = asBodyStats[bodyStat].ppIMDList; + imd += (propStat * NUM_PROP_SIDES + RIGHT_PROP); - leftFirst = !((difference > 0 && difference < 180) || difference < -180); - -// And render the composite object. - //draw multi component object as a button object - displayCompObj(psDroid, true); - - unsetMatrix(); -} - - - -/* Assumes matrix context is already set */ -// multiple turrets display removed the pointless mountRotation -void displayComponentObject(DROID *psDroid) -{ - Vector3i position, rotation; - int32_t xShift,zShift; - UDWORD worldAngle; - SDWORD difference; - SDWORD frame; - PROPULSION_STATS *psPropStats; - UDWORD tileX,tileY; - MAPTILE *psTile; - SPACETIME st = interpolateObjectSpacetime((SIMPLE_OBJECT *)psDroid, graphicsTime); - - psPropStats = asPropulsionStats + psDroid->asBits[COMP_PROPULSION].nStat; - worldAngle = (UDWORD)(player.r.y / DEG_1) % 360; - difference = worldAngle - UNDEG(st.rot.direction); - - leftFirst = !((difference> 0 && difference < 180) || difference < -180); - - /* Push the matrix */ - pie_MatBegin(); - - /* Get internal tile units coordinates */ - xShift = map_round(player.p.x); - zShift = map_round(player.p.z); - - /* Mask out to tile_units resolution */ - pie_TRANSLATE(xShift,0,-zShift); - - /* Get the real position */ - position.x = (st.pos.x - player.p.x) - terrainMidX*TILE_UNITS; - position.z = terrainMidY*TILE_UNITS - (st.pos.y - player.p.z); - position.y = st.pos.z; - - if(psDroid->droidType == DROID_TRANSPORTER) - { - position.y += bobTransporterHeight(); - } - - /* Get all the pitch,roll,yaw info */ - rotation.y = -st.rot.direction; - rotation.x = st.rot.pitch; - rotation.z = st.rot.roll; - - /* Translate origin */ - pie_TRANSLATE(position.x,position.y,position.z); - - /* Rotate for droid */ - pie_MatRotY(rotation.y); - pie_MatRotX(rotation.x); - pie_MatRotZ(rotation.z); - - if( (gameTime-psDroid->timeLastHit < GAME_TICKS_PER_SEC) && psDroid->lastHitWeapon == WSC_ELECTRONIC) - { - objectShimmy( (BASE_OBJECT*) psDroid ); - } - - if (psDroid->lastHitWeapon == WSC_EMP && - (gameTime - psDroid->timeLastHit < EMP_DISABLE_TIME)) - { - Vector3i position; - - //add an effect on the droid - position.x = st.pos.x + DROID_EMP_SPREAD; - position.y = st.pos.z + rand()%8; - position.z = st.pos.y + DROID_EMP_SPREAD; - effectGiveAuxVar(90+rand()%20); - addEffect(&position,EFFECT_EXPLOSION,EXPLOSION_TYPE_PLASMA,false,NULL,0); - } - - if ((psDroid->visible[selectedPlayer] == UBYTE_MAX) || demoGetStatus()) - { - //ingame not button object - //should render 3 mounted weapons now - displayCompObj(psDroid, false); - } - else - { - - // make sure it's not over water. - tileX = st.pos.x/TILE_UNITS; - tileY = st.pos.y/TILE_UNITS; - // double check it's on map - if ( tileX < mapWidth && tileY < mapHeight ) - { - psTile = mapTile(tileX,tileY); - if (terrainType(psTile) != TER_WATER) - { - frame = gameTime/BLIP_ANIM_DURATION + psDroid->id; //visible[selectedPlayer]; - pie_Draw3DShape(getImdFromIndex(MI_BLIP), frame, 0, WZCOL_WHITE, WZCOL_BLACK, pie_ADDITIVE, psDroid->visible[selectedPlayer] / 2); - /* set up all the screen coords stuff - need to REMOVE FROM THIS LOOP */ - } - } - } - pie_MatEnd(); + return *imd; } /* Assumes matrix context is already set */ // this is able to handle multiple weapon graphics now // removed mountRotation,they get such stuff from psObj directly now -void displayCompObj(DROID *psDroid, BOOL bButton) +static void displayCompObj(DROID *psDroid, BOOL bButton) { iIMDShape *psShape, *psJet, *psShapeTemp = NULL, *psMountShape; Vector3i zero = {0, 0, 0}; @@ -1123,6 +967,167 @@ void displayCompObj(DROID *psDroid, BOOL bButton) } +// Render a composite droid given a DROID_TEMPLATE structure. +// +void displayComponentButtonTemplate(DROID_TEMPLATE *psTemplate, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale) +{ + static DROID Droid; // Made static to reduce stack usage. + SDWORD difference; + + /* init to NULL */ + memset( &Droid, 0, sizeof(DROID) ); + + setMatrix(Position, Rotation, RotXYZ); + pie_MatScale(scale); + +// Decide how to sort it. + + difference = Rotation->y%360; + + if((difference>0 && difference <180) || difference<-180) + { + leftFirst = false; + } + else + { + leftFirst = true; + } + + droidSetBits(psTemplate,&Droid); + Droid.player = (UBYTE)selectedPlayer; + + Droid.pos.x = Droid.pos.y = Droid.pos.z = 0; + + //draw multi component object as a button object + displayCompObj(&Droid, true); + + + unsetMatrix(); +} + + +// Render a composite droid given a DROID structure. +// +void displayComponentButtonObject(DROID *psDroid, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale) +{ + SDWORD difference; + + setMatrix(Position, Rotation, RotXYZ); + pie_MatScale(scale); + +// Decide how to sort it. + difference = Rotation->y%360; + + leftFirst = !((difference > 0 && difference < 180) || difference < -180); + +// And render the composite object. + //draw multi component object as a button object + displayCompObj(psDroid, true); + + unsetMatrix(); +} + + + +/* Assumes matrix context is already set */ +// multiple turrets display removed the pointless mountRotation +void displayComponentObject(DROID *psDroid) +{ + Vector3i position, rotation; + int32_t xShift,zShift; + UDWORD worldAngle; + SDWORD difference; + SDWORD frame; + PROPULSION_STATS *psPropStats; + UDWORD tileX,tileY; + MAPTILE *psTile; + SPACETIME st = interpolateObjectSpacetime((SIMPLE_OBJECT *)psDroid, graphicsTime); + + psPropStats = asPropulsionStats + psDroid->asBits[COMP_PROPULSION].nStat; + worldAngle = (UDWORD)(player.r.y / DEG_1) % 360; + difference = worldAngle - UNDEG(st.rot.direction); + + leftFirst = !((difference> 0 && difference < 180) || difference < -180); + + /* Push the matrix */ + pie_MatBegin(); + + /* Get internal tile units coordinates */ + xShift = map_round(player.p.x); + zShift = map_round(player.p.z); + + /* Mask out to tile_units resolution */ + pie_TRANSLATE(xShift,0,-zShift); + + /* Get the real position */ + position.x = (st.pos.x - player.p.x) - terrainMidX*TILE_UNITS; + position.z = terrainMidY*TILE_UNITS - (st.pos.y - player.p.z); + position.y = st.pos.z; + + if(psDroid->droidType == DROID_TRANSPORTER) + { + position.y += bobTransporterHeight(); + } + + /* Get all the pitch,roll,yaw info */ + rotation.y = -st.rot.direction; + rotation.x = st.rot.pitch; + rotation.z = st.rot.roll; + + /* Translate origin */ + pie_TRANSLATE(position.x,position.y,position.z); + + /* Rotate for droid */ + pie_MatRotY(rotation.y); + pie_MatRotX(rotation.x); + pie_MatRotZ(rotation.z); + + if( (gameTime-psDroid->timeLastHit < GAME_TICKS_PER_SEC) && psDroid->lastHitWeapon == WSC_ELECTRONIC) + { + objectShimmy( (BASE_OBJECT*) psDroid ); + } + + if (psDroid->lastHitWeapon == WSC_EMP && + (gameTime - psDroid->timeLastHit < EMP_DISABLE_TIME)) + { + Vector3i position; + + //add an effect on the droid + position.x = st.pos.x + DROID_EMP_SPREAD; + position.y = st.pos.z + rand()%8; + position.z = st.pos.y + DROID_EMP_SPREAD; + effectGiveAuxVar(90+rand()%20); + addEffect(&position,EFFECT_EXPLOSION,EXPLOSION_TYPE_PLASMA,false,NULL,0); + } + + if ((psDroid->visible[selectedPlayer] == UBYTE_MAX) || demoGetStatus()) + { + //ingame not button object + //should render 3 mounted weapons now + displayCompObj(psDroid, false); + } + else + { + + // make sure it's not over water. + tileX = st.pos.x/TILE_UNITS; + tileY = st.pos.y/TILE_UNITS; + // double check it's on map + if ( tileX < mapWidth && tileY < mapHeight ) + { + psTile = mapTile(tileX,tileY); + if (terrainType(psTile) != TER_WATER) + { + frame = gameTime/BLIP_ANIM_DURATION + psDroid->id; //visible[selectedPlayer]; + pie_Draw3DShape(getImdFromIndex(MI_BLIP), frame, 0, WZCOL_WHITE, WZCOL_BLACK, pie_ADDITIVE, psDroid->visible[selectedPlayer] / 2); + /* set up all the screen coords stuff - need to REMOVE FROM THIS LOOP */ + } + } + } + pie_MatEnd(); +} + + void destroyFXDroid(DROID *psDroid) { UDWORD i; @@ -1256,36 +1261,6 @@ void compPersonToBits(DROID *psDroid) } -iIMDShape *getLeftPropulsionIMD(DROID *psDroid) -{ - UDWORD bodyStat, propStat; - iIMDShape **imd; - - bodyStat = psDroid->asBits[COMP_BODY].nStat; - propStat = psDroid->asBits[COMP_PROPULSION].nStat; - - imd = asBodyStats[bodyStat].ppIMDList; - imd += (propStat * NUM_PROP_SIDES + LEFT_PROP); - - return *imd; -} - - -iIMDShape *getRightPropulsionIMD(DROID *psDroid) -{ - UDWORD bodyStat, propStat; - iIMDShape **imd; - - bodyStat = psDroid->asBits[COMP_BODY].nStat; - propStat = psDroid->asBits[COMP_PROPULSION].nStat; - - imd = asBodyStats[bodyStat].ppIMDList; - imd += (propStat * NUM_PROP_SIDES + RIGHT_PROP); - - return *imd; -} - - SDWORD rescaleButtonObject(SDWORD radius, SDWORD baseScale,SDWORD baseRadius) { SDWORD newScale; diff --git a/src/component.h b/src/component.h index ff3887eae..4bf7ac44b 100644 --- a/src/component.h +++ b/src/component.h @@ -34,17 +34,15 @@ extern "C" Pumpkin Studios, EIDOS Interactive. */ -extern UBYTE PlayerColour[MAX_PLAYERS]; -extern void initPlayerColours(void); -extern BOOL setPlayerColour(UDWORD player, UDWORD col); -extern UBYTE getPlayerColour(UDWORD pl); +BOOL setPlayerColour(UDWORD player, UDWORD col); +UBYTE getPlayerColour(UDWORD pl); -extern UDWORD getComponentDroidRadius(DROID *psDroid); -extern UDWORD getComponentDroidTemplateRadius(DROID_TEMPLATE *psDroid); -extern UDWORD getComponentRadius(BASE_STATS *psComponent); -extern UDWORD getResearchRadius(BASE_STATS *Stat); -extern UDWORD getStructureSize(STRUCTURE *psStructure); -extern UDWORD getStructureStatSize(STRUCTURE_STATS *Stats); +UDWORD getComponentDroidRadius(DROID *psDroid); +UDWORD getComponentDroidTemplateRadius(DROID_TEMPLATE *psDroid); +UDWORD getComponentRadius(BASE_STATS *psComponent); +UDWORD getResearchRadius(BASE_STATS *Stat); +UDWORD getStructureSize(STRUCTURE *psStructure); +UDWORD getStructureStatSize(STRUCTURE_STATS *Stats); #define OBJECT_RADIUS (128) #define COMPONENT_RADIUS (64) @@ -58,26 +56,28 @@ extern UDWORD getStructureStatSize(STRUCTURE_STATS *Stats); #define LARGE_STRUCT_SCALE (25) #define TOWER_HEIGHT 100 -extern UDWORD getStructureStatHeight(STRUCTURE_STATS *psStat); +UDWORD getStructureStatHeight(STRUCTURE_STATS *psStat); -extern void displayIMDButton(iIMDShape *IMDShape, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayStructureButton(STRUCTURE *psStructure, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayStructureStatButton(STRUCTURE_STATS *Stats, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayComponentButton(BASE_STATS *Stat, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayResearchButton(BASE_STATS *Stat, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayComponentButtonTemplate(DROID_TEMPLATE *psTemplate, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayComponentButtonObject(DROID *psDroid, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); -extern void displayComponentObject(DROID *psDroid); +void displayIMDButton(iIMDShape *IMDShape, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayStructureButton(STRUCTURE *psStructure, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayStructureStatButton(STRUCTURE_STATS *Stats, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayComponentButton(BASE_STATS *Stat, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayResearchButton(BASE_STATS *Stat, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayComponentButtonTemplate(DROID_TEMPLATE *psTemplate, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayComponentButtonObject(DROID *psDroid, Vector3i *Rotation, Vector3i *Position, BOOL RotXYZ, SDWORD scale); +void displayComponentObject(DROID *psDroid); -extern void compPersonToBits(DROID *psDroid); +void compPersonToBits(DROID *psDroid); -/* Pass in the stats you're interested in and the COMPONENT - double reference, but works */ +SDWORD rescaleButtonObject(SDWORD radius, SDWORD baseScale,SDWORD baseRadius); +void destroyFXDroid(DROID *psDroid); + +/* Pass in the stats you're interested in and the COMPONENT - double reference, but works. NOTE: Unused!*/ #define PART_IMD(STATS,DROID,COMPONENT,PLAYER) (STATS[DROID->asBits[COMPONENT].nStat].pIMD) - /* Get the chassis imd */ #define BODY_IMD(DROID,PLAYER) (asBodyStats[DROID->asBits[COMP_BODY].nStat].pIMD) -/* Get the brain imd */ +/* Get the brain imd - NOTE: Unused!*/ #define BRAIN_IMD(DROID,PLAYER) (asBrainStats[DROID->asBits[COMP_BRAIN].nStat].pIMD) /* Get the weapon imd */ #define WEAPON_IMD(DROID,WEAPON_NUM) (asWeaponStats[DROID->asWeaps[WEAPON_NUM].nStat].pIMD) @@ -104,11 +104,6 @@ extern void compPersonToBits(DROID *psDroid); /* Get a muzzle flash pie*/ #define MUZZLE_FLASH_PIE(DROID,WEAPON_NUM) (asWeaponStats[DROID->asWeaps[WEAPON_NUM].nStat].pMuzzleGraphic) -/* Don't know what these might be? */ -extern SDWORD rescaleButtonObject(SDWORD radius, SDWORD baseScale,SDWORD baseRadius); - -extern void destroyFXDroid(DROID *psDroid); - #ifdef __cplusplus } #endif //__cplusplus diff --git a/src/configuration.c b/src/configuration.c index 1df397c65..e111497e5 100644 --- a/src/configuration.c +++ b/src/configuration.c @@ -27,6 +27,7 @@ #include "lib/framework/configfile.h" #include "lib/netplay/netplay.h" #include "lib/sound/mixer.h" +#include "lib/ivis_opengl/screen.h" #include "advvis.h" #include "ai.h" @@ -93,13 +94,6 @@ BOOL loadConfig(void) // options screens. // ////////////////////////// - // ////////////////////////// - // subtitles - if(getWarzoneKeyNumeric("allowsubtitles", &val)) - { - war_SetAllowSubtitles(val); - } - // ////////////////////////// // voice vol if(getWarzoneKeyNumeric("voicevol", &val)) @@ -689,8 +683,8 @@ BOOL loadRenderMode(void) { // If we have an invalid or incomplete resolution specified // fall back to the defaults. - war_SetWidth(640); - war_SetHeight(480); + war_SetWidth(0); + war_SetHeight(0); } if (getWarzoneKeyNumeric("bpp", &val)) @@ -730,7 +724,6 @@ BOOL saveConfig(void) { setDifficultyLevel(DL_NORMAL); } - setWarzoneKeyNumeric("allowSubtitles", war_GetAllowSubtitles()); setWarzoneKeyNumeric("debugmode", bAllowDebugMode); setWarzoneKeyNumeric("framerate", (SDWORD)getFramerateLimit()); setWarzoneKeyNumeric("showFPS", (SDWORD)showFPS); diff --git a/src/console.c b/src/console.c index 767d3e515..e3fdf532e 100644 --- a/src/console.c +++ b/src/console.c @@ -22,26 +22,47 @@ Functions for the in-game console. */ -#include - #include "lib/framework/frame.h" #include "lib/framework/input.h" #include "lib/gamelib/gtime.h" -#include "ai.h" -#include "basedef.h" -#include "lib/ivis_common/piedef.h" #include "lib/ivis_common/piestate.h" #include "lib/ivis_common/rendmode.h" -#include "intimage.h" -#include "console.h" -#include "scriptextern.h" -#include "lib/sound/audio_id.h" #include "lib/sound/audio.h" -#include "radar.h" +#include "lib/sound/audio_id.h" + +#include "ai.h" +#include "console.h" #include "main.h" +#include "radar.h" /* Alex McLean, Pumpkin Studios, EIDOS Interactive */ +#define DEFAULT_MESSAGE_DURATION GAME_TICKS_PER_SEC * 8 + +#define CON_BORDER_WIDTH 4 +#define CON_BORDER_HEIGHT 4 + +typedef struct _console +{ + UDWORD topX; + UDWORD topY; + UDWORD width; + UDWORD textDepth; + BOOL permanent; +} CONSOLE; + +/* Definition of a message */ +typedef struct _console_message +{ + char text[MAX_CONSOLE_STRING_LENGTH]; // Text of the message + UDWORD timeAdded; // When was it added to our list? + //UDWORD screenIndex; // Info for justification + UDWORD JustifyType; + UDWORD id; + SDWORD player; // Player who sent this message or SYSTEM_MESSAGE + struct _console_message *psNext; +} CONSOLE_MESSAGE; + /** Is the console history on or off? */ static BOOL bConsoleDropped = false; @@ -104,27 +125,13 @@ static UDWORD messageId; // unique ID char ConsoleString[MAX_CONSOLE_TMP_STRING_LENGTH]; -/* MODULE CONSOLE PROTOTYPES */ -void consolePrintf ( char *layout, ... ); -void setConsoleSizePos ( UDWORD x, UDWORD y, UDWORD width ); -BOOL addConsoleMessage ( const char *messageText, CONSOLE_TEXT_JUSTIFICATION jusType, SDWORD player ); -void updateConsoleMessages ( void ); -void displayConsoleMessages ( void ); -void initConsoleMessages ( void ); -void setConsoleMessageDuration ( UDWORD time ); -void removeTopConsoleMessage ( void ); -void flushConsoleMessages ( void ); -void setConsoleBackdropStatus ( BOOL state ); -void enableConsoleDisplay ( BOOL state ); -BOOL getConsoleDisplayStatus ( void ); -void setDefaultConsoleJust ( CONSOLE_TEXT_JUSTIFICATION defJ ); -void setConsolePermanence ( BOOL state, BOOL bClearOld ); -BOOL mouseOverConsoleBox ( void ); -void setConsoleLineInfo ( UDWORD vis ); -UDWORD getConsoleLineInfo ( void ); -void permitNewConsoleMessages ( BOOL allow); -int displayOldMessages ( void ); -void setConsoleTextColor ( SDWORD player ); +/** + Specify how long messages will stay on screen. +*/ +static void setConsoleMessageDuration(UDWORD time) +{ + messageDuration = time; +} /** Sets the system up */ void initConsoleMessages( void ) @@ -205,7 +212,7 @@ void toggleConsoleDrop( void ) } /** Add a string to the console. */ -static BOOL _addConsoleMessage(const char *messageText, CONSOLE_TEXT_JUSTIFICATION jusType, +BOOL addConsoleMessage(const char *messageText, CONSOLE_TEXT_JUSTIFICATION jusType, SDWORD player) { int textLength; @@ -304,12 +311,6 @@ static BOOL _addConsoleMessage(const char *messageText, CONSOLE_TEXT_JUSTIFICATI return true; } -/// Wrapper for _addConsoleMessage -BOOL addConsoleMessage(const char *messageText, CONSOLE_TEXT_JUSTIFICATION jusType, - SDWORD player) -{ - return _addConsoleMessage(messageText, jusType, player); -} /// \return The number of console messages currently active UDWORD getNumberConsoleMessages( void ) @@ -379,14 +380,6 @@ void updateConsoleMessages( void ) } } -/** - Specify how long messages will stay on screen. -*/ -void setConsoleMessageDuration(UDWORD time) -{ - messageDuration = time; -} - /** Remove the top message on screen. This and setConsoleMessageDuration should be sufficient to allow @@ -423,7 +416,7 @@ void flushConsoleMessages( void ) } /** Sets console text color depending on message type */ -void setConsoleTextColor(SDWORD player) +static void setConsoleTextColor(SDWORD player) { // System messages if(player == SYSTEM_MESSAGE) @@ -457,99 +450,9 @@ void setConsoleTextColor(SDWORD player) } -/** Displays all the console messages */ -void displayConsoleMessages( void ) -{ - CONSOLE_MESSAGE *psMessage; - int linePitch; - int boxDepth; - int drop; - int MesY; - int clipDepth; - unsigned int exceed, numProcessed; - - /* Are there any to display? */ - if(consoleMessages == NULL && !bConsoleDropped) - { - /* No point - so get out */ - return; - } - - /* Return if it's disabled */ - if(!bConsoleDisplayEnabled) - { - return; - } - - /* Get the travel to the next line */ - linePitch = iV_GetTextLineSize(); - - pie_SetDepthBufferStatus(DEPTH_CMP_ALWAYS_WRT_ON); - pie_SetFogStatus(false); - - drop = 0; - if(bConsoleDropped) - { - drop = displayOldMessages(); - } - if(consoleMessages==NULL) - { - return; - } - - /* Do we want a box under it? */ - if(bTextBoxActive) - { - for (psMessage = consoleMessages, exceed = 0; - psMessage && consoleVisibleLines > 0 && exceed < 4; // ho ho ho!!! - psMessage = psMessage->psNext) - { - if (iV_GetTextWidth(psMessage->text) > mainConsole.width) - { - ++exceed; - } - } - - /* How big a box is necessary? */ - boxDepth = (numActiveMessages> consoleVisibleLines ? consoleVisibleLines-1 : numActiveMessages-1); - - /* Add on the extra - hope it doesn't exceed two lines! */ - boxDepth += exceed; - - /* GET RID OF THE MAGIC NUMBERS BELOW */ - clipDepth = (mainConsole.topY+(boxDepth*linePitch)+CON_BORDER_HEIGHT+drop); - if(clipDepth > (pie_GetVideoBufferHeight() - linePitch)) - { - clipDepth = (pie_GetVideoBufferHeight() - linePitch); - } - - iV_TransBoxFill(mainConsole.topX - CON_BORDER_WIDTH,mainConsole.topY-mainConsole.textDepth-CON_BORDER_HEIGHT+drop+1, - mainConsole.topX+mainConsole.width ,clipDepth); - } - - /* Stop when we've drawn enough or we're at the end */ - MesY = mainConsole.topY + drop; - - for (psMessage = consoleMessages, numProcessed = 0; - psMessage && numProcessed < consoleVisibleLines && MesY < (pie_GetVideoBufferHeight() - linePitch); - psMessage = psMessage->psNext) - { - - /* Set text color depending on message type */ - setConsoleTextColor(psMessage->player); - - /* Draw the text string */ - MesY = iV_DrawFormattedText(psMessage->text, mainConsole.topX, MesY, - mainConsole.width, psMessage->JustifyType); - - /* Move on */ - ++numProcessed; - } -} - /** Display up to the last 8 messages. \return The number of messages actually shown */ -int displayOldMessages() +static int displayOldMessages(void) { int i; BOOL bGotIt; @@ -665,6 +568,96 @@ int displayOldMessages() } +/** Displays all the console messages */ +void displayConsoleMessages( void ) +{ + CONSOLE_MESSAGE *psMessage; + int linePitch; + int boxDepth; + int drop; + int MesY; + int clipDepth; + unsigned int exceed, numProcessed; + + /* Are there any to display? */ + if(consoleMessages == NULL && !bConsoleDropped) + { + /* No point - so get out */ + return; + } + + /* Return if it's disabled */ + if(!bConsoleDisplayEnabled) + { + return; + } + + /* Get the travel to the next line */ + linePitch = iV_GetTextLineSize(); + + pie_SetDepthBufferStatus(DEPTH_CMP_ALWAYS_WRT_ON); + pie_SetFogStatus(false); + + drop = 0; + if(bConsoleDropped) + { + drop = displayOldMessages(); + } + if(consoleMessages==NULL) + { + return; + } + + /* Do we want a box under it? */ + if(bTextBoxActive) + { + for (psMessage = consoleMessages, exceed = 0; + psMessage && consoleVisibleLines > 0 && exceed < 4; // ho ho ho!!! + psMessage = psMessage->psNext) + { + if (iV_GetTextWidth(psMessage->text) > mainConsole.width) + { + ++exceed; + } + } + + /* How big a box is necessary? */ + boxDepth = (numActiveMessages> consoleVisibleLines ? consoleVisibleLines-1 : numActiveMessages-1); + + /* Add on the extra - hope it doesn't exceed two lines! */ + boxDepth += exceed; + + /* GET RID OF THE MAGIC NUMBERS BELOW */ + clipDepth = (mainConsole.topY+(boxDepth*linePitch)+CON_BORDER_HEIGHT+drop); + if(clipDepth > (pie_GetVideoBufferHeight() - linePitch)) + { + clipDepth = (pie_GetVideoBufferHeight() - linePitch); + } + + iV_TransBoxFill(mainConsole.topX - CON_BORDER_WIDTH,mainConsole.topY-mainConsole.textDepth-CON_BORDER_HEIGHT+drop+1, + mainConsole.topX+mainConsole.width ,clipDepth); + } + + /* Stop when we've drawn enough or we're at the end */ + MesY = mainConsole.topY + drop; + + for (psMessage = consoleMessages, numProcessed = 0; + psMessage && numProcessed < consoleVisibleLines && MesY < (pie_GetVideoBufferHeight() - linePitch); + psMessage = psMessage->psNext) + { + + /* Set text color depending on message type */ + setConsoleTextColor(psMessage->player); + + /* Draw the text string */ + MesY = iV_DrawFormattedText(psMessage->text, mainConsole.topX, MesY, + mainConsole.width, psMessage->JustifyType); + + /* Move on */ + ++numProcessed; + } +} + /** Allows toggling of the box under the console text */ void setConsoleBackdropStatus(BOOL state) { @@ -764,6 +757,7 @@ UDWORD getConsoleLineInfo(void) } /// Function with printf arguments to print to the console +// NOTE: Unused! void consolePrintf(char *layout, ...) void consolePrintf(char *layout, ...) { char consoleString[MAX_CONSOLE_STRING_LENGTH]; diff --git a/src/console.h b/src/console.h index 78e1a9376..ae0edd654 100644 --- a/src/console.h +++ b/src/console.h @@ -21,8 +21,6 @@ #ifndef __INCLUDED_SRC_CONSOLE_H__ #define __INCLUDED_SRC_CONSOLE_H__ -#include "lib/ivis_common/piedef.h" - #ifdef __cplusplus extern "C" { @@ -32,11 +30,6 @@ extern "C" #define MAX_CONSOLE_STRING_LENGTH (255) #define MAX_CONSOLE_TMP_STRING_LENGTH (255) -#define DEFAULT_MESSAGE_DURATION GAME_TICKS_PER_SEC * 8 - -#define CON_BORDER_WIDTH 4 -#define CON_BORDER_HEIGHT 4 - typedef enum { LEFT_JUSTIFY, @@ -45,53 +38,31 @@ typedef enum DEFAULT_JUSTIFY } CONSOLE_TEXT_JUSTIFICATION; -typedef struct _console -{ - UDWORD topX; - UDWORD topY; - UDWORD width; - UDWORD textDepth; - BOOL permanent; -} CONSOLE; - /* ID to use for addConsoleMessage() in case of a system message */ #define SYSTEM_MESSAGE (-1) #define NOTIFY_MESSAGE (-2) // mainly used for lobby messages -/* Definition of a message */ -typedef struct _console_message -{ - char text[MAX_CONSOLE_STRING_LENGTH]; // Text of the message - UDWORD timeAdded; // When was it added to our list? - //UDWORD screenIndex; // Info for justification - UDWORD JustifyType; - UDWORD id; - SDWORD player; // Player who sent this message or SYSTEM_MESSAGE - struct _console_message *psNext; -} CONSOLE_MESSAGE; - extern char ConsoleString[MAX_CONSOLE_TMP_STRING_LENGTH]; -extern void consolePrintf ( char *layout, ... ); -extern BOOL addConsoleMessage ( const char *messageText, CONSOLE_TEXT_JUSTIFICATION jusType, SDWORD player ); -extern void updateConsoleMessages ( void ); -extern void initConsoleMessages ( void ); -extern void setConsoleMessageDuration ( UDWORD time ); -extern void removeTopConsoleMessage ( void ); -extern void displayConsoleMessages ( void ); -extern void flushConsoleMessages ( void ); -extern void setConsoleBackdropStatus ( BOOL state ); -extern void enableConsoleDisplay ( BOOL state ); -extern BOOL getConsoleDisplayStatus ( void ); -extern void setDefaultConsoleJust ( CONSOLE_TEXT_JUSTIFICATION defJ ); -extern void setConsoleSizePos ( UDWORD x, UDWORD y, UDWORD width ); -extern void setConsolePermanence ( BOOL state, BOOL bClearOld ); -extern BOOL mouseOverConsoleBox ( void ); -extern UDWORD getNumberConsoleMessages( void ); -extern void setConsoleLineInfo ( UDWORD vis ); -extern UDWORD getConsoleLineInfo ( void ); -extern void permitNewConsoleMessages ( BOOL allow); -extern void toggleConsoleDrop( void ); +void consolePrintf(char *layout, ...); +BOOL addConsoleMessage(const char *messageText, CONSOLE_TEXT_JUSTIFICATION jusType, SDWORD player); +void updateConsoleMessages(void); +void initConsoleMessages(void); +void removeTopConsoleMessage(void); +void displayConsoleMessages(void); +void flushConsoleMessages(void); +void setConsoleBackdropStatus(BOOL state); +void enableConsoleDisplay(BOOL state); +BOOL getConsoleDisplayStatus(void); +void setDefaultConsoleJust(CONSOLE_TEXT_JUSTIFICATION defJ); +void setConsoleSizePos(UDWORD x, UDWORD y, UDWORD width); +void setConsolePermanence(BOOL state, BOOL bClearOld); +BOOL mouseOverConsoleBox(void); +UDWORD getNumberConsoleMessages(void); +void setConsoleLineInfo(UDWORD vis); +UDWORD getConsoleLineInfo(void); +void permitNewConsoleMessages(BOOL allow); +void toggleConsoleDrop(void); #if defined(DEBUG) # define debug_console(...) \ diff --git a/src/design.c b/src/design.c index abc258dc4..e1f28aaf8 100644 --- a/src/design.c +++ b/src/design.c @@ -805,7 +805,7 @@ static BOOL _intAddDesign( BOOL bShowCentreScreen ) } /* Set the text colour for the form */ - widgSetColour(psWScreen, IDDES_POWERFORM, WCOL_TEXT, 0, 164, 0); + widgSetColour(psWScreen, IDDES_POWERFORM, WCOL_TEXT, WZCOL_DESIGN_POWER_FORM_BACKGROUND); /* Add the design template power bar and label*/ sLabInit.formID = IDDES_POWERFORM; @@ -1056,12 +1056,8 @@ BOOL intAddTemplateButtons(UDWORD formID, UDWORD formWidth, UDWORD formHeight, sBarInit.width = STAT_PROGBARWIDTH; sBarInit.height = STAT_PROGBARHEIGHT; sBarInit.size = 50; - sBarInit.sCol.byte.r = STAT_PROGBARMAJORRED; - sBarInit.sCol.byte.g = STAT_PROGBARMAJORGREEN; - sBarInit.sCol.byte.b = STAT_PROGBARMAJORBLUE; - sBarInit.sMinorCol.byte.r = STAT_PROGBARMINORRED; - sBarInit.sMinorCol.byte.g = STAT_PROGBARMINORGREEN; - sBarInit.sMinorCol.byte.b = STAT_PROGBARMINORBLUE; + sBarInit.sCol = WZCOL_ACTION_PROGRESS_BAR_MAJOR; + sBarInit.sMinorCol = WZCOL_ACTION_PROGRESS_BAR_MINOR; sBarInit.pTip = _("Power Usage"); droidTemplID = 0; diff --git a/src/display.c b/src/display.c index d0a9c03b8..05b20a3e3 100644 --- a/src/display.c +++ b/src/display.c @@ -31,6 +31,7 @@ #include "lib/ivis_common/piestate.h" #include "lib/framework/fixedpoint.h" +#include "action.h" #include "display.h" #include "map.h" #include "loop.h" @@ -813,7 +814,21 @@ void processMouseClickInput(void) selection = establishSelection(selectedPlayer); ASSERT( selection<=POSSIBLE_SELECTIONS,"Weirdy selection!" ); - if ((selection != SC_INVALID) && !gamePaused()) + if (gamePaused()) + { + pie_SetMouse(CURSOR_DEFAULT, war_GetColouredCursor()); + } + if (buildState == BUILD3D_VALID) + { + // special casing for building + pie_SetMouse(CURSOR_BUILD, war_GetColouredCursor()); + } + else if (buildState == BUILD3D_POS) + { + // special casing for building - can't build here + pie_SetMouse(CURSOR_NOTPOSSIBLE, war_GetColouredCursor()); + } + else if (selection != SC_INVALID) { BASE_OBJECT *ObjUnderMouse; bool ObjAllied; @@ -930,7 +945,7 @@ void processMouseClickInput(void) item = MT_BLOCKING; } } - + //vtols cannot pick up artifacts else if (item == MT_ARTIFACT && selection == SC_DROID_DIRECT @@ -951,25 +966,26 @@ void processMouseClickInput(void) item = MT_OWNDROID; } if ((arnMPointers[item][selection] == CURSOR_SELECT || - arnMPointers[item][selection] == CURSOR_EMBARK || - arnMPointers[item][selection] == CURSOR_ATTACH || - arnMPointers[item][selection] == CURSOR_LOCKON) && ObjAllied) + arnMPointers[item][selection] == CURSOR_EMBARK || + arnMPointers[item][selection] == CURSOR_ATTACH || + arnMPointers[item][selection] == CURSOR_LOCKON || + arnMPointers[item][selection] == CURSOR_DEST) && ObjAllied) { // If you want to do these things, just gift your unit to your ally. item = MT_BLOCKING; } - + if ((keyDown(KEY_LALT) || keyDown(KEY_RALT)) && selection == SC_DROID_TRANSPORTER && arnMPointers[item][selection] == CURSOR_MOVE && bMultiPlayer) { // Alt+move = disembark transporter - pie_SetMouse(CURSOR_EMBARK, war_GetColouredCursor()); + pie_SetMouse(CURSOR_DISEMBARK, war_GetColouredCursor()); } else if ((keyDown(KEY_LALT) || keyDown(KEY_RALT)) && selection == SC_DROID_DIRECT && arnMPointers[item][selection] == CURSOR_MOVE) { // Alt+move = scout - pie_SetMouse(CURSOR_JAM, war_GetColouredCursor()); + pie_SetMouse(CURSOR_SCOUT, war_GetColouredCursor()); } else if (arnMPointers[item][selection] == CURSOR_NOTPOSSIBLE && ObjUnderMouse && (ObjUnderMouse->player == selectedPlayer) && @@ -983,6 +999,10 @@ void processMouseClickInput(void) pie_SetMouse(arnMPointers[item][selection], war_GetColouredCursor()); } } + else + { + pie_SetMouse(CURSOR_DEFAULT, war_GetColouredCursor()); + } } else { @@ -1027,7 +1047,7 @@ void processMouseClickInput(void) } } - CurrentItemUnderMouse= item; + CurrentItemUnderMouse = item; } @@ -1660,7 +1680,7 @@ void AddDerrickBurningMessage(void) audio_PlayTrack( ID_SOUND_BUILD_FAIL ); } -static inline void dealWithLMBDroid(DROID* psDroid, SELECTION_TYPE selection) +static void dealWithLMBDroid(DROID* psDroid, SELECTION_TYPE selection) { bool ownDroid; // Not an allied droid @@ -1863,7 +1883,7 @@ static inline void dealWithLMBDroid(DROID* psDroid, SELECTION_TYPE selection) } -static inline void dealWithLMBStructure(STRUCTURE* psStructure, SELECTION_TYPE selection) +static void dealWithLMBStructure(STRUCTURE* psStructure, SELECTION_TYPE selection) { // clearSelection(); // Clear droid selection. bool ownStruct = (psStructure->player == selectedPlayer); @@ -1964,11 +1984,23 @@ static inline void dealWithLMBStructure(STRUCTURE* psStructure, SELECTION_TYPE s clearSelection(); assignSensorTarget((BASE_OBJECT *)psStructure); } + if (intDemolishSelectMode()) + { + // we were demolishing something - now we're done + if (ctrlShiftDown()) + { + quickQueueMode = true; + } + else + { + intDemolishCancel(); + } + } driveDisableTactical(); } -static inline void dealWithLMBFeature(FEATURE* psFeature) +static void dealWithLMBFeature(FEATURE* psFeature) { //some features are targetable //check for constructor droid trying to remove wrecked building first @@ -2084,7 +2116,7 @@ static inline void dealWithLMBFeature(FEATURE* psFeature) driveDisableTactical(); } -static inline void dealWithLMBObject(BASE_OBJECT* psClickedOn) +static void dealWithLMBObject(BASE_OBJECT* psClickedOn) { SELECTION_TYPE selection = establishSelection(selectedPlayer); OBJECT_TYPE type = psClickedOn->type; @@ -2127,7 +2159,7 @@ void dealWithLMB( void ) /* What have we clicked on? */ if(driveModeActive() && !driveTacticalActive()) { - psClickedOn = NULL; //targetGetCurrent(); + psClickedOn = NULL; if (psClickedOn) { dealWithLMBObject(psClickedOn); @@ -2263,25 +2295,15 @@ static void dealWithLMBDClick(void) if(psDroid->player == selectedPlayer) { /* If we've double clicked on a constructor droid, activate build menu */ - //if (psDroid->droidType == DROID_CONSTRUCT) - if (psDroid->droidType == DROID_CONSTRUCT || - psDroid->droidType == DROID_CYBORG_CONSTRUCT) - { - intResetScreen(true); - intConstructorSelected(psDroid); - } - else if (psDroid->droidType == DROID_COMMAND) + if (psDroid->droidType == DROID_COMMAND) { intResetScreen(true); intCommanderSelected(psDroid); } else { - /* Otherwise, activate the droid's group (if any) */ -// activateGroup(selectedPlayer,psDroid->group); - // Now selects all of smae type on screen + // Now selects all of same type on screen selDroidSelection(selectedPlayer,DS_BY_TYPE,DST_ALL_SAME,true); - } } } @@ -2371,7 +2393,6 @@ static void dealWithRMB( void ) BASE_OBJECT *psClickedOn; DROID *psDroid; STRUCTURE *psStructure; - BOOL bDemolish = false; if (driveModeActive() || mouseOverRadar || InGameOpUp == true || widgGetFromID(psWScreen,INTINGAMEOP)) @@ -2500,23 +2521,19 @@ static void dealWithRMB( void ) // addGameMessage("Right clicked on own building",1000,true); // addConsoleMessage("Right clicked on own building",DEFAULT_JUSTIFY,SYSTEM_MESSAGE); - // Moderately inefficient, but I can't think of a better way. - if (bRightClickOrders) - { - for (psDroid = apsDroidLists[selectedPlayer]; psDroid; psDroid=psDroid->psNext) - { - if (psDroid->selected && - chooseOrderObj(psDroid, psClickedOn, false) == DORDER_DEMOLISH) - { - bDemolish = true; - break; - } - } - } - if (bDemolish) + if (bRightClickOrders && intDemolishSelectMode()) { orderSelectedObjAdd(selectedPlayer, psClickedOn, ctrlShiftDown()); FeedbackOrderGiven(); + // we were demolishing something - now we're done + if (ctrlShiftDown()) + { + quickQueueMode = true; + } + else + { + intDemolishCancel(); + } } else if (psStructure->selected==true) { @@ -2754,7 +2771,7 @@ STRUCTURE *psStructure; /* Not a droid, so maybe a structure or feature? If still NULL after this then nothing */ if(driveModeActive() && !driveTacticalActive()) { - psNotDroid = NULL; //targetGetCurrent(); + psNotDroid = NULL; } else { psNotDroid = getTileOccupier(mouseTileX, mouseTileY); } @@ -2913,6 +2930,11 @@ SELECTION_TYPE selectionClass; selectionClass = SC_INVALID; CurrWeight = UBYTE_MAX; + if (intDemolishSelectMode()) + { + return SC_DROID_DEMOLISH; + } + for(psDroid = apsDroidLists[selectedPlayer]; psDroid /*&& !atLeastOne*/; psDroid = psDroid->psNext) { @@ -2995,14 +3017,7 @@ SELECTION_TYPE selectionClass; case DROID_CONSTRUCT: case DROID_CYBORG_CONSTRUCT: - if (intDemolishSelectMode()) - { - selectionClass = SC_DROID_DEMOLISH; // demolish mode. - } - else - { - selectionClass = SC_DROID_CONSTRUCT; // ordinary mode. - } + selectionClass = SC_DROID_CONSTRUCT; break; case DROID_COMMAND: diff --git a/src/display3d.c b/src/display3d.c index 699b4ee88..8dcd4691b 100644 --- a/src/display3d.c +++ b/src/display3d.c @@ -22,7 +22,7 @@ * Draws the 3D view. * Originally by Alex McLean & Jeremy Sallis, Pumpkin Studios, EIDOS INTERACTIVE */ -#include "lib/ivis_opengl/GLee.h" +#include // Workaround X11 headers #defining Status #ifdef Status # undef Status @@ -222,6 +222,10 @@ bool showSAMPLES = false; * default OFF, turn ON via console command 'showorders' */ bool showORDERS = false; +/** Show the current level name on the screen, toggle via the 'showlevelname' + * console command +*/ +bool showLevelName = true; /** When we have a connection issue, we will flash a message on screen * 0 = no issue, 1= player leaving nicely, 2= player got disconnected */ @@ -635,21 +639,21 @@ void draw3DScene( void ) break; } } - if (getWidgetsStatus() && getDebugMappingStatus() && !demoGetStatus() && !gamePaused()) - { - iV_DrawText( "DEBUG ", RET_X + 134, 440 + E_H ); - } - else + if (getWidgetsStatus() && !gamePaused()) { #ifdef DEBUG - if (getWidgetsStatus() && !gamePaused()) + char buildInfo[255]; + if (showLevelName) { - char buildInfo[255]; iV_DrawText( getLevelName(), RET_X + 134, 420 + E_H ); - getAsciiTime(buildInfo,gameTime); - iV_DrawText( buildInfo, RET_X + 134, 434 + E_H ); } + getAsciiTime(buildInfo,gameTime); + iV_DrawText( buildInfo, RET_X + 134, 434 + E_H ); #endif + if (getDebugMappingStatus() && !demoGetStatus()) + { + iV_DrawText( "DEBUG ", RET_X + 134, 448 + E_H ); + } } while(player.r.y>DEG(360)) @@ -943,12 +947,6 @@ static void drawTiles(iView *player) pie_EndLighting(); - if(driveModeActive()) { - // If were in driving mode then mark the current target. - /*if(targetGetCurrent() != NULL) { - targetMarkCurrent(); - }*/ - } if(!gamePaused()) { doConstructionLines(); @@ -1476,7 +1474,7 @@ void displayBlueprints(void) { if (deliveryPointToMove) { - // it's a delivery point + // it's a droid (from the debug menu) or a delivery point FLAG_POSITION pos = *deliveryPointToMove; pos.coords.x = world_coord(sBuildDetails.x)+world_coord(1)/2; pos.coords.y = world_coord(sBuildDetails.y)+world_coord(1)/2; @@ -1485,9 +1483,15 @@ void displayBlueprints(void) } else { - // it's a droid or a delivery point (from the debug menu) - // display nothing for now - ; + // it's a droid (from the debug menu) + // no delivery point is known, so show a fake one + FLAG_POSITION pos; + pos.coords.x = world_coord(sBuildDetails.x)+world_coord(1)/2; + pos.coords.y = world_coord(sBuildDetails.y)+world_coord(1)/2; + pos.coords.z = map_Height(pos.coords.x, pos.coords.y) + world_coord(1)/8; + pos.factoryType = FACTORY_FLAG; + pos.factoryInc = 0; + renderDeliveryPoint(&pos, true); } } } @@ -2465,16 +2469,16 @@ void renderDeliveryPoint(FLAG_POSITION *psPosition, BOOL blueprint) pie_MatScale(50); // they are all big now so make this one smaller too + pieFlag = pie_TRANSLUCENT; + pieFlagData = BLUEPRINT_OPACITY; + if (blueprint) { - pieFlag = pie_TRANSLUCENT; - pieFlagData = BLUEPRINT_OPACITY; colour = (buildState == BUILD3D_VALID) ? WZCOL_BLUEPRINT_VALID : WZCOL_BLUEPRINT_INVALID; } else { - pieFlag = 0; - pieFlagData = 0; + pieFlag |= pie_FORCE_FOG; colour = WZCOL_WHITE; } pie_Draw3DShape(pAssemblyPointIMDs[psPosition->factoryType][psPosition->factoryInc], 0, 0, colour, WZCOL_BLACK, pieFlag, pieFlagData); @@ -3352,9 +3356,6 @@ static void drawDroidSelections( void ) } } - // Reset color to white so that features textures are rendered as expected - glColor3f( 1.0f, 1.0f, 1.0f); - for(psFeature = apsFeatureLists[0]; psFeature; psFeature = psFeature->psNext) { if(!psFeature->died && psFeature->sDisplay.frameNumber == currentGameFrame) @@ -4217,10 +4218,9 @@ static void drawDroidSensorLock(DROID *psDroid) /// Draw the construction lines for all construction droids static void doConstructionLines( void ) { -DROID *psDroid; -UDWORD i; + DROID *psDroid; + UDWORD i; - pie_SetTranslucencyMode(TRANS_ALPHA); for(i=0; ipsNext) @@ -4266,9 +4266,8 @@ UDWORD i; /// Draw the construction or demolish lines for one droid static void addConstructionLine(DROID *psDroid, STRUCTURE *psStructure) { - CLIP_VERTEX pts[3]; Vector3i each; - Vector3f *point; + Vector3f *point, pts[3]; UDWORD pointIndex; SDWORD realY; Vector3i null, vec; @@ -4286,9 +4285,9 @@ static void addConstructionLine(DROID *psDroid, STRUCTURE *psStructure) rx = player.p.x & (TILE_UNITS-1); rz = player.p.z & (TILE_UNITS-1); - pts[0].pos.x = vec.x + rx; - pts[0].pos.y = vec.y; - pts[0].pos.z = vec.z - rz; + pts[0].x = vec.x + rx; + pts[0].y = vec.y; + pts[0].z = vec.z - rz; pointIndex = rand()%(psStructure->sDisplay.imd->npoints-1); point = &(psStructure->sDisplay.imd->points[pointIndex]); @@ -4310,9 +4309,9 @@ static void addConstructionLine(DROID *psDroid, STRUCTURE *psStructure) rx = player.p.x & (TILE_UNITS-1); rz = player.p.z & (TILE_UNITS-1); - pts[1].pos.x = vec.x + rx; - pts[1].pos.y = vec.y; - pts[1].pos.z = vec.z - rz; + pts[1].x = vec.x + rx; + pts[1].y = vec.y; + pts[1].z = vec.z - rz; pointIndex = rand()%(psStructure->sDisplay.imd->npoints-1); point = &(psStructure->sDisplay.imd->points[pointIndex]); @@ -4328,9 +4327,9 @@ static void addConstructionLine(DROID *psDroid, STRUCTURE *psStructure) rx = player.p.x & (TILE_UNITS-1); rz = player.p.z & (TILE_UNITS-1); - pts[2].pos.x = vec.x + rx; - pts[2].pos.y = vec.y; - pts[2].pos.z = vec.z - rz; + pts[2].x = vec.x + rx; + pts[2].y = vec.y; + pts[2].z = vec.z - rz; // set the colour colour = pal_SetBrightness(UBYTE_MAX); @@ -4343,18 +4342,6 @@ static void addConstructionLine(DROID *psDroid, STRUCTURE *psStructure) colour.byte.r = 0; colour.byte.g = 0; } - pts[0].light.rgba = 0xff000000; - pts[1].light.rgba = 0xff000000; - pts[2].light.rgba = 0xff000000; - - pts[0].u = 0; - pts[0].v = 0; - - pts[1].u = 0; - pts[1].v = 0; - - pts[2].u = 0; - pts[2].v = 0; pie_TransColouredTriangle(pts, colour); } diff --git a/src/display3d.h b/src/display3d.h index 1430a2d6b..70391cf6d 100644 --- a/src/display3d.h +++ b/src/display3d.h @@ -56,6 +56,7 @@ typedef enum extern bool showFPS; extern bool showSAMPLES; extern bool showORDERS; +extern bool showLevelName; extern void setViewAngle(SDWORD angle); extern UDWORD getViewDistance(void); diff --git a/src/drive.c b/src/drive.c index 3f4ccad40..33a5a6e18 100644 --- a/src/drive.c +++ b/src/drive.c @@ -738,20 +738,3 @@ void driveProcessRadarInput(int x,int y) CalcRadarPosition(x, y, &PosX, &PosY); orderSelectedLoc(selectedPlayer, PosX*TILE_UNITS, PosY*TILE_UNITS, ctrlShiftDown()); // ctrlShiftDown() = ctrl clicked a destination, add an order } -/* -void driveMarkTarget(void) -{ - - BASE_OBJECT *psObj = targetGetCurrent(); - if(psObj != NULL) - { - if(driveAllowControl()) - { -// MouseMovement(false); - targetMarkCurrent(); - SetMousePos(0,psObj->sDisplay.screenX,psObj->sDisplay.screenY); -// pie_DrawMouse(psObj->sDisplay.screenX,psObj->sDisplay.screenY); - } - } -} -*/ diff --git a/src/droid.c b/src/droid.c index 31d88b35e..2ea7a5e04 100644 --- a/src/droid.c +++ b/src/droid.c @@ -83,6 +83,7 @@ #include "research.h" #include "combat.h" #include "scriptfuncs.h" //for ThreatInRange() +#include "design.h" //for GetDefaultTemplateName #define DEFAULT_RECOIL_TIME (GAME_TICKS_PER_SEC/4) #define DROID_DAMAGE_SPREAD (16 - rand()%32) @@ -1555,7 +1556,7 @@ BOOL loadDroidTemplates(const char *pDroidData, UDWORD bufferSize) { char templName[MAX_STR_LENGTH]; char componentName[MAX_STR_LENGTH]; - unsigned int player; + char playerType[MAX_STR_LENGTH]; int cnt; DROID_TEMPLATE design; DROID_TEMPLATE *pDroidDesign = &design; @@ -1570,11 +1571,6 @@ BOOL loadDroidTemplates(const char *pDroidData, UDWORD bufferSize) pDroidDesign->pName = templName; sstrcpy(templName, componentName); - // Store translated name in aName - if (!getDroidResourceName(componentName)) - { - return false; - } sstrcpy(pDroidDesign->aName, componentName); //read in Body Name @@ -1697,11 +1693,11 @@ BOOL loadDroidTemplates(const char *pDroidData, UDWORD bufferSize) ASSERT_OR_RETURN(false, found, "ECM component not found for droid %s", getTemplateName(pDroidDesign)); } - //read in player id - Access decides the order -crap hey? - sscanf(pDroidData, "%d,%n", &player,&cnt); + //read in player type - decides whether or not humans can access it + sscanf(pDroidData, "%[^','],%n", playerType,&cnt); pDroidData += cnt; - if (getTemplateFromUniqueName(pDroidDesign->pName, player)) + if (getTemplateFromUniqueName(pDroidDesign->pName, 0)) { debug( LOG_ERROR, "Duplicate template %s", pDroidDesign->pName ); continue; @@ -1836,6 +1832,18 @@ BOOL loadDroidTemplates(const char *pDroidData, UDWORD bufferSize) //check that not allocating more weapons than allowed ASSERT_OR_RETURN(false, pDroidDesign->numWeaps <= DROID_MAXWEAPS, "Too many weapons have been allocated for droid Template: %s", pDroidDesign->aName); + // Store translated name in aName + sstrcpy(componentName, pDroidDesign->aName); + if (getDroidResourceName(componentName)) + { + sstrcpy(pDroidDesign->aName, componentName); + } + else + { + sstrcpy(pDroidDesign->aName, GetDefaultTemplateName(pDroidDesign)); + } + + pDroidDesign->ref = REF_TEMPLATE_START + line; // Store global default design if found else store in the appropriate array if ( pDroidDesign->droidType == DROID_DEFAULT ) @@ -1851,13 +1859,20 @@ BOOL loadDroidTemplates(const char *pDroidData, UDWORD bufferSize) { int i; - // Give those meant for humans (player 0) to all human players. - for (i = 0; i < MAX_PLAYERS; i++) + // Give those meant for humans to all human players. + // Also support the old template format, in which those meant + // for humans were player 0 (in campaign) or 5 (in multiplayer). + if ((!strcmp(playerType, "0") && !bMultiPlayer) || + (!strcmp(playerType, "5") && bMultiPlayer) || + !strcmp(playerType, "YES")) { - if (player == 0 && NetPlay.players[i].allocated) // human prototype template + for (i = 0; i < MAX_PLAYERS; i++) { - pDroidDesign->prefab = false; - addTemplateToList(pDroidDesign, &apsDroidTemplates[i]); + if (NetPlay.players[i].allocated) // human prototype template + { + pDroidDesign->prefab = false; + addTemplateToList(pDroidDesign, &apsDroidTemplates[i]); + } } } // Add all templates to static template list @@ -2025,19 +2040,30 @@ BOOL loadDroidWeapons(const char *pWeaponData, UDWORD bufferSize) for (line = 0; line < NumWeapons; line++) { - int player, i; - char WeaponName[DROID_MAXWEAPS][MAX_STR_LENGTH] = {{'\0'}}, - TemplateName[MAX_STR_LENGTH] = {'\0'}; + DROID_TEMPLATE *pTemplate; + int player, i, j; + char WeaponName[DROID_MAXWEAPS][MAX_STR_LENGTH] = {{'\0'}}; + char TemplateName[MAX_STR_LENGTH] = {'\0'}; //read the data into the storage - the data is delimeted using comma's sscanf(pWeaponData, "%[^','],%[^','],%[^','],%[^','],%d", TemplateName, WeaponName[0], WeaponName[1], WeaponName[2], &player); - for (i = 0; i < MAX_PLAYERS; i++) + for (i = 0; i < MAX_PLAYERS + 1; i++) { - unsigned int j; - - DROID_TEMPLATE *pTemplate = getTemplateFromUniqueName(TemplateName, i); + if (i < MAX_PLAYERS) // a player + { + if (!isHumanPlayer(i)) + { + continue; // no need to add to AIs, they use the static list + } + pTemplate = getTemplateFromUniqueName(TemplateName, i); + } + else // special exception - the static list + { + // Add weapons to static list + pTemplate = getTemplateFromTranslatedNameNoPlayer(TemplateName); + } /* if Template not found - try default design */ if (!pTemplate) @@ -2070,10 +2096,6 @@ BOOL loadDroidWeapons(const char *pWeaponData, UDWORD bufferSize) pTemplate->aName); pTemplate->storeCount++; } - if (!isHumanPlayer(i)) - { - break; // only one list to add to - } } //increment the pointer to the start of the next record @@ -2432,8 +2454,10 @@ DROID *reallyBuildDroid(DROID_TEMPLATE *pTemplate, UDWORD x, UDWORD y, UDWORD pl // Set the droids type psDroid->droidType = droidTemplateType(pTemplate); // Is set again later to the same thing, in droidSetBits. - psDroid->pos.x = (UWORD)x; - psDroid->pos.y = (UWORD)y; + psDroid->pos.x = x; + psDroid->pos.y = y; + psDroid->sMove.eBitX = 0; + psDroid->sMove.eBitY = 0; //don't worry if not on homebase cos not being drawn yet if (!onMission) @@ -2496,7 +2520,10 @@ DROID *reallyBuildDroid(DROID_TEMPLATE *pTemplate, UDWORD x, UDWORD y, UDWORD pl psDroid->psBaseStruct = NULL; // find the highest stored experience - if ((psDroid->droidType != DROID_CONSTRUCT) && + // Unless game time is stopped, then we're hopefully loading a game and + // don't want to use up recycled experience for the droids we just loaded. + if (!gameTimeIsStopped() && + (psDroid->droidType != DROID_CONSTRUCT) && (psDroid->droidType != DROID_CYBORG_CONSTRUCT) && (psDroid->droidType != DROID_REPAIR) && (psDroid->droidType != DROID_CYBORG_REPAIR) && @@ -2641,12 +2668,6 @@ DROID *buildDroid(DROID_TEMPLATE *pTemplate, UDWORD x, UDWORD y, UDWORD player, void initDroidMovement(DROID *psDroid) { memset(&psDroid->sMove, 0, sizeof(MOVE_CONTROL)); - - psDroid->sMove.fx = psDroid->pos.x; - psDroid->sMove.fy = psDroid->pos.y; - psDroid->sMove.fz = psDroid->pos.z; - psDroid->sMove.speed = 0.0f; - psDroid->sMove.moveDir = 0; } // Set the asBits in a DROID structure given it's template. @@ -4275,6 +4296,7 @@ DROID * giftSingleDroid(DROID *psD, UDWORD to) STRUCTURE *psStruct; UDWORD body, armourK[NUM_HIT_SIDES], armourH[NUM_HIT_SIDES]; HIT_SIDE impact_side; + int them = 0; CHECK_DROID(psD); @@ -4325,44 +4347,60 @@ DROID * giftSingleDroid(DROID *psD, UDWORD to) psD->asBits[COMP_REPAIRUNIT].nStat = (UBYTE)aDefaultRepair[psD->player]; } } - } + } // add back into cluster system clustNewDroid(psD); // Update visibility visTilesUpdate((BASE_OBJECT*)psD); - // check through the 'to' players list of droids to see if any are targetting it - for (psCurr = apsDroidLists[to]; psCurr != NULL; psCurr = psCurr->psNext) + // check through the players, and our allies, list of droids to see if any are targetting it + for (them = 0; them < MAX_PLAYERS; them++) { - if (psCurr->psTarget == (BASE_OBJECT *)psD || psCurr->psActionTarget[0] == (BASE_OBJECT *)psD) + if (!aiCheckAlliances(them, to)) // scan all the droid list for ALLIANCE_FORMED (yes, we have a alliance with ourselves) { - orderDroid(psCurr, DORDER_STOP); + continue; } - // check through order list - for (i = 0; i < psCurr->listSize; i++) + + for (psCurr = apsDroidLists[them]; psCurr != NULL; psCurr = psCurr->psNext) { - if (psCurr->asOrderList[i].psOrderTarget == (BASE_OBJECT *)psD) + if (psCurr->psTarget == (BASE_OBJECT *)psD || psCurr->psActionTarget[0] == (BASE_OBJECT *)psD) { - removeDroidOrderTarget(psCurr, i); - // move the rest of the list down - memmove(&psCurr->asOrderList[i], &psCurr->asOrderList[i] + 1, (psCurr->listSize - i) * sizeof(ORDER_LIST)); - // adjust list size - psCurr->listSize -= 1; - // initialise the empty last slot - memset(psCurr->asOrderList + psCurr->listSize, 0, sizeof(ORDER_LIST)); + orderDroid(psCurr, DORDER_STOP); + } + // check through order list + for (i = 0; i < psCurr->listSize; i++) + { + if (psCurr->asOrderList[i].psOrderTarget == (BASE_OBJECT *)psD) + { + removeDroidOrderTarget(psCurr, i); + // move the rest of the list down + memmove(&psCurr->asOrderList[i], &psCurr->asOrderList[i] + 1, (psCurr->listSize - i) * sizeof(ORDER_LIST)); + // adjust list size + psCurr->listSize -= 1; + // initialise the empty last slot + memset(psCurr->asOrderList + psCurr->listSize, 0, sizeof(ORDER_LIST)); + } } } } - // check through the 'to' players list of structures to see if any are targetting it - for (psStruct = apsStructLists[to]; psStruct != NULL; psStruct = psStruct->psNext) + + for (them = 0; them < MAX_PLAYERS; them++) { - if (psStruct->psTarget[0] == (BASE_OBJECT *)psD) + if (!aiCheckAlliances(them, to)) // scan all the droid list for ALLIANCE_FORMED (yes, we have a alliance with ourselves) { - psStruct->psTarget[0] = NULL; + continue; + } + + // check through the players list, and our allies, of structures to see if any are targetting it + for (psStruct = apsStructLists[them]; psStruct != NULL; psStruct = psStruct->psNext) + { + if (psStruct->psTarget[0] == (BASE_OBJECT *)psD) + { + psStruct->psTarget[0] = NULL; + } } } - // skirmish callback! psScrCBDroidTaken = psD; eventFireCallbackTrigger((TRIGGER_TYPE)CALL_UNITTAKEOVER); @@ -4691,14 +4729,13 @@ BOOL cyborgDroid(const DROID* psDroid) BOOL droidOnMap(const DROID *psDroid) { if (psDroid->died == NOT_CURRENT_LIST || psDroid->droidType == DROID_TRANSPORTER - || psDroid->sMove.fx == INVALID_XY || psDroid->pos.x == INVALID_XY || missionIsOffworld() + || psDroid->pos.x == INVALID_XY || psDroid->pos.y == INVALID_XY || missionIsOffworld() || mapHeight == 0) { // Off world or on a transport or is a transport or in mission list, or on a mission, or no map - ignore return true; } - return (worldOnMap(psDroid->sMove.fx, psDroid->sMove.fy) - && worldOnMap(psDroid->pos.x, psDroid->pos.y)); + return worldOnMap(psDroid->pos.x, psDroid->pos.y); } /** Teleport a droid to a new position on the map */ diff --git a/src/e3demo.c b/src/e3demo.c index bb7edcc57..c4566d8b2 100644 --- a/src/e3demo.c +++ b/src/e3demo.c @@ -27,6 +27,7 @@ #include "lib/framework/frame.h" +#include "action.h" #include "e3demo.h" #include "map.h" #include "warcam.h" diff --git a/src/edit3d.c b/src/edit3d.c index 4cdf1f85a..562093bfa 100644 --- a/src/edit3d.c +++ b/src/edit3d.c @@ -43,6 +43,7 @@ BUILDDETAILS sBuildDetails; HIGHLIGHT buildSite; int brushSize = 1; bool editMode = false; +bool quickQueueMode = false; // Initialisation function for statis & globals in this module. // @@ -137,13 +138,6 @@ void init3DBuilding(BASE_STATS *psStats,BUILDCALLBACK CallBack,void *UserData) sBuildDetails.width = ((STRUCTURE_STATS *)psStats)->baseWidth; sBuildDetails.height = ((STRUCTURE_STATS *)psStats)->baseBreadth; sBuildDetails.psStats = psStats; - - // hack to increase the size of repair facilities - if (((STRUCTURE_STATS *)psStats)->type == REF_REPAIR_FACILITY) - { - sBuildDetails.width += 2; - sBuildDetails.height += 2; - } } else if (psStats->ref >= REF_FEATURE_START && psStats->ref < (REF_FEATURE_START + REF_RANGE)) @@ -180,6 +174,11 @@ BOOL process3DBuilding(void) //if not trying to build ignore if (buildState == BUILD3D_NONE) { + if (quickQueueMode && !ctrlShiftDown()) + { + quickQueueMode = false; + intDemolishCancel(); + } return true; } @@ -188,12 +187,6 @@ BOOL process3DBuilding(void) { bX = mouseTileX; bY = mouseTileY; - // lovely hack to make the repair facility 3x3 - need to offset the position by 1 - if (((STRUCTURE_STATS *)sBuildDetails.psStats)->type == REF_REPAIR_FACILITY) - { - bX += 1; - bY += 1; - } if (validLocation(sBuildDetails.psStats, bX, bY, selectedPlayer, true)) { @@ -254,6 +247,11 @@ BOOL process3DBuilding(void) buildState = BUILD3D_NONE; return true; } + if (quickQueueMode && !ctrlShiftDown()) + { + buildState = BUILD3D_NONE; + quickQueueMode = false; + } return false; } @@ -270,14 +268,15 @@ BOOL found3DBuilding(UDWORD *x, UDWORD *y) *x = sBuildDetails.x; *y = sBuildDetails.y; - // lovely hack to make the repair facility 3x3 - need to offset the position by 1 - if (((STRUCTURE_STATS *)sBuildDetails.psStats)->type == REF_REPAIR_FACILITY) + if (ctrlShiftDown()) { - *x += 1; - *y += 1; + quickQueueMode = true; + init3DBuilding(sBuildDetails.psStats, NULL, NULL); + } + else + { + buildState = BUILD3D_NONE; } - - buildState = BUILD3D_NONE; return true; } @@ -305,6 +304,13 @@ BOOL found3DBuildLocTwo(UDWORD *px1, UDWORD *py1, UDWORD *px2, UDWORD *py2) *py1 = wallDrag.y1; *px2 = wallDrag.x2; *py2 = wallDrag.y2; + + if (ctrlShiftDown()) + { + quickQueueMode = true; + init3DBuilding(sBuildDetails.psStats, NULL, NULL); + } + return true; } diff --git a/src/edit3d.h b/src/edit3d.h index 489707361..a85cccbf1 100644 --- a/src/edit3d.h +++ b/src/edit3d.h @@ -75,8 +75,9 @@ extern BUILDDETAILS sBuildDetails; extern UDWORD buildState; extern UDWORD temp; -extern bool editMode; extern int brushSize; +extern bool editMode; +extern bool quickQueueMode; /*returns true if the build state is not equal to BUILD3D_NONE*/ extern BOOL tryingToGetLocation(void); diff --git a/src/feature.c b/src/feature.c index 2b665d8cd..d9851de03 100644 --- a/src/feature.c +++ b/src/feature.c @@ -256,14 +256,15 @@ FEATURE * buildFeature(FEATURE_STATS *psStats, UDWORD x, UDWORD y,BOOL FromSave) UDWORD startX,startY,max,min; SDWORD i; UBYTE vis; - //try and create the Feature FEATURE* psFeature = createFeature(); + if (psFeature == NULL) { debug(LOG_WARNING, "Feature couldn't be built."); return NULL; } + psFeature->psStats = psStats; // features are not in the cluster system // this will cause an assert when they still end up there psFeature->cluster = ~0; @@ -310,10 +311,7 @@ FEATURE * buildFeature(FEATURE_STATS *psStats, UDWORD x, UDWORD y,BOOL FromSave) { psFeature->rot.direction = 0; } - //psFeature->damage = featureDamage; psFeature->selected = false; - psFeature->psStats = psStats; - //psFeature->subType = psStats->subType; psFeature->body = psStats->body; psFeature->player = MAX_PLAYERS+1; //set the player out of range to avoid targeting confusions objSensorCache((BASE_OBJECT *)psFeature, NULL); diff --git a/src/formation.c b/src/formation.c index fa8877780..6549bc8f0 100644 --- a/src/formation.c +++ b/src/formation.c @@ -39,20 +39,14 @@ // radius for the different body sizes static SDWORD fmLtRad = 80, fmMedRad = 100, fmHvyRad = 110; -// heap sizes -#define F_HEAPINIT 10 -#define F_HEAPEXT 5 - // default length of a formation line #define F_DEFLENGTH (4*fmLtRad) -//(3 * TILE_UNITS / 1) // how close to the formation a unit has to be to receive a formation point #define F_JOINRANGE (TILE_UNITS * 3) // how far apart to keep the ranks in a formation #define RANK_DIST (2*fmLtRad) -//(3*TILE_UNITS/2) // maximum number of ranks for a line #define MAX_RANK 15 @@ -100,11 +94,7 @@ BOOL formationNew(FORMATION **ppsFormation, FORMATION_TYPE type, FORMATION *psNew = malloc(sizeof(FORMATION)); // get a heap structure - ASSERT(psNew, "Out of memory"); - if (psNew == NULL) - { - return false; - } + ASSERT_OR_RETURN(false, psNew, "Out of memory"); // initialise it psNew->refCount = 0; @@ -135,7 +125,7 @@ BOOL formationNew(FORMATION **ppsFormation, FORMATION_TYPE type, // line to the right psNew->asLines[1].xoffset = 0; psNew->asLines[1].yoffset = 0; - psNew->asLines[1].direction = dir - DEG(110); + psNew->asLines[1].direction = dir + DEG(110); psNew->asLines[1].member = -1; break; case FT_COLUMN: @@ -143,12 +133,12 @@ BOOL formationNew(FORMATION **ppsFormation, FORMATION_TYPE type, // line to the left psNew->asLines[0].xoffset = 0; psNew->asLines[0].yoffset = 0; - psNew->asLines[0].direction = dir - DEG(180); + psNew->asLines[0].direction = dir + DEG(180); psNew->asLines[0].member = -1; break; default: - ASSERT( false,"fmNewFormation: unknown formation type" ); - break; + ASSERT(false, "Unknown formation type"); + return false; } psNew->psNext = psFormationList; @@ -218,8 +208,7 @@ void formationJoin(FORMATION *psFormation, const DROID* psDroid) { SDWORD rankDist, size; - ASSERT( psFormation != NULL, - "formationJoin: invalid formation" ); + ASSERT_OR_RETURN(, psFormation != NULL, "Invalid formation"); psFormation->refCount += 1; @@ -248,14 +237,12 @@ void formationLeave(FORMATION *psFormation, const DROID* psDroid) F_MEMBER *asMembers; FORMATION *psCurr, *psPrev; - ASSERT_OR_RETURN(, psFormation != NULL, - "formationLeave: invalid formation" ); + ASSERT_OR_RETURN(, psFormation != NULL, "Invalid formation"); if (!psDroid) { return; } - ASSERT_OR_RETURN(, psFormation->refCount > 0, - "formationLeave: refcount is zero" ); + ASSERT_OR_RETURN(, psFormation->refCount > 0, "Formation refcount is zero"); asMembers = psFormation->asMembers; @@ -335,13 +322,12 @@ void formationReset(FORMATION *psFormation) /** Calculate the coordinates of a position on a line */ -static void formationCalcPos(FORMATION *psFormation, SDWORD line, SDWORD dist, - SDWORD *pX, SDWORD *pY) +static void formationCalcPos(DROID *psDroid, FORMATION *psFormation, SDWORD line, SDWORD dist, SDWORD *pX, SDWORD *pY) { const int rank = dist / psFormation->size; // calculate the offset of the line based on the rank - uint16_t dir = psFormation->direction - DEG(180); + uint16_t dir = psFormation->direction + DEG(180); const int xoffset = iSinR(dir, psFormation->rankDist * rank) + psFormation->asLines[line].xoffset; const int yoffset = iCosR(dir, psFormation->rankDist * rank) + psFormation->asLines[line].yoffset; @@ -350,6 +336,8 @@ static void formationCalcPos(FORMATION *psFormation, SDWORD line, SDWORD dist, dist -= psFormation->size * rank; *pX = iSinR(dir, dist) + xoffset + psFormation->x; *pY = iCosR(dir, dist) + yoffset + psFormation->y; + //objTrace(psDroid->id, "Formation: xoff=%d, yoff=%d, dir=%d, dist=%d; formxoff=%d, formyoff=%d", xoffset, yoffset, + // psFormation->asLines[line].direction, dist, psFormation->asLines[line].xoffset, psFormation->asLines[line].yoffset); } @@ -365,10 +353,9 @@ static void formationFindFree(FORMATION *psFormation, DROID* psDroid, SDWORD chosenLine, chosenDist, chosenPrev, chosenRank; BOOL found; + ASSERT(psFormation->free != -1, "No members left to allocate"); if (psFormation->free == -1) { - ASSERT( false, - "formationFindFree: no members left to allocate" ); *pX = psFormation->x; *pY = psFormation->y; return; @@ -426,7 +413,7 @@ static void formationFindFree(FORMATION *psFormation, DROID* psDroid, if (found) { // calculate the position on the line - formationCalcPos(psFormation, line, currDist+objRadius, &x,&y); + formationCalcPos(psDroid, psFormation, line, currDist + objRadius, &x, &y); if (fpathBlockingTile(map_coord(x), map_coord(y), getPropulsionStats(psDroid)->propulsionType)) { // blocked, try the next rank @@ -442,9 +429,7 @@ static void formationFindFree(FORMATION *psFormation, DROID* psDroid, ydiff = y - psDroid->pos.y; dist = xdiff*xdiff + ydiff*ydiff; // dist += psFormation->rankDist*psFormation->rankDist * rank*rank; - if (((dist < objDist) && (rank == chosenRank)) || - (rank < chosenRank)) -// if (dist < objDist) + if ((dist < objDist && rank == chosenRank) || rank < chosenRank) { // this gap is nearer objDist = dist; @@ -564,12 +549,11 @@ static void formationReorder(FORMATION *psFormation) BOOL formationGetPos( FORMATION *psFormation, DROID* psDroid, SDWORD *pX, SDWORD *pY, BOOL bCheckLOS ) { - SDWORD xdiff,ydiff,distSq;//,rangeSq; + SDWORD xdiff,ydiff,distSq; SDWORD member, x,y; F_MEMBER *asMembers; - ASSERT( psFormation != NULL, - "formationGetPos: invalid formation pointer" ); + ASSERT_OR_RETURN(false, psFormation != NULL, "Invalid formation pointer"); /* if (psFormation->refCount == 1) { @@ -581,12 +565,6 @@ BOOL formationGetPos( FORMATION *psFormation, DROID* psDroid, xdiff = (SDWORD)psFormation->x - (SDWORD)psDroid->pos.x; ydiff = (SDWORD)psFormation->y - (SDWORD)psDroid->pos.y; distSq = xdiff*xdiff + ydiff*ydiff; -// rangeSq = 3*psFormation->size/2; -// rangeSq = rangeSq*rangeSq; -// if (distSq > F_JOINRANGE*F_JOINRANGE) -// { -// return false; -// } // see if the unit is already in the formation asMembers = psFormation->asMembers; @@ -601,8 +579,7 @@ BOOL formationGetPos( FORMATION *psFormation, DROID* psDroid, if (member < F_MAXMEMBERS) { // the unit is already in the formation - return it's current position - formationCalcPos(psFormation, asMembers[member].line, asMembers[member].dist, - &x,&y); + formationCalcPos(psDroid, psFormation, asMembers[member].line, asMembers[member].dist, &x, &y); } else if (psFormation->free != -1) { @@ -621,7 +598,7 @@ BOOL formationGetPos( FORMATION *psFormation, DROID* psDroid, } // calculate its position - formationCalcPos(psFormation, asMembers[member].line, asMembers[member].dist, &x, &y); + formationCalcPos(psDroid, psFormation, asMembers[member].line, asMembers[member].dist, &x, &y); } else { @@ -629,8 +606,7 @@ BOOL formationGetPos( FORMATION *psFormation, DROID* psDroid, } // check the unit can get to the formation position - if ( bCheckLOS && !fpathTileLOS(map_coord(psDroid->pos.x), map_coord(psDroid->pos.y), - map_coord(x), map_coord(y))) + if (bCheckLOS && !fpathTileLOS(psDroid, Vector3i_Init(x, y, 0))) { return false; } diff --git a/src/fpath.c b/src/fpath.c index 04000763d..3208ac7d3 100644 --- a/src/fpath.c +++ b/src/fpath.c @@ -313,6 +313,7 @@ BOOL fpathBaseBlockingTile(SDWORD x, SDWORD y, PROPULSION_TYPE propulsion, int p { // Implement gates by completely ignoring them if (psTile->psObject->type == OBJ_STRUCTURE && psTile->psObject->player == player + && ((STRUCTURE *)psTile->psObject)->status == SS_BUILT && ((STRUCTURE *)psTile->psObject)->pStructureType->type == REF_GATE) { return false; @@ -575,7 +576,7 @@ static FPATH_RETVAL fpathRoute(MOVE_CONTROL *psMove, int id, int startX, int sta // Find a route for an DROID to a location in world coordinates FPATH_RETVAL fpathDroidRoute(DROID* psDroid, SDWORD tX, SDWORD tY, FPATH_MOVETYPE moveType) { - PROPULSION_STATS *psPropStats = asPropulsionStats + psDroid->asBits[COMP_PROPULSION].nStat; + PROPULSION_STATS *psPropStats = getPropulsionStats(psDroid); // override for AI to blast our way through stuff if (!isHumanPlayer(psDroid->player) && moveType == FMT_MOVE) @@ -676,12 +677,9 @@ static BOOL obstruction; */ static bool fpathVisCallback(Vector3i pos, int32_t dist, void *data) { - /* Has to be -1 to make sure that it doesn't match any enumerated - * constant from PROPULSION_TYPE. - */ - static const PROPULSION_TYPE prop = (PROPULSION_TYPE)-1; + DROID *psDroid = (DROID *)data; - if (fpathBlockingTile(map_coord(pos.x), map_coord(pos.y), prop)) + if (fpathBlockingTile(map_coord(pos.x), map_coord(pos.y), getPropulsionStats(psDroid)->propulsionType)) { // found an obstruction obstruction = true; @@ -691,17 +689,14 @@ static bool fpathVisCallback(Vector3i pos, int32_t dist, void *data) return true; } -BOOL fpathTileLOS(SDWORD x1,SDWORD y1, SDWORD x2,SDWORD y2) +BOOL fpathTileLOS(DROID *psDroid, Vector3i dest) { - // convert to world coords - Vector3i p1 = { world_coord(x1) + TILE_UNITS / 2, world_coord(y1) + TILE_UNITS / 2, 0 }; - Vector3i p2 = { world_coord(x2) + TILE_UNITS / 2, world_coord(y2) + TILE_UNITS / 2, 0 }; - Vector3i dir = Vector3i_Sub(p2, p1); + Vector3i dir = Vector3i_Sub(dest, psDroid->pos); // Initialise the callback variables obstruction = false; - rayCast(p1, iAtan2(dir.x, dir.y), iHypot(dir.x, dir.y), fpathVisCallback, NULL); + rayCast(psDroid->pos, iAtan2(dir.x, dir.y), iHypot(dir.x, dir.y), fpathVisCallback, psDroid); return !obstruction; } diff --git a/src/fpath.h b/src/fpath.h index 501de7b7e..ac4308dfb 100644 --- a/src/fpath.h +++ b/src/fpath.h @@ -98,9 +98,9 @@ extern void fpathSetDirectRoute(DROID* psDroid, SDWORD targetX, SDWORD targetY); /** Clean up path jobs and results for a droid. Function is thread-safe. */ extern void fpathRemoveDroidData(int id); -/** Check LOS (Line Of Sight) between two tiles +/** Check LOS (Line Of Sight) between two world positions. */ -extern BOOL fpathTileLOS(SDWORD x1,SDWORD y1, SDWORD x2,SDWORD y2); +extern BOOL fpathTileLOS(DROID *psDroid, Vector3i dest); /** Quick O(1) test of whether it is theoretically possible to go from origin to destination * using the given propulsion type. orig and dest are in world coordinates. */ diff --git a/src/frontend.c b/src/frontend.c index cc844c80d..46e3dce1c 100644 --- a/src/frontend.c +++ b/src/frontend.c @@ -108,6 +108,7 @@ static void displayTitleBitmap (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffse void displayText (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, WZ_DECL_UNUSED PIELIGHT *pColours); void displayTextAt270 (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); static void displayBigSlider (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); +static void displayAISlider (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); @@ -695,22 +696,14 @@ BOOL startGameOptions2Menu(void) //////////// //subtitle mode. - if(war_GetAllowSubtitles()) + addTextButton(FRONTEND_SUBTITLES, FRONTEND_POS5X - 35, FRONTEND_POS5Y, _("Subtitles"), 0); + if (!seq_GetSubtitles()) { - addTextButton(FRONTEND_SUBTITLES, FRONTEND_POS5X-35,FRONTEND_POS5Y, _("Subtitles"), 0); - if ( !seq_GetSubtitles() ) - { - addTextButton(FRONTEND_SUBTITLES_R, FRONTEND_POS5M-55,FRONTEND_POS5Y, _("Off"), 0); - } - else - { - addTextButton(FRONTEND_SUBTITLES_R, FRONTEND_POS5M-55,FRONTEND_POS5Y, _("On"), 0); - } + addTextButton(FRONTEND_SUBTITLES_R, FRONTEND_POS5M - 55, FRONTEND_POS5Y, _("Off"), 0); } else { - addTextButton(FRONTEND_SUBTITLES, FRONTEND_POS5X-35, FRONTEND_POS5Y, _("Subtitles"), WBUT_DISABLE); - addTextButton(FRONTEND_SUBTITLES_R, FRONTEND_POS5M-55, FRONTEND_POS5Y, _("Off"), WBUT_DISABLE); + addTextButton(FRONTEND_SUBTITLES_R, FRONTEND_POS5M - 55, FRONTEND_POS5Y, _("On"), 0); } //////////// @@ -1654,6 +1647,26 @@ void addFESlider(UDWORD id, UDWORD parent, UDWORD x, UDWORD y, UDWORD stops, UDW sSldInit.pCallback = intUpdateQuantitySlider; widgAddSlider(psWScreen, &sSldInit); } +void addFEAISlider(UDWORD id, UDWORD parent, UDWORD x, UDWORD y, UDWORD stops, UDWORD pos) +{ + W_SLDINIT sSldInit; + + memset(&sSldInit, 0, sizeof(W_SLDINIT)); + sSldInit.formID = parent; + sSldInit.id = id; + sSldInit.style = WSLD_PLAIN; + sSldInit.x = (short)x; + sSldInit.y = (short)y; + sSldInit.width = iV_GetImageWidth(IntImages,IMAGE_SLIDER_BIG); + sSldInit.height = iV_GetImageHeight(IntImages,IMAGE_SLIDER_BIG); + sSldInit.orientation= WSLD_LEFT; + sSldInit.numStops = (UBYTE) stops; + sSldInit.barSize = iV_GetImageHeight(IntImages,IMAGE_SLIDER_BIG); + sSldInit.pos = (UBYTE) pos; + sSldInit.pDisplay = displayAISlider; + sSldInit.pCallback = intUpdateQuantitySlider; + widgAddSlider(psWScreen, &sSldInit); +} // //////////////////////////////////////////////////////////////////////////// void addSideText(UDWORD id, UDWORD PosX, UDWORD PosY, const char *txt) @@ -1687,14 +1700,14 @@ static void displayTitleBitmap(WZ_DECL_UNUSED WIDGET *psWidget, WZ_DECL_UNUSED U iV_SetFont(font_regular); iV_SetTextColour(WZCOL_GREY); iV_DrawTextRotated(version_getFormattedVersionString(), pie_GetVideoBufferWidth() - 9, pie_GetVideoBufferHeight() - 14, 270.f); - + if (*getModList()) { - sstrcat(modListText, _("Active mods: ")); + sstrcat(modListText, _("Mod: ")); sstrcat(modListText, getModList()); iV_DrawText(modListText, 9, 14); } - + iV_SetTextColour(WZCOL_TEXT_BRIGHT); iV_DrawTextRotated(version_getFormattedVersionString(), pie_GetVideoBufferWidth() - 10, pie_GetVideoBufferHeight() - 15, 270.f); @@ -1827,3 +1840,15 @@ static void displayBigSlider(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, W sx = (SWORD)((Slider->width-3 - Slider->barSize) * Slider->pos / Slider->numStops); // determine pos. iV_DrawImage(IntImages,IMAGE_SLIDER_BIGBUT,x+3+sx,y+3); //draw amount } +static void displayAISlider(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, WZ_DECL_UNUSED PIELIGHT *pColours) +{ + W_SLIDER *Slider = (W_SLIDER*)psWidget; + UDWORD x = xOffset+psWidget->x; + UDWORD y = yOffset+psWidget->y; + SWORD sx; + + iV_DrawImage(IntImages,IMAGE_SLIDER_AI,x+STAT_SLD_OX,y+STAT_SLD_OY); // draw bdrop + + sx = (SWORD)((Slider->width-3 - Slider->barSize) * Slider->pos / Slider->numStops); // determine pos. + iV_DrawImage(IntImages,IMAGE_SLIDER_BIGBUT,x+3+sx,y+3); //draw amount +} diff --git a/src/frontend.h b/src/frontend.h index 5b7c8ada4..632751789 100644 --- a/src/frontend.h +++ b/src/frontend.h @@ -86,6 +86,7 @@ extern void addTextButton (UDWORD id, UDWORD PosX, UDWORD PosY, const char *t extern void addText (UDWORD id, UDWORD PosX, UDWORD PosY, const char *txt, UDWORD formID); extern void addSideText (UDWORD id, UDWORD PosX, UDWORD PosY, const char *txt); extern void addFESlider (UDWORD id, UDWORD parent, UDWORD x, UDWORD y, UDWORD stops, UDWORD pos); +extern void addFEAISlider (UDWORD id, UDWORD parent, UDWORD x, UDWORD y, UDWORD stops, UDWORD pos); extern void displayLogo (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); extern void displayTextOption (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); diff --git a/src/game.c b/src/game.c index 66853f132..cda139227 100644 --- a/src/game.c +++ b/src/game.c @@ -40,6 +40,7 @@ #include "lib/script/script.h" #include "lib/sound/audio.h" #include "lib/sound/audio_id.h" +#include "modding.h" #include "game.h" @@ -1467,20 +1468,52 @@ static bool deserializeSaveGameV35Data(PHYSFS_file* fileHandle, SAVE_GAME_V35* s return deserializeSaveGameV34Data(fileHandle, (SAVE_GAME_V34*) serializeGame); } +// Store loaded mods in savegame +#define GAME_SAVE_V38 \ + GAME_SAVE_V35; \ + char modList[modlist_string_size] + +typedef struct save_game_v38 +{ + GAME_SAVE_V38; +} SAVE_GAME_V38; + +static bool serializeSaveGameV38Data(PHYSFS_file* fileHandle, const SAVE_GAME_V38* serializeGame) +{ + if (!serializeSaveGameV35Data(fileHandle, (const SAVE_GAME_V35*) serializeGame)) + return false; + + if (PHYSFS_write(fileHandle, serializeGame->modList, modlist_string_size, 1) != 1) + return false; + + return true; +} + +static bool deserializeSaveGameV38Data(PHYSFS_file* fileHandle, SAVE_GAME_V38* serializeGame) +{ + if (!deserializeSaveGameV35Data(fileHandle, (SAVE_GAME_V35*) serializeGame)) + return false; + + if (PHYSFS_read(fileHandle, serializeGame->modList, modlist_string_size, 1) != 1) + return false; + + return true; +} + // Current save game version typedef struct save_game { - GAME_SAVE_V35; + GAME_SAVE_V38; } SAVE_GAME; static bool serializeSaveGameData(PHYSFS_file* fileHandle, const SAVE_GAME* serializeGame) { - return serializeSaveGameV35Data(fileHandle, (const SAVE_GAME_V35*) serializeGame); + return serializeSaveGameV38Data(fileHandle, (const SAVE_GAME_V38*) serializeGame); } static bool deserializeSaveGameData(PHYSFS_file* fileHandle, SAVE_GAME* serializeGame) { - return deserializeSaveGameV35Data(fileHandle, (SAVE_GAME_V35*) serializeGame); + return deserializeSaveGameV38Data(fileHandle, (SAVE_GAME_V38*) serializeGame); } #define TEMP_DROID_MAXPROGS 3 @@ -2208,7 +2241,6 @@ static BOOL loadSaveResearchV(char *pFileData, UDWORD filesize, UDWORD numRecord static BOOL writeResearchFile(char *pFileName); static BOOL loadSaveMessage(char *pFileData, UDWORD filesize, SWORD levelType); -static BOOL loadSaveMessageV(char *pFileData, UDWORD filesize, UDWORD numMessages, UDWORD version, SWORD levelType); static BOOL loadSaveMessage36(char *pFileData, UDWORD filesize, UDWORD numMessages, UDWORD version, SWORD levelType); static BOOL writeMessageFile(char *pFileName); @@ -2369,6 +2401,7 @@ BOOL loadGame(const char *pGameToLoad, BOOL keepObjects, BOOL freeMem, BOOL User //clear all the messages? apsProxDisp[player] = NULL; apsSensorList[0] = NULL; + apsOilList[0] = NULL; } initFactoryNumFlag(); } @@ -2384,6 +2417,8 @@ BOOL loadGame(const char *pGameToLoad, BOOL keepObjects, BOOL freeMem, BOOL User mission.apsFeatureLists[player] = NULL; mission.apsFlagPosLists[player] = NULL; } + mission.apsOilList[0] = NULL; + mission.apsSensorList[0] = NULL; //JPS 25 feb //initialise upgrades @@ -4425,6 +4460,16 @@ bool gameLoadV(PHYSFS_file* fileHandle, unsigned int version) return false; } } + else if (version <= VERSION_37) // versions 35-37 use the same save game format + { + //if (PHYSFS_read(fileHandle, &saveGameData, sizeof(SAVE_GAME_V35), 1) != 1) + if (!deserializeSaveGameV35Data(fileHandle, (SAVE_GAME_V35*) &saveGameData)) + { + debug(LOG_ERROR, "gameLoadV: error while reading file (with version number %u): %s", version, PHYSFS_getLastError()); + + return false; + } + } else if (version <= CURRENT_VERSION_NUM) { if (!deserializeSaveGameData(fileHandle, &saveGameData)) @@ -4449,6 +4494,11 @@ bool gameLoadV(PHYSFS_file* fileHandle, unsigned int version) debug(LOG_ERROR, "Skirmish savegames of version %u are not supported in this release.", version); return false; } + /* Test mod list */ + if (version >= VERSION_38) + { + setOverrideMods(saveGameData.modList); + } // All savegames from version 34 or before are little endian so swap them. All // from version 35, and onward, are already swapped to the native byte-order @@ -4967,6 +5017,9 @@ static bool writeGameFile(const char* fileName, SDWORD saveType) strcpy(saveGame.sPlayerName[i], getPlayerName(i)); } + //version 38 + sstrcpy(saveGame.modList, getModList()); + status = serializeSaveGameData(fileHandle, &saveGame); // Close the file @@ -5509,11 +5562,11 @@ static void SaveDroidMoveControl(SAVE_DROID * const psSaveDroid, DROID const * c psSaveDroid->sMove.targetY = PHYSFS_swapSLE32(psDroid->sMove.targetY); // Little endian floats - psSaveDroid->sMove.fx = PHYSFS_swapSLE32(psDroid->sMove.fx); - psSaveDroid->sMove.fy = PHYSFS_swapSLE32(psDroid->sMove.fy); + psSaveDroid->sMove.fx = 0; + psSaveDroid->sMove.fy = 0; psSaveDroid->sMove.speed = PHYSFS_swapSLE32(psDroid->sMove.speed); psSaveDroid->sMove.moveDir = PHYSFS_swapSLE32(UNDEG(psDroid->sMove.moveDir)); - psSaveDroid->sMove.fz = PHYSFS_swapSLE32(psDroid->sMove.fz); + psSaveDroid->sMove.fz = 0; // Little endian SWORDs psSaveDroid->sMove.boundX = PHYSFS_swapSLE16(psDroid->sMove.boundX); @@ -5581,21 +5634,8 @@ static void LoadDroidMoveControl(DROID * const psDroid, SAVE_DROID const * const psDroid->sMove.targetY = PHYSFS_swapSLE32(psSaveDroid->sMove.targetY); // Little endian floats - psDroid->sMove.fx = PHYSFS_swapSLE32(psSaveDroid->sMove.fx); - psDroid->sMove.fy = PHYSFS_swapSLE32(psSaveDroid->sMove.fy); psDroid->sMove.speed = PHYSFS_swapSLE32(psSaveDroid->sMove.speed); psDroid->sMove.moveDir = DEG(PHYSFS_swapSLE32(psSaveDroid->sMove.moveDir)); - psDroid->sMove.fz = PHYSFS_swapSLE32(psSaveDroid->sMove.fz); - - // Hack to fix bad droids in savegames - if (!droidOnMap(psDroid)) - { - psDroid->sMove.fx = 0; - psDroid->sMove.fy = 0; - psDroid->sMove.fz = 0; - debug(LOG_ERROR, "%s had bad movement coordinates - fixed!", psDroid->aName); - } - ASSERT(droidOnMap(psDroid), "loaded droid standing or moving off the map"); // Little endian SWORDs psDroid->sMove.boundX = PHYSFS_swapSLE16(psSaveDroid->sMove.boundX); @@ -10179,10 +10219,8 @@ BOOL loadSaveMessage(char *pFileData, UDWORD filesize, SWORD levelType) /* Check the file version */ if(psHeader->version <= VERSION_35) { - if (!loadSaveMessageV(pFileData, filesize, psHeader->quantity, psHeader->version, levelType)) - { - return false; - } + debug(LOG_ERROR, "Unsupported message save format %d", (int)psHeader->version); + return false; } else { @@ -10194,150 +10232,30 @@ BOOL loadSaveMessage(char *pFileData, UDWORD filesize, SWORD levelType) return true; } -// ----------------------------------------------------------------------------------------- -BOOL loadSaveMessageV(char *pFileData, UDWORD filesize, UDWORD numMessages, UDWORD version, SWORD levelType) -{ - SAVE_MESSAGE *psSaveMessage; - MESSAGE *psMessage; - VIEWDATA *psViewData = NULL; - UDWORD i, height; - - //clear any messages put in during level loads - //freeMessages(); - - //only clear the messages if its a mid save game - if (gameType == GTYPE_SAVE_MIDMISSION) - { - freeMessages(); - } - else if (gameType == GTYPE_SAVE_START) - { - //if we're loading in a CamStart or a CamChange then we're not interested in any saved messages - if (levelType == LDS_CAMSTART || levelType == LDS_CAMCHANGE) - { - return true; - } - - } - - //check file - if ((sizeof(SAVE_MESSAGE) * numMessages + MESSAGE_HEADER_SIZE) > - filesize) - { - debug( LOG_ERROR, "loadSaveMessage: unexpected end of file" ); - - return false; - } - - // Load the data - for (i = 0; i < numMessages; i++, pFileData += sizeof(SAVE_MESSAGE)) - { - psSaveMessage = (SAVE_MESSAGE *) pFileData; - - /* SAVE_MESSAGE */ - endian_sdword((SDWORD*)&psSaveMessage->type); /* FIXME: enum may not be this type! */ - endian_udword(&psSaveMessage->objId); - endian_udword(&psSaveMessage->player); - - if (psSaveMessage->type == MSG_PROXIMITY) - { - //only load proximity if a mid-mission save game - if (gameType == GTYPE_SAVE_MIDMISSION) - { - if (psSaveMessage->bObj) - { - //proximity object so create get the obj from saved idy - psMessage = addMessage(psSaveMessage->type, true, psSaveMessage->player); - if (psMessage) - { - psMessage->pViewData = (MSG_VIEWDATA *)getBaseObjFromId(psSaveMessage->objId); - } - } - else - { - //proximity position so get viewdata pointer from the name - psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); - if (psMessage) - { - psViewData = (VIEWDATA *)getViewData(psSaveMessage->name); - if (psViewData == NULL) - { - //skip this message - continue; - } - psMessage->pViewData = (MSG_VIEWDATA *)psViewData; - } - //check the z value is at least the height of the terrain - height = map_Height(((VIEW_PROXIMITY *)psViewData->pData)->x, - ((VIEW_PROXIMITY *)psViewData->pData)->y); - if (((VIEW_PROXIMITY *)psViewData->pData)->z < height) - { - ((VIEW_PROXIMITY *)psViewData->pData)->z = height; - } - } - } - } - else - { - //only load Campaign/Mission if a mid-mission save game - if (psSaveMessage->type == MSG_CAMPAIGN || psSaveMessage->type == MSG_MISSION) - { - if (gameType == GTYPE_SAVE_MIDMISSION) - { - // Research message // Campaign message // Mission Report messages - psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); - if (psMessage) - { - psMessage->pViewData = (MSG_VIEWDATA *)getViewData(psSaveMessage->name); - } - } - } - else - { - // Research message - psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); - if (psMessage) - { - psMessage->pViewData = (MSG_VIEWDATA *)getViewData(psSaveMessage->name); - } - } - } - } - - return true; -} - BOOL loadSaveMessage36(char *pFileData, UDWORD filesize, UDWORD numMessages, UDWORD version, SWORD levelType) { SAVE_MESSAGE_36 *psSaveMessage; MESSAGE *psMessage; - VIEWDATA *psViewData = NULL; UDWORD i, height; - //clear any messages put in during level loads - //freeMessages(); - - //only clear the messages if its a mid save game + // Only clear the messages if its a mid save game if (gameType == GTYPE_SAVE_MIDMISSION) - { - freeMessages(); - } - else if (gameType == GTYPE_SAVE_START) - { - //if we're loading in a CamStart or a CamChange then we're not interested in any saved messages - if (levelType == LDS_CAMSTART || levelType == LDS_CAMCHANGE) - { - return true; - } - - } + { + freeMessages(); + } + else if (gameType == GTYPE_SAVE_START) + { + // If we are loading in a CamStart or a CamChange then we are not interested in any saved messages + if (levelType == LDS_CAMSTART || levelType == LDS_CAMCHANGE) + { + return true; + } + } //check file - if ((sizeof(SAVE_MESSAGE_36) * numMessages + MESSAGE_HEADER_SIZE) > - filesize) + if ((sizeof(SAVE_MESSAGE_36) * numMessages + MESSAGE_HEADER_SIZE) > filesize) { - debug( LOG_ERROR, "loadSaveMessage: unexpected end of file" ); - + debug(LOG_ERROR, "loadSaveMessage: unexpected end of file"); return false; } @@ -10354,28 +10272,35 @@ BOOL loadSaveMessage36(char *pFileData, UDWORD filesize, UDWORD numMessages, UDW if (psSaveMessage->type == MSG_PROXIMITY) { - //only load proximity if a mid-mission save game - if (gameType == GTYPE_SAVE_MIDMISSION) - { - if (psSaveMessage->bObj) - { - //proximity object so create get the obj from saved idy - psMessage = addMessage(psSaveMessage->type, true, psSaveMessage->player); - if (psMessage) - { - psMessage->pViewData = (MSG_VIEWDATA *)getBaseObjFromId(psSaveMessage->objId); - } - } - else - { - //proximity position so get viewdata pointer from the name + //only load proximity if a mid-mission save game + if (gameType == GTYPE_SAVE_MIDMISSION) + { + if (psSaveMessage->bObj) + { + // Proximity object so create get the obj from saved idy + psMessage = addMessage(psSaveMessage->type, true, psSaveMessage->player); + if (psMessage) + { + psMessage->pViewData = (MSG_VIEWDATA *)getBaseObjFromId(psSaveMessage->objId); + } + else + { + debug(LOG_ERROR, "Proximity object could not be created (type=%d, player=%d)", + (int)psSaveMessage->type, (int)psSaveMessage->player); + } + } + else + { + VIEWDATA *psViewData = NULL; + + // Proximity position so get viewdata pointer from the name psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); if (psMessage) - { - if(psSaveMessage->dataType == MSG_DATA_BEACON) + { + if (psSaveMessage->dataType == MSG_DATA_BEACON) { - UDWORD locX,locY; + UDWORD locX, locY; SDWORD sender; endian_udword(&psSaveMessage->locX); @@ -10386,53 +10311,72 @@ BOOL loadSaveMessage36(char *pFileData, UDWORD filesize, UDWORD numMessages, UDW sender = psSaveMessage->sender; psViewData = CreateBeaconViewData(sender, locX, locY); + if (psViewData == NULL) + { + // Skip this message + debug(LOG_ERROR, "Failed to create view data for beacon - skipping"); + removeMessage(psMessage, psSaveMessage->player); + continue; + } + } + else if (psSaveMessage->name[0] != '\0') + { + psViewData = (VIEWDATA *)getViewData(psSaveMessage->name); + if (psViewData == NULL) + { + // Skip this message + debug(LOG_ERROR, "Failed to find view data for proximity position - skipping"); + removeMessage(psMessage, psSaveMessage->player); + continue; + } } else { - psViewData = (VIEWDATA *)getViewData(psSaveMessage->name); + debug(LOG_ERROR, "Proximity position with empty name skipped"); + removeMessage(psMessage, psSaveMessage->player); + continue; } - if (psViewData == NULL) - { - //skip this message - continue; - } - psMessage->pViewData = (MSG_VIEWDATA *)psViewData; - } - //check the z value is at least the height of the terrain - height = map_Height(((VIEW_PROXIMITY *)psViewData->pData)->x, - ((VIEW_PROXIMITY *)psViewData->pData)->y); - if (((VIEW_PROXIMITY *)psViewData->pData)->z < height) - { - ((VIEW_PROXIMITY *)psViewData->pData)->z = height; - } - } - } + psMessage->pViewData = (MSG_VIEWDATA *)psViewData; + // Check the z value is at least the height of the terrain + height = map_Height(((VIEW_PROXIMITY *)psViewData->pData)->x, ((VIEW_PROXIMITY *)psViewData->pData)->y); + if (((VIEW_PROXIMITY *)psViewData->pData)->z < height) + { + ((VIEW_PROXIMITY *)psViewData->pData)->z = height; + } + } + else + { + debug(LOG_ERROR, "Proximity position could not be created (type=%d, player=%d)", + (int)psSaveMessage->type, (int)psSaveMessage->player); + } + } + } } else { - //only load Campaign/Mission if a mid-mission save game - if (psSaveMessage->type == MSG_CAMPAIGN || psSaveMessage->type == MSG_MISSION) - { - if (gameType == GTYPE_SAVE_MIDMISSION) - { - // Research message // Campaign message // Mission Report messages - psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); - if (psMessage) - { - psMessage->pViewData = (MSG_VIEWDATA *)getViewData(psSaveMessage->name); - } - } - } - else - { - // Research message - psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); - if (psMessage) - { - psMessage->pViewData = (MSG_VIEWDATA *)getViewData(psSaveMessage->name); - } - } + // Only load Campaign/Mission if a mid-mission save game + if (psSaveMessage->type == MSG_CAMPAIGN || psSaveMessage->type == MSG_MISSION) + { + if (gameType == GTYPE_SAVE_MIDMISSION) + { + // Research message // Campaign message // Mission Report messages + psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); + if (psMessage) + { + psMessage->pViewData = (MSG_VIEWDATA *)getViewData(psSaveMessage->name); + } + } + } + else + { + // Research message + psMessage = addMessage(psSaveMessage->type, false, psSaveMessage->player); + if (psMessage) + { + psMessage->pViewData = (MSG_VIEWDATA *)getViewData(psSaveMessage->name); + } + } } } @@ -11555,14 +11499,13 @@ static BOOL getNameFromComp(UDWORD compType, char *pDest, UDWORD compIndex) /** * \param[out] backDropSprite The premade map texture. * \param scale Scale of the map texture. - * \param offX,offY X and Y offset for map * \param[out] playeridpos Will contain the position on the map where the player's HQ are located. * * Reads the current map and colours the map preview for any structures * present. Additionally we load the player's HQ location into playeridpos so * we know the player's starting location. */ -BOOL plotStructurePreview16(char *backDropSprite, UBYTE scale, UDWORD offX, UDWORD offY,Vector2i playeridpos[]) +BOOL plotStructurePreview16(char *backDropSprite, Vector2i playeridpos[]) { SAVE_STRUCTURE sSave; // close eyes now. SAVE_STRUCTURE *psSaveStructure = &sSave; // assumes save_struct is larger than all previous ones... @@ -11576,7 +11519,7 @@ BOOL plotStructurePreview16(char *backDropSprite, UBYTE scale, UDWORD offX, UDWO STRUCT_SAVEHEADER *psHeader; char aFileName[256]; - UDWORD xx,yy,x,y,count,fileSize,sizeOfSaveStruture; + UDWORD xx,yy,count,fileSize,sizeOfSaveStruture; UDWORD playerid =0; char *pFileData = NULL; LEVEL_DATASET *psLevel; @@ -11991,15 +11934,9 @@ BOOL plotStructurePreview16(char *backDropSprite, UBYTE scale, UDWORD offX, UDWO } // and now we blit the color to the texture - for(x = (xx*scale);x < (xx*scale)+scale ;x++) - { - for(y = (yy*scale);y< (yy*scale)+scale ;y++) - { - backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX)] = color.byte.r; - backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX) + 1] = color.byte.g; - backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX) + 2] = color.byte.b; - } - } + backDropSprite[3 * ((yy * BACKDROP_HACK_WIDTH) + xx)] = color.byte.r; + backDropSprite[3 * ((yy * BACKDROP_HACK_WIDTH) + xx) + 1] = color.byte.g; + backDropSprite[3 * ((yy * BACKDROP_HACK_WIDTH) + xx) + 2] = color.byte.b; } // NOTE: would do fallback if FBO is not available here. diff --git a/src/game.h b/src/game.h index 9f1ac5a83..8031377a2 100644 --- a/src/game.h +++ b/src/game.h @@ -78,10 +78,11 @@ extern "C" #define VERSION_34 34 //saves AI names for multiplayer (.gam file) #define VERSION_35 35 //uses the (de)serialization API for saving/loading games and is big-endian instead of little-endian #define VERSION_36 36 //saves beacon properly -#define VERSION_37 37 //dpid changes; this had better be the last version +#define VERSION_37 37 //dpid changes; this had better be the last version +#define VERSION_38 38 //mod list! -#define CURRENT_VERSION_NUM VERSION_37 +#define CURRENT_VERSION_NUM VERSION_38 //used in the loadGame #define KEEPOBJECTS true @@ -144,7 +145,7 @@ extern void game_SetValidityKey(UDWORD keys); /*returns the current type of save game being loaded*/ extern UDWORD getSaveGameType(void); -BOOL plotStructurePreview16(char *backDropSprite, UBYTE scale, UDWORD offX, UDWORD offY, Vector2i playeridpos[]); +BOOL plotStructurePreview16(char *backDropSprite, Vector2i playeridpos[]); #ifdef __cplusplus } diff --git a/src/hci.c b/src/hci.c index d2c14e75f..91a690a1e 100644 --- a/src/hci.c +++ b/src/hci.c @@ -411,10 +411,6 @@ static BASE_OBJECT *apsPreviousObj[IOBJ_MAX]; /* The jump position for each object on the base bar */ static Vector2i asJumpPos[IOBJ_MAX]; -// whether to reopen the build menu -// chnaged back to pre Mark Donald setting at Jim's request - AlexM -static BOOL bReopenBuildMenu = false; - /***************************************************************************************/ /* Function Prototypes */ static BOOL intUpdateObject(BASE_OBJECT *psObjects, BASE_OBJECT *psSelected,BOOL bForceStats); @@ -696,12 +692,13 @@ BOOL intInitialise(void) void intReopenBuild(BOOL reopen) { - bReopenBuildMenu = reopen; + // obsolete } BOOL intGetReopenBuild(void) { - return bReopenBuildMenu; + // obsolete + return false; } //initialise all the previous obj - particularly useful for when go Off world! @@ -2033,19 +2030,9 @@ INT_RETVAL intRunWidgets(void) } } - // put the build menu up again after the structure position has been chosen - //or ctrl/shift is down and we're queing the build orders -#ifdef DISABLE_BUILD_QUEUE - if (bReopenBuildMenu) -#else - if (bReopenBuildMenu || ctrlShiftDown()) -#endif + if (!quickQueueMode) { - intAddBuild(NULL); - } - else - { - // Clear the object screen + // Clear the object screen, only if we aren't immediately building something else intResetScreen(false); } @@ -2093,22 +2080,15 @@ INT_RETVAL intRunWidgets(void) // DeSelectDroid((DROID*)psObjSelected); // } - // put the build menu up again after the structure position has been chosen - // or ctrl/shift is down and we're queuing the build orders -#ifdef DISABLE_BUILD_QUEUE - if (bReopenBuildMenu) + if (!quickQueueMode) { - intAddBuild(NULL); - } - else - { - // Clear the object screen + // Clear the object screen, only if we aren't immediately building something else intResetScreen(false); } -#else - // Clear the object screen + } + if (buildState == BUILD3D_NONE) + { intResetScreen(false); -#endif } } else if (intMode == INT_EDITSTAT && editPosMode == IED_POS) @@ -2214,6 +2194,11 @@ INT_RETVAL intRunWidgets(void) // Send a text message to all players, notifying them of // the fact that we're cheating ourselves a new droid. sasprintf((char**)&msg, _("Player %u is cheating (debug menu) him/herself a new droid: %s."), selectedPlayer, psDroid->aName); + + psScrCBNewDroid = psDroid; + psScrCBNewDroidFact = NULL; + eventFireCallbackTrigger((TRIGGER_TYPE)CALL_NEWDROID); // notify scripts so it will get assigned jobs + psScrCBNewDroid = NULL; } else { @@ -2224,7 +2209,10 @@ INT_RETVAL intRunWidgets(void) sendTextMessage(msg, true); Cheated = true; } - editPosMode = IED_NOPOS; + if (!quickQueueMode) + { + editPosMode = IED_NOPOS; + } } } } @@ -3885,9 +3873,7 @@ BOOL intAddPower(void) sBarInit.y = (SWORD)POW_Y; sBarInit.width = POW_BARWIDTH; sBarInit.height = iV_GetImageHeight(IntImages,IMAGE_PBAR_EMPTY); - sBarInit.sCol.byte.r = POW_CLICKBARMAJORRED; - sBarInit.sCol.byte.g = POW_CLICKBARMAJORGREEN; - sBarInit.sCol.byte.b = POW_CLICKBARMAJORBLUE; + sBarInit.sCol = WZCOL_POWER_BAR; sBarInit.pDisplay = intDisplayPowerBar; sBarInit.iRange = POWERBAR_SCALE; @@ -4576,12 +4562,8 @@ static BOOL intAddObjectWindow(BASE_OBJECT *psObjects, BASE_OBJECT *psSelected,B sBarInit.width = STAT_PROGBARWIDTH; sBarInit.height = STAT_PROGBARHEIGHT; sBarInit.size = 0; - sBarInit.sCol.byte.r = STAT_PROGBARMAJORRED; - sBarInit.sCol.byte.g = STAT_PROGBARMAJORGREEN; - sBarInit.sCol.byte.b = STAT_PROGBARMAJORBLUE; - sBarInit.sMinorCol.byte.r = STAT_PROGBARMINORRED; - sBarInit.sMinorCol.byte.g = STAT_PROGBARMINORGREEN; - sBarInit.sMinorCol.byte.b = STAT_PROGBARMINORBLUE; + sBarInit.sCol = WZCOL_ACTION_PROGRESS_BAR_MAJOR; + sBarInit.sMinorCol = WZCOL_ACTION_PROGRESS_BAR_MINOR; sBarInit.pTip = _("Progress Bar"); //object output bar ie manuf power o/p, research power o/p @@ -4846,17 +4828,11 @@ static BOOL intAddObjectWindow(BASE_OBJECT *psObjects, BASE_OBJECT *psSelected,B widgSetButtonState(psWScreen, sBFormInit2.id, WBUT_CLICKLOCK); } - - - if ( psObj->type != OBJ_DROID || - (((DROID *)psObj)->droidType == DROID_CONSTRUCT || - ((DROID *)psObj)->droidType == DROID_CYBORG_CONSTRUCT)) + if (psObj->type != OBJ_DROID || (((DROID *)psObj)->droidType == DROID_CONSTRUCT || ((DROID *)psObj)->droidType == DROID_CYBORG_CONSTRUCT)) { // Set the colour for the production run size text. - widgSetColour(psWScreen, sBFormInit2.id, WCOL_TEXT, - STAT_TEXTRED,STAT_TEXTGREEN,STAT_TEXTBLUE); - widgSetColour(psWScreen, sBFormInit2.id, WCOL_BKGRND, - STAT_PROGBARTROUGHRED,STAT_PROGBARTROUGHGREEN,STAT_PROGBARTROUGHBLUE); + widgSetColour(psWScreen, sBFormInit2.id, WCOL_TEXT, WZCOL_ACTION_PRODUCTION_RUN_TEXT); + widgSetColour(psWScreen, sBFormInit2.id, WCOL_BKGRND, WZCOL_ACTION_PRODUCTION_RUN_BACKGROUND); } // Add command droid bits @@ -5349,12 +5325,8 @@ static void intSetStats(UDWORD id, BASE_STATS *psStats) sBarInit.width = STAT_PROGBARWIDTH; sBarInit.height = STAT_PROGBARHEIGHT; sBarInit.size = 0; - sBarInit.sCol.byte.r = STAT_PROGBARMAJORRED; - sBarInit.sCol.byte.g = STAT_PROGBARMAJORGREEN; - sBarInit.sCol.byte.b = STAT_PROGBARMAJORBLUE; - sBarInit.sMinorCol.byte.r = STAT_PROGBARMINORRED; - sBarInit.sMinorCol.byte.g = STAT_PROGBARMINORGREEN; - sBarInit.sMinorCol.byte.b = STAT_PROGBARMINORBLUE; + sBarInit.sCol = WZCOL_ACTION_PROGRESS_BAR_MAJOR; + sBarInit.sMinorCol = WZCOL_ACTION_PROGRESS_BAR_MINOR; sBarInit.iRange = GAME_TICKS_PER_SEC; // Setup widget update callback and object pointer so we can update the progress bar. sBarInit.pCallback = intUpdateProgressBar; @@ -5426,14 +5398,10 @@ static void intSetStats(UDWORD id, BASE_STATS *psStats) sFormInit.pDisplay = intDisplayStatusButton; - widgAddForm(psWScreen, &sFormInit); // Set the colour for the production run size text. - widgSetColour(psWScreen, sFormInit.id, WCOL_TEXT, - STAT_TEXTRED,STAT_TEXTGREEN,STAT_TEXTBLUE); - widgSetColour(psWScreen, sFormInit.id, WCOL_BKGRND, - STAT_PROGBARTROUGHRED,STAT_PROGBARTROUGHGREEN,STAT_PROGBARTROUGHBLUE); - + widgSetColour(psWScreen, sFormInit.id, WCOL_TEXT, WZCOL_ACTION_PRODUCTION_RUN_TEXT); + widgSetColour(psWScreen, sFormInit.id, WCOL_BKGRND, WZCOL_ACTION_PRODUCTION_RUN_BACKGROUND); widgAddLabel(psWScreen, &sLabInit); widgAddBarGraph(psWScreen, &sBarInit); @@ -5813,12 +5781,8 @@ if (numForms(numStats, butPerForm)> MAX_TAB_SMALL_SHOWN) //only want these butto sBarInit.width = STAT_PROGBARWIDTH; sBarInit.height = STAT_PROGBARHEIGHT; sBarInit.size = 50; - sBarInit.sCol.byte.r = STAT_PROGBARMAJORRED; - sBarInit.sCol.byte.g = STAT_PROGBARMAJORGREEN; - sBarInit.sCol.byte.b = STAT_PROGBARMAJORBLUE; - sBarInit.sMinorCol.byte.r = STAT_PROGBARMINORRED; - sBarInit.sMinorCol.byte.g = STAT_PROGBARMINORGREEN; - sBarInit.sMinorCol.byte.b = STAT_PROGBARMINORBLUE; + sBarInit.sCol = WZCOL_ACTION_PROGRESS_BAR_MAJOR; + sBarInit.sMinorCol = WZCOL_ACTION_PROGRESS_BAR_MINOR; //sBarInit.pTip = _("Power Usage"); statID = 0; @@ -5857,7 +5821,7 @@ if (numForms(numStats, butPerForm)> MAX_TAB_SMALL_SHOWN) //only want these butto { return false; } - widgSetColour(psWScreen, sBFormInit.id, WCOL_BKGRND, 0,0,0); + widgSetColour(psWScreen, sBFormInit.id, WCOL_BKGRND, WZCOL_BLACK); //Stat = ppsStatsList[i]; if (Stat->ref >= REF_STRUCTURE_START && diff --git a/src/hci.h b/src/hci.h index a2c1c2fba..83e1c5e3f 100644 --- a/src/hci.h +++ b/src/hci.h @@ -155,9 +155,6 @@ extern "C" #define POW_GAPX 5 #define POW_GAPY 2 -#define POW_CLICKBARMAJORRED 0xcc -#define POW_CLICKBARMAJORGREEN 0 -#define POW_CLICKBARMAJORBLUE 0 //tab details #define OBJ_TABWIDTH 26 @@ -230,19 +227,6 @@ extern "C" #define STAT_POWERBARX 3 #define STAT_POWERBARY (OBJ_BUTHEIGHT-STAT_PROGBARHEIGHT-6) -#define STAT_PROGBARMAJORRED 255//0xcc -#define STAT_PROGBARMAJORGREEN 235//0 -#define STAT_PROGBARMAJORBLUE 19//0 -#define STAT_PROGBARMINORRED 0x55 -#define STAT_PROGBARMINORGREEN 0 -#define STAT_PROGBARMINORBLUE 0 -#define STAT_PROGBARTROUGHRED 0 -#define STAT_PROGBARTROUGHGREEN 32 -#define STAT_PROGBARTROUGHBLUE 64 -#define STAT_TEXTRED 255 -#define STAT_TEXTGREEN 255 -#define STAT_TEXTBLUE 0 - /* maximum array sizes */ #define MAXSTRUCTURES 200 //bumped up from 80. NOTE: was used for max # in build menus. #define MAXRESEARCH 200 //was 80 topic displayed " " diff --git a/src/init.c b/src/init.c index 66258adb7..ba76e3ae0 100644 --- a/src/init.c +++ b/src/init.c @@ -234,11 +234,15 @@ BOOL rebuildSearchPath( searchPathMode mode, BOOL force ) wzSearchPath * curSearchPath = searchPathRegistry; char tmpstr[PATH_MAX] = "\0"; - if ( mode != current_mode || force ) + if (mode != current_mode || force || + (use_override_mods && strcmp(override_mod_list, getModList()))) { - current_mode = mode; + if (mode != mod_clean) + { + rebuildSearchPath( mod_clean, false ); + } - rebuildSearchPath( mod_clean, false ); + current_mode = mode; // Start at the lowest priority while( curSearchPath->lowerPriority ) @@ -258,9 +262,10 @@ BOOL rebuildSearchPath( searchPathMode mode, BOOL force ) // Remove maps and mods removeSubdirs( curSearchPath->path, "maps", NULL ); removeSubdirs( curSearchPath->path, "mods/music", NULL ); - removeSubdirs( curSearchPath->path, "mods/global", global_mods ); - removeSubdirs( curSearchPath->path, "mods/campaign", campaign_mods ); - removeSubdirs( curSearchPath->path, "mods/multiplay", multiplay_mods ); + removeSubdirs( curSearchPath->path, "mods/global", NULL ); + removeSubdirs( curSearchPath->path, "mods/campaign", NULL ); + removeSubdirs( curSearchPath->path, "mods/multiplay", NULL ); + removeSubdirs( curSearchPath->path, "mods/autoload", NULL ); // Remove multiplay patches sstrcpy(tmpstr, curSearchPath->path); @@ -301,10 +306,10 @@ BOOL rebuildSearchPath( searchPathMode mode, BOOL force ) PHYSFS_addToSearchPath( curSearchPath->path, PHYSFS_APPEND ); addSubdirs( curSearchPath->path, "mods/music", PHYSFS_APPEND, NULL, false ); - addSubdirs( curSearchPath->path, "mods/global", PHYSFS_APPEND, global_mods, true ); - addSubdirs( curSearchPath->path, "mods", PHYSFS_APPEND, global_mods, true ); - addSubdirs( curSearchPath->path, "mods/autoload", PHYSFS_APPEND, NULL, true ); - addSubdirs( curSearchPath->path, "mods/campaign", PHYSFS_APPEND, campaign_mods, true ); + addSubdirs( curSearchPath->path, "mods/global", PHYSFS_APPEND, use_override_mods?override_mods:global_mods, true ); + addSubdirs( curSearchPath->path, "mods", PHYSFS_APPEND, use_override_mods?override_mods:global_mods, true ); + addSubdirs( curSearchPath->path, "mods/autoload", PHYSFS_APPEND, use_override_mods?override_mods:NULL, true ); + addSubdirs( curSearchPath->path, "mods/campaign", PHYSFS_APPEND, use_override_mods?override_mods:campaign_mods, true ); if (!PHYSFS_removeFromSearchPath( curSearchPath->path )) { info("* Failed to remove path %s again", curSearchPath->path); @@ -342,10 +347,10 @@ BOOL rebuildSearchPath( searchPathMode mode, BOOL force ) PHYSFS_addToSearchPath( curSearchPath->path, PHYSFS_APPEND ); addSubdirs( curSearchPath->path, "maps", PHYSFS_APPEND, NULL, false ); addSubdirs( curSearchPath->path, "mods/music", PHYSFS_APPEND, NULL, false ); - addSubdirs( curSearchPath->path, "mods/global", PHYSFS_APPEND, global_mods, true ); - addSubdirs( curSearchPath->path, "mods", PHYSFS_APPEND, global_mods, true ); - addSubdirs( curSearchPath->path, "mods/autoload", PHYSFS_APPEND, NULL, true ); - addSubdirs( curSearchPath->path, "mods/multiplay", PHYSFS_APPEND, multiplay_mods, true ); + addSubdirs( curSearchPath->path, "mods/global", PHYSFS_APPEND, use_override_mods?override_mods:global_mods, true ); + addSubdirs( curSearchPath->path, "mods", PHYSFS_APPEND, use_override_mods?override_mods:global_mods, true ); + addSubdirs( curSearchPath->path, "mods/autoload", PHYSFS_APPEND, use_override_mods?override_mods:NULL, true ); + addSubdirs( curSearchPath->path, "mods/multiplay", PHYSFS_APPEND, use_override_mods?override_mods:multiplay_mods, true ); PHYSFS_removeFromSearchPath( curSearchPath->path ); // Add multiplay patches @@ -379,6 +384,15 @@ BOOL rebuildSearchPath( searchPathMode mode, BOOL force ) debug(LOG_ERROR, "Can't switch to unknown mods %i", mode); return false; } + if (use_override_mods && mode != mod_clean) + { + if (strcmp(getModList(),override_mod_list)) + { + debug(LOG_POPUP, _("The required mod could not be loaded: %s\n\nWarzone will try to load the game without it."), override_mod_list); + } + clearOverrideMods(); + current_mode = mod_override; + } // User's home dir must be first so we allways see what we write PHYSFS_removeFromSearchPath(PHYSFS_getWriteDir()); @@ -388,6 +402,11 @@ BOOL rebuildSearchPath( searchPathMode mode, BOOL force ) printSearchPath(); #endif // DEBUG } + else if (use_override_mods) + { + // override mods are already the same as current mods, so no need to do anything + clearOverrideMods(); + } return true; } diff --git a/src/init.h b/src/init.h index 5cd5a33cf..3f964122d 100644 --- a/src/init.h +++ b/src/init.h @@ -59,7 +59,7 @@ typedef struct _wzSearchPath struct _wzSearchPath * higherPriority, * lowerPriority; } wzSearchPath; -typedef enum { mod_clean=0, mod_campaign=1, mod_multiplay=2 } searchPathMode; +typedef enum { mod_clean=0, mod_campaign=1, mod_multiplay=2, mod_override=3 } searchPathMode; void cleanSearchPath( void ); void registerSearchPath( const char path[], unsigned int priority ); diff --git a/src/intfac.h b/src/intfac.h index 0579b7c6d..aeea8612d 100644 --- a/src/intfac.h +++ b/src/intfac.h @@ -258,21 +258,6 @@ enum { IMAGE_ASCII124, IMAGE_ASCII125, IMAGE_ASCII126, - IMAGE_CURSOR_ATTACK, - IMAGE_CURSOR_SELECT, - IMAGE_CURSOR_LOCKON, - IMAGE_CURSOR_ECM, - IMAGE_CURSOR_DEFAULT, - IMAGE_CURSOR_BUILD, - IMAGE_CURSOR_MOVE, - IMAGE_CURSOR_GUARD, - IMAGE_CURSOR_EMBARK, - IMAGE_CURSOR_BRIDGE, - IMAGE_CURSOR_ATTACH, - IMAGE_CURSOR_FIX, - IMAGE_CURSOR_REPAIR, - IMAGE_CURSOR_PICKUP, - IMAGE_CURSOR_NOTPOS, IMAGE_SIDETAB, IMAGE_SIDETABHI, IMAGE_SIDETABDOWN, @@ -378,7 +363,6 @@ enum { IMAGE_DES_EDITBOXRIGHT, IMAGE_DES_EDITBOXMIDH, IMAGE_DES_EDITBOXRIGHTH, - IMAGE_CURSOR_DEST, IMAGE_RES_CYBORGTECH, IMAGE_LOOP_UP, IMAGE_LOOP_DOWN, @@ -549,7 +533,27 @@ enum { IMAGE_WAITING_LO, IMAGE_WAITING_HI, IMAGE_DESYNC_LO, - IMAGE_DESYNC_HI + IMAGE_DESYNC_HI, + IMAGE_CURSOR_EMBARK, + IMAGE_CURSOR_DEST, + IMAGE_CURSOR_DEFAULT, + IMAGE_CURSOR_BUILD, + IMAGE_CURSOR_SCOUT, + IMAGE_CURSOR_DISEMBARK, + IMAGE_CURSOR_ATTACK, + IMAGE_CURSOR_GUARD, + IMAGE_CURSOR_FIX, + IMAGE_CURSOR_SELECT, + IMAGE_CURSOR_REPAIR, + IMAGE_CURSOR_PICKUP, + IMAGE_CURSOR_NOTPOS, + IMAGE_CURSOR_MOVE, + IMAGE_CURSOR_LOCKON, + IMAGE_CURSOR_ECM, + IMAGE_CURSOR_ATTACH, + IMAGE_CURSOR_BRIDGE, + IMAGE_CURSOR_BOMB, + IMAGE_SLIDER_AI }; #ifdef __cplusplus diff --git a/src/intimage.c b/src/intimage.c index 7cf696708..b5a3bf544 100644 --- a/src/intimage.c +++ b/src/intimage.c @@ -85,14 +85,16 @@ static const uint16_t MousePointerImageIDs[CURSOR_MAX] = IMAGE_CURSOR_DEFAULT, // CURSOR_EDGEOFMAP IMAGE_CURSOR_ATTACH, // CURSOR_ATTACH IMAGE_CURSOR_ATTACK, // CURSOR_ATTACK - IMAGE_CURSOR_DEFAULT, // CURSOR_BOMB + IMAGE_CURSOR_BOMB, // CURSOR_BOMB IMAGE_CURSOR_BRIDGE, // CURSOR_BRIDGE IMAGE_CURSOR_BUILD, // CURSOR_BUILD IMAGE_CURSOR_EMBARK, // CURSOR_EMBARK + IMAGE_CURSOR_DISEMBARK, // CURSOR_DISEMBARK IMAGE_CURSOR_FIX, // CURSOR_FIX IMAGE_CURSOR_GUARD, // CURSOR_GUARD IMAGE_CURSOR_ECM, // CURSOR_JAM IMAGE_CURSOR_LOCKON, // CURSOR_LOCKON + IMAGE_CURSOR_SCOUT, // CURSOR_SCOUT IMAGE_CURSOR_DEFAULT, // CURSOR_MENU IMAGE_CURSOR_MOVE, // CURSOR_MOVE IMAGE_CURSOR_NOTPOS, // CURSOR_NOTPOSSIBLE diff --git a/src/intorder.c b/src/intorder.c index 5f6c120cb..3f6bd71e4 100644 --- a/src/intorder.c +++ b/src/intorder.c @@ -454,7 +454,7 @@ ORDERBUTTONS OrderButtons[NUM_ORDERS]= static UWORD NumSelectedDroids; static DROID *SelectedDroids[MAX_SELECTED_DROIDS]; -static STRUCTURE *psSelectedFactory; +static STRUCTURE *psSelectedFactory = NULL; static UWORD NumAvailableOrders; static AVORDER AvailableOrders[MAX_AVAILABLE_ORDERS]; @@ -598,19 +598,18 @@ static SDWORD GetSecondaryStates(SECONDARY_ORDER sec) state = 0; bFirst = true; - //handle a factory being selected - AB 22/04/99 - if (psSelectedFactory) - { - if (getFactoryState(psSelectedFactory, sec, &currState)) - { - state = currState; - } - } - else //droids - { - for (i=0; itype == OBJ_DROID) - { - Droid = (DROID *)psObj; - psStructure = NULL; - } - else if (psObj->type == OBJ_STRUCTURE) - { - Droid = NULL; - psStructure = (STRUCTURE *)psObj; - psSelectedFactory = psStructure; - } - else - { - ASSERT( false, "_intAddOrder: Invalid object type" ); - Droid = NULL; - psStructure = NULL; - } - } - else - { - Droid = NULL; - psStructure = NULL; - } + if (psObj) + { + if (psObj->type == OBJ_DROID) + { + Droid = (DROID *)psObj; + psStructure = NULL; + } + else if (psObj->type == OBJ_STRUCTURE) + { + Droid = NULL; + psStructure = (STRUCTURE *)psObj; + psSelectedFactory = psStructure; + ASSERT_OR_RETURN(false, StructIsFactory(psSelectedFactory), "Trying to select a %s as a factory!", + objInfo((BASE_OBJECT *)psSelectedFactory)); + } + else + { + ASSERT(false, "Invalid object type"); + Droid = NULL; + psStructure = NULL; + } + } + else + { + Droid = NULL; + psStructure = NULL; + } - - - // intResetScreen(true); setWidgetsStatus(true); NumAvailableOrders = 0; @@ -720,14 +716,13 @@ BOOL intAddOrder(BASE_OBJECT *psObj) SelectedDroids[0] = Droid; NumSelectedDroids = 1; } - //added to accomodate the factories - AB 21/04/99 - else if (psStructure != NULL) - { - if (!BuildStructureOrderList(psStructure)) - { - return false; - } - } + else if (psStructure != NULL) + { + if (!BuildStructureOrderList(psStructure)) + { + return false; + } + } // Otherwise build a list of selected droids. else if(!BuildSelectedDroidList()) { // If no droids selected then see if we were given a specific droid. @@ -739,13 +734,13 @@ BOOL intAddOrder(BASE_OBJECT *psObj) } // Build a list of orders available for the list of selected droids. - if a factory has not been selected - if (psStructure == NULL) - { - if(!BuildDroidOrderList()) - { - // If no orders then return; - return false; - } + if (psStructure == NULL) + { + if(!BuildDroidOrderList()) + { + // If no orders then return; + return false; + } } widgEndScreen(psWScreen); @@ -1031,39 +1026,39 @@ void intRunOrder(void) UDWORD NumSelected = 0; // Check to see if there all dead or unselected. - for(i=0; iselected) { - NumSelected++; -// } - if(SelectedDroids[i]->died) { + NumSelected++; + if (SelectedDroids[i]->died) + { NumDead++; - SelectedDroids[i]=NULL; + SelectedDroids[i] = NULL; } } } // If all dead then remove the screen. if(NumDead == NumSelectedDroids) - { - //might have a factory selected - if (psSelectedFactory == NULL) - { - intRemoveOrder(); - return; - } + { + // might have a factory selected + if (psSelectedFactory == NULL) + { + intRemoveOrder(); + return; + } } // If droids no longer selected then remove screen. if(NumSelected == 0) - { - //might have a factory selected - if (psSelectedFactory == NULL) - { - intRemoveOrder(); - return; - } + { + // might have a factory selected + if (psSelectedFactory == NULL) + { + intRemoveOrder(); + return; + } } } @@ -1086,14 +1081,15 @@ static BOOL SetSecondaryState(SECONDARY_ORDER sec, SECONDARY_STATE State) } } } - //set the Factory settings - if (psSelectedFactory) - { - if (!setFactoryState(psSelectedFactory, sec, State)) - { - return false; - } - } + + // set the Factory settings + if (psSelectedFactory) + { + if (!setFactoryState(psSelectedFactory, sec, State)) + { + return false; + } + } return true; } @@ -1218,8 +1214,6 @@ void intProcessOrder(UDWORD id) // check whether the order list has changed -//works on factories now as well - AB 21/04/99 -//static BOOL CheckDroidOrderList(void) static BOOL CheckObjectOrderList(void) { UWORD OrdIndex; @@ -1227,92 +1221,93 @@ static BOOL CheckObjectOrderList(void) BOOL Found; BOOL Sorted; AVORDER Tmp; - UWORD NumNewOrders; + UWORD NumNewOrders = 0; AVORDER NewAvailableOrders[MAX_AVAILABLE_ORDERS]; - NumNewOrders = 0; + if (psSelectedFactory != NULL) + { + // only valid for Factories (at the moment) + ASSERT_OR_RETURN(false, StructIsFactory(psSelectedFactory), "Selected factory is a %s!", + objInfo((BASE_OBJECT *)psSelectedFactory)); - //added for factories - AB 21/04/99 - if (psSelectedFactory != NULL) - { - //only valid for Factories (at the moment) - if (!StructIsFactory(psSelectedFactory)) - { - ASSERT( false, "CheckObjectOrderList: structure is not a factory" ); - return false; - } + //this can be hard-coded! + NewAvailableOrders[0].OrderIndex = 0;//DSO_ATTACK_RANGE; + NewAvailableOrders[0].RefCount = 1; + NewAvailableOrders[1].OrderIndex = 1;//DSO_REPAIR_LEVEL; + NewAvailableOrders[1].RefCount = 1; + NewAvailableOrders[2].OrderIndex = 2;//DSO_ATTACK_LEVEL; + NewAvailableOrders[2].RefCount = 1; + NewAvailableOrders[3].OrderIndex = 5;//DSO_HALTTYPE; + NewAvailableOrders[3].RefCount = 1; + NumNewOrders = 4; - //this can be hard-coded! - NewAvailableOrders[0].OrderIndex = 0;//DSO_ATTACK_RANGE; - NewAvailableOrders[0].RefCount = 1; - NewAvailableOrders[1].OrderIndex = 1;//DSO_REPAIR_LEVEL; - NewAvailableOrders[1].RefCount = 1; - NewAvailableOrders[2].OrderIndex = 2;//DSO_ATTACK_LEVEL; - NewAvailableOrders[2].RefCount = 1; - NewAvailableOrders[3].OrderIndex = 5;//DSO_HALTTYPE; - NewAvailableOrders[3].RefCount = 1; + if (NumNewOrders != NumAvailableOrders) + { + return false; + } + } + else + { + for(j = 0; j < NumSelectedDroids; j++) + { + for (OrdIndex = 0; OrdIndex < NUM_ORDERS; OrdIndex++) + { + // Is the order available? + if (secondarySupported(SelectedDroids[j], OrderButtons[OrdIndex].Order)) + { + if (NumNewOrders < MAX_AVAILABLE_ORDERS) + { + // Have we already got this order? + Found = false; + for (i = 0; i 1) { - // Sort by Order index, A bubble sort? I know but it's only - // a small list so what the hell. - do { - Sorted = true; - for(i=0; i NewAvailableOrders[i+1].OrderIndex) { - Tmp = NewAvailableOrders[i]; - NewAvailableOrders[i] = NewAvailableOrders[i+1]; - NewAvailableOrders[i+1] = Tmp; - Sorted = false; - } - } - } while(!Sorted); - } - } + if(NumNewOrders > 1) + { + // Sort by Order index, A bubble sort? I know but it's only + // a small list so what the hell. + do { + Sorted = true; + for (i = 0; i NewAvailableOrders[i + 1].OrderIndex) + { + Tmp = NewAvailableOrders[i]; + NewAvailableOrders[i] = NewAvailableOrders[i+1]; + NewAvailableOrders[i+1] = Tmp; + Sorted = false; + } + } + } while(!Sorted); + } + } // now check that all the orders are the same - for (i=0; i< NumNewOrders; i++) + for (i = 0; i< NumNewOrders; i++) { if (NewAvailableOrders[i].OrderIndex != AvailableOrders[i].OrderIndex) { @@ -1409,20 +1404,20 @@ BOOL intRefreshOrder(void) BOOL Ret; NumSelectedDroids = 0; - //check for factory selected first - if (!psSelectedFactory) - { - if (!BuildSelectedDroidList()) - { - // no units selected - quit - intRemoveOrder(); - return true; - } + + // check for factory selected first + if (!psSelectedFactory) + { + if (!BuildSelectedDroidList()) + { + // no units selected - quit + intRemoveOrder(); + return true; + } } // if the orders havn't changed, just reset the state - //if (CheckDroidOrderList()) - if (CheckObjectOrderList()) + if (CheckObjectOrderList()) { Ret = intRefreshOrderButtons(); } @@ -1430,7 +1425,8 @@ BOOL intRefreshOrder(void) { // Refresh it by re-adding it. Ret = intAddOrder(NULL); - if(Ret == false) { + if (Ret == false) + { intMode = INT_NORMAL; } } @@ -1445,23 +1441,22 @@ BOOL intRefreshOrder(void) // void intRemoveOrder(void) { - W_TABFORM *Form; widgDelete(psWScreen, IDORDER_CLOSE); // Start the window close animation. Form = (W_TABFORM*)widgGetFromID(psWScreen,IDORDER_FORM); - if(Form) { + if (Form) + { Form->display = intClosePlainForm; Form->pUserData = NULL; // Used to signal when the close anim has finished. Form->disableChildren = true; ClosingOrder = true; OrderUp = false; NumSelectedDroids = 0; - psSelectedFactory = NULL; - } - + psSelectedFactory = NULL; + } } @@ -1473,31 +1468,9 @@ void intRemoveOrderNoAnim(void) widgDelete(psWScreen, IDORDER_FORM); OrderUp = false; NumSelectedDroids = 0; - psSelectedFactory = NULL; + psSelectedFactory = NULL; } - -//looks thru' the players' list of Structures to see if one is a factory and it is selected -// NOTE: Unused! BOOL factorySelected(void) -BOOL factorySelected(void); -BOOL factorySelected(void) -{ - STRUCTURE *psStruct; - - for (psStruct = apsStructLists[selectedPlayer]; psStruct; psStruct = psStruct->psNext) - { - if (psStruct->selected && StructIsFactory(psStruct)) - { - //found one - set as one to use for the interface - psSelectedFactory = psStruct; - return true; - } - } - //obviously never found a factory - return false; -} - - //new function added to bring up the RMB order form for Factories as well as droids void intAddFactoryOrder(STRUCTURE *psStructure) { diff --git a/src/keybind.c b/src/keybind.c index 135481915..074d1ab3d 100644 --- a/src/keybind.c +++ b/src/keybind.c @@ -48,6 +48,7 @@ #include "component.h" #include "geometry.h" #include "radar.h" +#include "structure.h" // FIXME Direct iVis implementation include! #include "lib/ivis_opengl/screen.h" @@ -360,9 +361,9 @@ void kf_CloneSelected( void ) sendTextMessage(msg, true); audio_PlayTrack(ID_SOUND_NEXUS_LAUGH1); sTemplate2 = NULL; + psNewDroid->selected = true; psNewDroid = NULL; Cheated = true; - psNewDroid->selected = true; */ } } @@ -521,7 +522,10 @@ void kf_ToggleOrders(void) // Displays orders & action of currently selected uni showORDERS = !showORDERS; CONPRINTF(ConsoleString, (ConsoleString, "Unit Order/Action displayed is %s", showORDERS ? "Enabled" : "Disabled")); } - +void kf_ToggleLevelName(void) // toggles level name +{ + showLevelName = !showLevelName; +} /* Writes out the frame rate */ void kf_FrameRate( void ) { @@ -842,7 +846,7 @@ void kf_ZoomOut( void ) // -------------------------------------------------------------------------- void kf_RadarZoomIn( void ) { - float RadarZoomLevel = GetRadarZoom(); + uint8_t RadarZoomLevel = GetRadarZoom(); if(RadarZoomLevel < MAX_RADARZOOM) { @@ -850,15 +854,11 @@ void kf_RadarZoomIn( void ) SetRadarZoom(RadarZoomLevel); audio_PlayTrack( ID_SOUND_BUTTON_CLICK_5 ); } - else // at maximum already - { - audio_PlayTrack( ID_SOUND_BUILD_FAIL ); - } } // -------------------------------------------------------------------------- void kf_RadarZoomOut( void ) { - float RadarZoomLevel = GetRadarZoom(); + uint8_t RadarZoomLevel = GetRadarZoom(); if (RadarZoomLevel > MIN_RADARZOOM) { @@ -866,10 +866,6 @@ void kf_RadarZoomOut( void ) SetRadarZoom(RadarZoomLevel); audio_PlayTrack( ID_SOUND_BUTTON_CLICK_5 ); } - else // at minimum already - { - audio_PlayTrack( ID_SOUND_BUILD_FAIL ); - } } // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- @@ -1462,6 +1458,31 @@ void kf_FinishAllResearch(void) sendTextMessage(cmsg, true); } +void kf_Reload(void) +{ + STRUCTURE *psCurr; + +#ifndef DEBUG + // Bail out if we're running a _true_ multiplayer game (to prevent MP cheating) + if (runningMultiplayer()) + { + noMPCheatMsg(); + return; + } +#endif + + for (psCurr=interfaceStructList(); psCurr; psCurr = psCurr->psNext) + { + if (isLasSat(psCurr->pStructureType) && psCurr->selected) + { + unsigned int firePause = weaponFirePause(&asWeaponStats[psCurr->asWeaps[0].nStat], psCurr->player); + + psCurr->asWeaps[0].lastFired -= firePause; + console("Selected buildings instantly recharged!"); + } + } +} + // -------------------------------------------------------------------------- // finish all the research for the selected player void kf_FinishResearch( void ) diff --git a/src/keybind.h b/src/keybind.h index fbea434e3..53c0bef42 100644 --- a/src/keybind.h +++ b/src/keybind.h @@ -36,6 +36,7 @@ extern void kf_BuildInfo( void ); extern void kf_ToggleFPS(void); //FPS counter NOT same as kf_Framerate! -Q extern void kf_ToggleSamples(void); // Displays # of sound samples in Queue/list. extern void kf_ToggleOrders(void); //displays unit's Order/action state. +extern void kf_ToggleLevelName(void); extern void kf_FrameRate( void ); extern void kf_ShowNumObjects( void ); extern void kf_ToggleRadar( void ); @@ -235,6 +236,7 @@ extern void kf_SlowDown( void ); extern void kf_NormalSpeed( void ); extern void kf_CloneSelected( void ); +extern void kf_Reload( void ); extern void kf_ToggleLogical(void); diff --git a/src/keyedit.c b/src/keyedit.c index 1c4e0bd2c..a287b49e6 100644 --- a/src/keyedit.c +++ b/src/keyedit.c @@ -587,8 +587,7 @@ BOOL loadKeyMap(void) if (!PHYSFS_exists(KeyMapPath)) { - // NOTE: Changed to LOG_FATAL, since we want to inform user via pop-up (windows only) - debug(LOG_FATAL, "%s not found", KeyMapPath); + debug(LOG_WZ, "%s not found", KeyMapPath); return false; } pfile = PHYSFS_openRead(KeyMapPath); diff --git a/src/levels.c b/src/levels.c index f6093fbce..30096c959 100644 --- a/src/levels.c +++ b/src/levels.c @@ -57,7 +57,7 @@ extern int lev_lex_destroy(void); // block ID number start for the current level data (as opposed to a dataset) #define CURRENT_DATAID LEVEL_MAXFILES -static char currentLevelName[32]; +static char currentLevelName[32] = { "main" }; // the current level descriptions LEVEL_DATASET *psLevels = NULL; @@ -677,7 +677,10 @@ BOOL levLoadData(const char* name, char *pSaveName, GAME_TYPE saveType) } } - rebuildSearchPath(psNewLevel->dataDir, false); + if (!rebuildSearchPath(psNewLevel->dataDir, false)) + { + return false; + } // reset the old mission data if necessary if (psCurrLevel != NULL) diff --git a/src/main.c b/src/main.c index b2235221c..0d86d3309 100644 --- a/src/main.c +++ b/src/main.c @@ -75,6 +75,7 @@ #include "map.h" #include "parsetest.h" #include "keybind.h" +#include /* Always use fallbacks on Windows */ #if defined(WZ_OS_WIN) @@ -108,8 +109,13 @@ char * global_mods[MAX_MODS] = { NULL }; char * campaign_mods[MAX_MODS] = { NULL }; char * multiplay_mods[MAX_MODS] = { NULL }; +char * override_mods[MAX_MODS] = { NULL }; +char * override_mod_list = NULL; +bool use_override_mods = false; + char * loaded_mods[MAX_MODS] = { NULL }; char * mod_list = NULL; +bool customDebugfile = false; // Default false: user has NOT specified where to store the stdout/err file. int num_loaded_mods = 0; @@ -195,6 +201,7 @@ void removeSubdirs( const char * basedir, const char * subdir, char * checkList[ char tmpstr[PATH_MAX]; char ** subdirlist = PHYSFS_enumerateFiles( subdir ); char ** i = subdirlist; + while( *i != NULL ) { #ifdef DEBUG @@ -206,7 +213,12 @@ void removeSubdirs( const char * basedir, const char * subdir, char * checkList[ #ifdef DEBUG debug( LOG_NEVER, "removeSubdirs: Removing [%s] from search path", tmpstr ); #endif // DEBUG - PHYSFS_removeFromSearchPath( tmpstr ); + if (!PHYSFS_removeFromSearchPath( tmpstr )) + { +#ifdef DEBUG // spams a ton! + debug(LOG_NEVER, "Couldn't remove %s from search path because %s", tmpstr, PHYSFS_getLastError()); +#endif // DEBUG + } } i++; } @@ -225,6 +237,36 @@ void printSearchPath( void ) PHYSFS_freeList( searchPath ); } +void setOverrideMods(char * modlist) +{ + char * curmod = modlist; + char * nextmod; + int i=0; + while ((nextmod = strstr(curmod, ", ")) && itm_mon, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec ); + debug_register_callback( debug_callback_file, debug_callback_file_init, debug_callback_file_exit, buf ); + } + debug(LOG_WZ, "Warzone 2100 - %s", version_getFormattedVersionString()); /* Put these files in the writedir root */ setRegistryFilePath("config"); @@ -1246,6 +1314,8 @@ int main(int argc, char *argv[]) { return -1; } + war_SetWidth(pie_GetVideoBufferWidth()); + war_SetHeight(pie_GetVideoBufferHeight()); pie_SetFogStatus(false); pie_ScreenFlip(CLEAR_BLACK); diff --git a/src/main.h b/src/main.h index b5321686b..36fa42b61 100644 --- a/src/main.h +++ b/src/main.h @@ -35,7 +35,7 @@ typedef enum { //flag to indicate when initialisation is complete extern BOOL gameInitialised; extern BOOL bDisableLobby; - +extern bool customDebugfile; extern GS_GAMEMODE GetGameMode(void) WZ_DECL_PURE; extern void SetGameMode(GS_GAMEMODE status); @@ -51,6 +51,10 @@ extern char * global_mods[MAX_MODS]; extern char * campaign_mods[MAX_MODS]; extern char * multiplay_mods[MAX_MODS]; +extern char * override_mods[MAX_MODS]; +extern char * override_mod_list; +extern bool use_override_mods; + #ifdef __cplusplus } #endif //__cplusplus diff --git a/src/map.c b/src/map.c index 859108f7a..c9e61470b 100644 --- a/src/map.c +++ b/src/map.c @@ -653,7 +653,7 @@ static int determineGroundType(int x, int y, const char *tileset) } - if (x <= 0 || y <= 0 || x >= mapWidth || y >= mapHeight) + if (x < 0 || y < 0 || x >= mapWidth || y >= mapHeight) { return 0; // just return the first ground type } @@ -663,7 +663,7 @@ static int determineGroundType(int x, int y, const char *tileset) { for(j=0;j<2;j++) { - if (x+i-1 <= 0 || y+j-1 <= 0 || x+i-1 >= mapWidth || y+j-1 >= mapHeight) + if (x+i-1 < 0 || y+j-1 < 0 || x+i-1 >= mapWidth || y+j-1 >= mapHeight) { tile = 0; } @@ -1049,99 +1049,6 @@ static void objectWeaponTagged(int num, WEAPON *asWeaps, BASE_OBJECT **psTargets static void droidSaveTagged(DROID *psDroid) { - int plr = psDroid->player; - uint16_t v[ARRAY_SIZE(psDroid->asBits)], i, order[4], ammo[VTOL_MAXWEAPS]; - int32_t sv[2]; - float fv[3]; - - /* common groups */ - - objectSaveTagged((BASE_OBJECT *)psDroid); /* 0x01 */ - objectSensorTagged(psDroid->sensorRange, psDroid->sensorPower, 0, psDroid->ECMMod); /* 0x02 */ - objectStatTagged((BASE_OBJECT *)psDroid, psDroid->originalBody, psDroid->resistance); /* 0x03 */ - objectWeaponTagged(psDroid->numWeaps, psDroid->asWeaps, psDroid->psActionTarget); - - /* DROID GROUP */ - - tagWriteEnter(0x0a, 1); - tagWrite(0x01, psDroid->droidType); - for (i = 0; i < ARRAY_SIZE(v); ++i) - { - v[i] = psDroid->asBits[i].nStat; - } - tagWrite16v(0x02, ARRAY_SIZE(v), v); - // transporter droid in the mission list - if (psDroid->droidType == DROID_TRANSPORTER && apsDroidLists[plr] == mission.apsDroidLists[plr]) - { - tagWriteBool(0x03, true); - } - tagWrite(0x07, psDroid->weight); - tagWrite(0x08, psDroid->baseSpeed); - tagWriteString(0x09, psDroid->aName); - tagWrite(0x0a, psDroid->body); - tagWritef(0x0b, psDroid->experience); - tagWrite(0x0c, psDroid->NameVersion); - if (psDroid->psTarget) - { - tagWrites(0x0e, psDroid->psTarget->id); // else -1 - } - if (psDroid->psTarStats) - { - tagWrites(0x0f, psDroid->psTarStats->ref); // else -1 - } - if (psDroid->psBaseStruct) - { - tagWrites(0x10, psDroid->psBaseStruct->id); // else -1 - } - // current order - tagWrite(0x11, psDroid->order); - order[0] = psDroid->orderX; - order[1] = psDroid->orderY; - order[2] = psDroid->orderX2; - order[3] = psDroid->orderX2; - tagWrite16v(0x12, 4, order); - // queued orders - tagWriteEnter(0x13, psDroid->listSize); - for (i = 0; i < psDroid->listSize; i++) - { - tagWrite(0x01, psDroid->asOrderList[i].order); - order[0] = psDroid->asOrderList[i].x; - order[1] = psDroid->asOrderList[i].y; - order[2] = psDroid->asOrderList[i].x2; - order[3] = psDroid->asOrderList[i].y2; - tagWrite16v(0x02, 4, order); - tagWriteNext(); - } - tagWriteLeave(0x13); - // vtol ammo - for (i = 0; i < VTOL_MAXWEAPS; i++) - { - ammo[i] = psDroid->sMove.iAttackRuns[i]; - } - tagWrite16v(0x17, VTOL_MAXWEAPS, ammo); - // other movement related stuff - sv[0] = psDroid->sMove.DestinationX; - sv[1] = psDroid->sMove.DestinationY; - tagWrites32v(0x18, 2, sv); - sv[0] = psDroid->sMove.srcX; - sv[1] = psDroid->sMove.srcY; - tagWrites32v(0x19, 2, sv); - sv[0] = psDroid->sMove.targetX; - sv[1] = psDroid->sMove.targetY; - tagWrites32v(0x1a, 2, sv); - fv[0] = psDroid->sMove.fx; - fv[1] = psDroid->sMove.fy; - fv[2] = psDroid->sMove.fz; - tagWritefv(0x1b, 3, fv); - tagWritef(0x1c, psDroid->sMove.speed); - sv[0] = psDroid->sMove.boundX; - sv[1] = psDroid->sMove.boundY; - tagWrites32v(0x1d, 2, sv); - v[0] = psDroid->sMove.bumpX; - v[1] = psDroid->sMove.bumpY; - tagWrite16v(0x1e, 2, v); - - tagWriteLeave(0x0a); } static void structureSaveTagged(STRUCTURE *psStruct) diff --git a/src/message.c b/src/message.c index e0d3c5f98..75cdbbbfe 100644 --- a/src/message.c +++ b/src/message.c @@ -833,6 +833,8 @@ VIEWDATA * getViewData(const char *pName) VIEWDATA_LIST *psList = NULL; unsigned int i = 0; + ASSERT_OR_RETURN(NULL, pName[0] != '\0', "Trying to find empty message name"); + for (psList = apsViewData; psList != NULL; psList = psList->psNext) { for (i = 0; i < psList->numViewData; i++) @@ -845,6 +847,16 @@ VIEWDATA * getViewData(const char *pName) } } + // Dump mismatched candidates + debug(LOG_ERROR, "No match for view data, dumping whole list:"); + for (psList = apsViewData; psList != NULL; psList = psList->psNext) + { + for (i = 0; i < psList->numViewData; i++) + { + debug(LOG_ERROR, "%s != %s", psList->psViewData[i].pName, pName); + } + } + ASSERT(false, "Unable to find viewdata for message %s", pName); return NULL; } diff --git a/src/mission.c b/src/mission.c index 21e9038ab..d4e40ad50 100644 --- a/src/mission.c +++ b/src/mission.c @@ -255,6 +255,7 @@ void initMission(void) apsLimboDroids[inc] = NULL; } mission.apsSensorList[0] = NULL; + mission.apsOilList[0] = NULL; offWorldKeepLists = false; mission.time = -1; setMissionCountDown(); @@ -327,7 +328,9 @@ BOOL missionShutDown(void) mission.apsFlagPosLists[inc] = NULL; } apsSensorList[0] = mission.apsSensorList[0]; + apsOilList[0] = mission.apsOilList[0]; mission.apsSensorList[0] = NULL; + mission.apsOilList[0] = NULL; psMapTiles = mission.psMapTiles; mapWidth = mission.mapWidth; @@ -804,6 +807,7 @@ static void saveMissionData(void) mission.apsFlagPosLists[inc] = apsFlagPosLists[inc]; } mission.apsSensorList[0] = apsSensorList[0]; + mission.apsOilList[0] = apsOilList[0]; mission.playerX = player.p.x; mission.playerY = player.p.z; @@ -868,6 +872,7 @@ void restoreMissionData(void) mission.apsFlagPosLists[inc] = NULL; } apsSensorList[0] = mission.apsSensorList[0]; + apsOilList[0] = mission.apsOilList[0]; mission.apsSensorList[0] = NULL; //swap mission data over @@ -1458,6 +1463,9 @@ void swapMissionPointers(void) pVoid = (void*)apsSensorList[0]; apsSensorList[0] = mission.apsSensorList[0]; mission.apsSensorList[0] = (BASE_OBJECT *)pVoid; + pVoid = (void*)apsOilList[0]; + apsOilList[0] = mission.apsOilList[0]; + mission.apsOilList[0] = (BASE_OBJECT *)pVoid; } void endMission(void) diff --git a/src/missiondef.h b/src/missiondef.h index f8bf6ba08..8ca804601 100644 --- a/src/missiondef.h +++ b/src/missiondef.h @@ -67,6 +67,7 @@ typedef struct _mission DROID *apsDroidLists[MAX_PLAYERS]; FEATURE *apsFeatureLists[MAX_PLAYERS]; BASE_OBJECT *apsSensorList[1]; + BASE_OBJECT *apsOilList[1]; //struct _proximity_display *apsProxDisp[MAX_PLAYERS]; FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS]; PLAYER_POWER asPower[MAX_PLAYERS]; diff --git a/src/modding.h b/src/modding.h index 2f997bb23..4d8fd9d32 100644 --- a/src/modding.h +++ b/src/modding.h @@ -30,6 +30,9 @@ void addSubdirs( const char * basedir, const char * subdir, const bool appendToP void removeSubdirs( const char * basedir, const char * subdir, char * checkList[] ); void printSearchPath( void ); +void setOverrideMods(char * modlist); +void clearOverrideMods(void); + void addLoadedMod(const char * modname); void clearLoadedMods(void); char * getModList(void); diff --git a/src/move.c b/src/move.c index 65d35db7c..f30b62b54 100644 --- a/src/move.c +++ b/src/move.c @@ -172,7 +172,6 @@ const float WAYPOINT_2NDNEXT_SUCKINESS = 0.5f; // How fast a hover droid decelerates #define HOVER_SKID_DECEL 120 - /************************************************************************************/ /* Person model defines */ @@ -204,7 +203,6 @@ const float WAYPOINT_2NDNEXT_SUCKINESS = 0.5f; // How fast vtols 'skid' #define VTOL_SKID_DECEL 600 - /* The current base speed for this frame and averages for the last few seconds */ float baseSpeed; #define BASE_FRAMES 10 @@ -315,9 +313,6 @@ static BOOL moveDroidToBase(DROID *psDroid, UDWORD x, UDWORD y, BOOL bFormation) psDroid->sMove.Status = MOVENAVIGATE; psDroid->sMove.Position=0; - psDroid->sMove.fx = psDroid->pos.x; - psDroid->sMove.fy = psDroid->pos.y; - psDroid->sMove.fz = psDroid->pos.z; // leave any old formation if (psDroid->sMove.psFormation) @@ -549,10 +544,6 @@ static void moveShuffleDroid(DROID *psDroid, UDWORD shuffleStart, SDWORD sx, SDW psDroid->sMove.targetY = tarY; psDroid->sMove.numPoints = 0; psDroid->sMove.Position = 0; - psDroid->sMove.fx = psDroid->pos.x; - psDroid->sMove.fy = psDroid->pos.y; - - psDroid->sMove.fz = psDroid->pos.z; moveCalcBoundary(psDroid); @@ -785,14 +776,13 @@ static SDWORD moveObjRadius(const BASE_OBJECT* psObj) // see if a Droid has run over a person -static void moveCheckSquished(DROID *psDroid, float mx,float my) +static void moveCheckSquished(DROID *psDroid, int32_t emx, int32_t emy) { - SDWORD droidR, rad, radSq; - SDWORD objR; - SDWORD xdiff, ydiff, distSq; + int32_t rad, radSq, objR, xdiff, ydiff, distSq; BASE_OBJECT *psObj; - - droidR = moveObjRadius((BASE_OBJECT *)psDroid); + const int32_t droidR = moveObjRadius((BASE_OBJECT *)psDroid); + const int32_t mx = emx >> EXTRA_BITS; + const int32_t my = emy >> EXTRA_BITS; gridStartIterate(psDroid->pos.x, psDroid->pos.y, OBJ_MAXRADIUS); for (psObj = gridIterate(); psObj != NULL; psObj = gridIterate()) @@ -876,8 +866,7 @@ static BOOL moveBlocked(DROID *psDroid) // if the unit cannot see the next way point - reroute it's got stuck if ( ( bMultiPlayer || (psDroid->player == selectedPlayer) ) && (psDroid->sMove.Position != psDroid->sMove.numPoints) && - !fpathTileLOS(map_coord((SDWORD)psDroid->pos.x), map_coord((SDWORD)psDroid->pos.y), - map_coord(psDroid->sMove.DestinationX), map_coord(psDroid->sMove.DestinationY))) + !fpathTileLOS(psDroid, Vector3i_Init(psDroid->sMove.DestinationX, psDroid->sMove.DestinationY, 0))) { objTrace(psDroid->id, "Trying to reroute to (%d,%d)", psDroid->sMove.DestinationX, psDroid->sMove.DestinationY); moveDroidTo(psDroid, psDroid->sMove.DestinationX, psDroid->sMove.DestinationY); @@ -892,19 +881,14 @@ static BOOL moveBlocked(DROID *psDroid) // Calculate the actual movement to slide around -static void moveCalcSlideVector(DROID *psDroid,SDWORD objX, SDWORD objY, int32_t *pMx, int32_t *pMy) +static void moveCalcSlideVector(DROID *psDroid, int32_t objX, int32_t objY, int32_t *pMx, int32_t *pMy) { - SDWORD obstX, obstY; - SDWORD dirX, dirY, dirMagSq; - int32_t mx, my; - int32_t dotRes; - - mx = *pMx; - my = *pMy; - + int32_t dirX, dirY, dirMagSq, dotRes; + const int32_t mx = *pMx >> EXTRA_BITS; + const int32_t my = *pMy >> EXTRA_BITS; // Calculate the vector to the obstruction - obstX = psDroid->pos.x - objX; - obstY = psDroid->pos.y - objY; + const int32_t obstX = psDroid->pos.x - objX; + const int32_t obstY = psDroid->pos.y - objY; // if the target dir is the same, don't need to slide if (obstX*mx + obstY*my >= 0) @@ -925,45 +909,42 @@ static void moveCalcSlideVector(DROID *psDroid,SDWORD objX, SDWORD objY, int32_t dirY = obstX; dotRes = -dotRes; } - dirMagSq = MAX(1, dirX*dirX + dirY*dirY); + dirMagSq = MAX(1, dirX * dirX + dirY * dirY); // Calculate the component of the movement in the direction of the tangent vector - *pMx = (int64_t)dirX * dotRes / dirMagSq; - *pMy = (int64_t)dirY * dotRes / dirMagSq; + *pMx = (dirX * dotRes / dirMagSq) << EXTRA_BITS; + *pMy = (dirY * dotRes / dirMagSq) << EXTRA_BITS; } // see if a droid has run into a blocking tile // TODO See if this function can be simplified. -static void moveCalcBlockingSlide(DROID *psDroid, float *pmx_, float *pmy_, uint16_t tarDir, uint16_t *pSlideDir) +static void moveCalcBlockingSlide(DROID *psDroid, int32_t *pmx, int32_t *pmy, uint16_t tarDir, uint16_t *pSlideDir) { - int32_t pmxv = *pmx_, pmyv = *pmy_; - int32_t *pmx = &pmxv, *pmy = &pmyv; - int32_t mx = *pmx, my = *pmy, nx, ny; - SDWORD tx,ty, ntx,nty; // current tile x,y and new tile x,y - SDWORD blkCX,blkCY; - SDWORD horizX,horizY, vertX,vertY; - BOOL blocked; - int16_t slideDir; PROPULSION_TYPE propulsion = getPropulsionStats(psDroid)->propulsionType; + SDWORD horizX,horizY, vertX,vertY; + int16_t slideDir; MAPTILE *psTile; + BOOL blocked = false; + // calculate the new coords and see if they are on a different tile + const int32_t mx = *pmx >> EXTRA_BITS; + const int32_t my = *pmy >> EXTRA_BITS; + const int32_t tx = map_coord(psDroid->pos.x); + const int32_t ty = map_coord(psDroid->pos.y); + const int32_t nx = psDroid->pos.x + mx; + const int32_t ny = psDroid->pos.y + my; + const int32_t ntx = map_coord(nx); + const int32_t nty = map_coord(ny); + const int32_t blkCX = world_coord(ntx) + TILE_UNITS/2; + const int32_t blkCY = world_coord(nty) + TILE_UNITS/2; CHECK_DROID(psDroid); - blocked = false; - - // calculate the new coords and see if they are on a different tile - tx = map_coord(psDroid->sMove.fx); - ty = map_coord(psDroid->sMove.fy); - nx = psDroid->sMove.fx + mx; - ny = psDroid->sMove.fy + my; - ntx = map_coord(nx); - nty = map_coord(ny); - // is the new tile a gate? psTile = mapTile(ntx, nty); - if (psTile && psTile->psObject && psTile->psObject->type == OBJ_STRUCTURE + if (!isFlying(psDroid) && psTile && psTile->psObject && psTile->psObject->type == OBJ_STRUCTURE && aiCheckAlliances(psTile->psObject->player, psDroid->player) + && ((STRUCTURE *)psTile->psObject)->status == SS_BUILT && ((STRUCTURE *)psTile->psObject)->pStructureType->type == REF_GATE) { STRUCTURE *psStruct = (STRUCTURE *)psTile->psObject; @@ -986,9 +967,6 @@ static void moveCalcBlockingSlide(DROID *psDroid, float *pmx_, float *pmy_, uint blocked = true; } - blkCX = world_coord(ntx) + TILE_UNITS/2; - blkCY = world_coord(nty) + TILE_UNITS/2; - // is the new tile blocking? if (!blocked) { @@ -1112,8 +1090,8 @@ static void moveCalcBlockingSlide(DROID *psDroid, float *pmx_, float *pmy_, uint else // if (tx == ntx && ty == nty) { // on a blocking tile - see if we need to jump off - int intx = ((int)psDroid->sMove.fx) & TILE_MASK; - int inty = ((int)psDroid->sMove.fy) & TILE_MASK; + int intx = psDroid->pos.x & TILE_MASK; + int inty = psDroid->pos.y & TILE_MASK; BOOL bJumped = false; int jumpx = psDroid->pos.x; int jumpy = psDroid->pos.y; @@ -1185,8 +1163,6 @@ static void moveCalcBlockingSlide(DROID *psDroid, float *pmx_, float *pmy_, uint { psDroid->pos.x = MAX(0, jumpx); psDroid->pos.y = MAX(0, jumpy); - psDroid->sMove.fx = MAX(0, jumpx); - psDroid->sMove.fy = MAX(0, jumpy); *pmx = 0; *pmy = 0; } @@ -1227,20 +1203,15 @@ static void moveCalcBlockingSlide(DROID *psDroid, float *pmx_, float *pmy_, uint } *pSlideDir = slideDir; - *pmx_ = *pmx; - *pmy_ = *pmy; - CHECK_DROID(psDroid); } // see if a droid has run into another droid // Only consider stationery droids -static void moveCalcDroidSlide(DROID *psDroid, float *pmx, float *pmy) +static void moveCalcDroidSlide(DROID *psDroid, int *pmx, int *pmy) { - SDWORD droidR, rad, radSq; - SDWORD objR; - SDWORD xdiff, ydiff, distSq; + int32_t droidR, rad, radSq, objR, xdiff, ydiff, distSq, spmx, spmy; BASE_OBJECT *psObj, *psObst; BOOL bLegs; @@ -1251,6 +1222,8 @@ static void moveCalcDroidSlide(DROID *psDroid, float *pmx, float *pmy) { bLegs = true; } + spmx = *pmx >> EXTRA_BITS; + spmy = *pmy >> EXTRA_BITS; droidR = moveObjRadius((BASE_OBJECT *)psDroid); psObst = NULL; @@ -1287,10 +1260,10 @@ static void moveCalcDroidSlide(DROID *psDroid, float *pmx, float *pmy) rad = droidR + objR; radSq = rad*rad; - xdiff = psDroid->sMove.fx + *pmx - psObj->pos.x; - ydiff = psDroid->sMove.fy + *pmy - psObj->pos.y; + xdiff = psDroid->pos.x + spmx - psObj->pos.x; + ydiff = psDroid->pos.y + spmy - psObj->pos.y; distSq = xdiff * xdiff + ydiff * ydiff; - if ((float)xdiff * *pmx + (float)ydiff * *pmy >= 0) + if (xdiff * spmx + ydiff * spmy >= 0) { // object behind continue; @@ -1301,8 +1274,8 @@ static void moveCalcDroidSlide(DROID *psDroid, float *pmx, float *pmy) if (psObst != NULL) { // hit more than one droid - stop - *pmx = (float)0; - *pmy = (float)0; + *pmx = 0; + *pmy = 0; psObst = NULL; break; } @@ -1355,10 +1328,7 @@ static void moveCalcDroidSlide(DROID *psDroid, float *pmx, float *pmy) if (psObst != NULL) { // Try to slide round it - int32_t x = *pmx, y = *pmy; - moveCalcSlideVector(psDroid, (SDWORD)psObst->pos.x,(SDWORD)psObst->pos.y, &x, &y); - *pmx = x; - *pmy = y; + moveCalcSlideVector(psDroid, psObst->pos.x, psObst->pos.y, pmx, pmy); } CHECK_DROID(psDroid); } @@ -1645,19 +1615,14 @@ static void moveCalcBoundary(DROID *psDroid) psDroid->sMove.boundX = sumY; psDroid->sMove.boundY = -sumX; } - - objTrace(psDroid->id, "new boundary: droid boundary (%d, %d)", psDroid->sMove.boundX, psDroid->sMove.boundY); } - // Check if a droid has got to a way point static BOOL moveReachedWayPoint(DROID *psDroid) { - SDWORD droidX,droidY, iRange; - // Calculate the vector to the droid - droidX = (SDWORD)psDroid->pos.x - psDroid->sMove.targetX; - droidY = (SDWORD)psDroid->pos.y - psDroid->sMove.targetY; + const int droidX = psDroid->pos.x - psDroid->sMove.targetX; + const int droidY = psDroid->pos.y - psDroid->sMove.targetY; // see if this is a formation end point if (psDroid->droidType == DROID_TRANSPORTER || @@ -1665,7 +1630,7 @@ static BOOL moveReachedWayPoint(DROID *psDroid) formationMember(psDroid->sMove.psFormation, psDroid)) || (isVtolDroid(psDroid) && (psDroid->sMove.numPoints == psDroid->sMove.Position)) ) { - iRange = TILE_UNITS / 4; + const int iRange = TILE_UNITS / 4; if (droidX*droidX + droidY*droidY < iRange*iRange) { @@ -1678,7 +1643,7 @@ static BOOL moveReachedWayPoint(DROID *psDroid) // but only move onto the next way point if we can see the previous one // (this helps units that have got nudged off course). if ((psDroid->sMove.boundX * droidX + psDroid->sMove.boundY * droidY <= 0) && - fpathTileLOS(map_coord(psDroid->pos.x), map_coord(psDroid->pos.y), map_coord(psDroid->sMove.targetX), map_coord(psDroid->sMove.targetY))) + fpathTileLOS(psDroid, Vector3i_Init(psDroid->sMove.targetX, psDroid->sMove.targetY, 0))) { objTrace(psDroid->id, "Next waypoint: droid %d bound (%d,%d) target (%d,%d)", (int)psDroid->id, (int)psDroid->sMove.boundX, (int)psDroid->sMove.boundY, (int)droidX, (int)droidY); @@ -1893,12 +1858,9 @@ static float moveCalcNormalSpeed(DROID *psDroid, float fSpeed, uint16_t iDroidDi return normalSpeed; } - -static void moveGetDroidPosDiffs( DROID *psDroid, float *pDX, float *pDY ) +static void moveGetDroidPosDiffs(DROID *psDroid, int32_t *pDX, int32_t *pDY) { - float move; - - move = psDroid->sMove.speed * baseSpeed; + int32_t move = (psDroid->sMove.speed * baseSpeed * (float)EXTRA_PRECISION); // save precision *pDX = iSinR(psDroid->sMove.moveDir, move); *pDY = iCosR(psDroid->sMove.moveDir, move); @@ -1936,9 +1898,9 @@ static void moveCheckFinalWaypoint( DROID *psDroid, SDWORD *pSpeed ) } } -static void moveUpdateDroidPos( DROID *psDroid, float dx, float dy ) +static void moveUpdateDroidPos(DROID *psDroid, int32_t dx, int32_t dy) { - SDWORD iX = 0, iY = 0; + Position newPos; // high precision coordinates (unusable for squared calculations) CHECK_DROID(psDroid); @@ -1948,14 +1910,13 @@ static void moveUpdateDroidPos( DROID *psDroid, float dx, float dy ) return; } - psDroid->sMove.fx += dx; - psDroid->sMove.fy += dy; - - iX = psDroid->sMove.fx; - iY = psDroid->sMove.fy; + newPos = droidGetPrecisePosition(psDroid); + newPos.x += dx; + newPos.y += dy; + droidSetPrecisePosition(psDroid, newPos); /* impact if about to go off map else update coordinates */ - if ( worldOnMap( iX, iY ) == false ) + if ( worldOnMap( psDroid->pos.x, psDroid->pos.y ) == false ) { /* transporter going off-world will trigger next map, and is ok */ ASSERT(psDroid->droidType == DROID_TRANSPORTER, "droid trying to move off the map!"); @@ -1966,11 +1927,6 @@ static void moveUpdateDroidPos( DROID *psDroid, float dx, float dy ) return; } } - else - { - psDroid->pos.x = (UWORD)iX; - psDroid->pos.y = (UWORD)iY; - } // lovely hack to keep transporters just on the map // two weeks to go and the hacks just get better !!! @@ -1991,11 +1947,11 @@ static void moveUpdateDroidPos( DROID *psDroid, float dx, float dy ) /* Update a tracked droids position and speed given target values */ static void moveUpdateGroundModel(DROID *psDroid, SDWORD speed, uint16_t direction) { - float fPerpSpeed, fNormalSpeed, dx, dy, fSpeed, bx,by; + float fPerpSpeed, fNormalSpeed, fSpeed; uint16_t iDroidDir; uint16_t slideDir; PROPULSION_STATS *psPropStats; - SDWORD spinSpeed, turnSpeed, skidDecel; + int32_t spinSpeed, turnSpeed, skidDecel, dx, dy, bx, by; CHECK_DROID(psDroid); @@ -2036,10 +1992,9 @@ static void moveUpdateGroundModel(DROID *psDroid, SDWORD speed, uint16_t directi fPerpSpeed = moveCalcPerpSpeed(psDroid, iDroidDir, skidDecel); moveCombineNormalAndPerpSpeeds(psDroid, fNormalSpeed, fPerpSpeed, iDroidDir); - moveGetDroidPosDiffs( psDroid, &dx, &dy ); - + moveGetDroidPosDiffs(psDroid, &dx, &dy); moveCheckSquished(psDroid, dx,dy); - moveCalcDroidSlide(psDroid, &dx,&dy); + moveCalcDroidSlide(psDroid, &dx, &dy); bx = dx; by = dy; moveCalcBlockingSlide(psDroid, &bx, &by, direction, &slideDir); @@ -2049,7 +2004,7 @@ static void moveUpdateGroundModel(DROID *psDroid, SDWORD speed, uint16_t directi psDroid->rot.direction = iDroidDir; } - moveUpdateDroidPos( psDroid, bx, by ); + moveUpdateDroidPos(psDroid, bx, by); //set the droid height here so other routines can use it psDroid->pos.z = map_Height(psDroid->pos.x, psDroid->pos.y);//jps 21july96 @@ -2059,7 +2014,8 @@ static void moveUpdateGroundModel(DROID *psDroid, SDWORD speed, uint16_t directi /* Update a persons position and speed given target values */ static void moveUpdatePersonModel(DROID *psDroid, SDWORD speed, uint16_t direction) { - float fPerpSpeed, fNormalSpeed, dx, dy, fSpeed; + float fPerpSpeed, fNormalSpeed, fSpeed; + int32_t dx, dy; uint16_t iDroidDir; uint16_t slideDir; @@ -2120,7 +2076,6 @@ static void moveUpdatePersonModel(DROID *psDroid, SDWORD speed, uint16_t directi //set the droid height here so other routines can use it psDroid->pos.z = map_Height(psDroid->pos.x, psDroid->pos.y);//jps 21july96 - psDroid->sMove.fz = psDroid->pos.z; /* update anim if moving and not on fire */ if ( psDroid->droidType == DROID_PERSON && speed != 0 && @@ -2169,7 +2124,7 @@ static void moveUpdatePersonModel(DROID *psDroid, SDWORD speed, uint16_t directi /* primitive 'bang-bang' vtol height controller */ static void moveAdjustVtolHeight( DROID * psDroid, UDWORD iMapHeight ) { - UDWORD iMinHeight, iMaxHeight, iLevelHeight; + int32_t iMinHeight, iMaxHeight, iLevelHeight; if ( psDroid->droidType == DROID_TRANSPORTER && !bMultiPlayer ) { @@ -2213,11 +2168,10 @@ void moveMakeVtolHover( DROID *psDroid ) static void moveUpdateVtolModel(DROID *psDroid, SDWORD speed, uint16_t direction) { - float fPerpSpeed, fNormalSpeed, dx, dy, fSpeed; + float fPerpSpeed, fNormalSpeed, fSpeed; uint16_t iDroidDir; uint16_t slideDir; - SDWORD iMapZ, iSpinSpeed, iTurnSpeed; - float fDZ, fDroidZ, fMapZ; + int32_t iMapZ, iSpinSpeed, iTurnSpeed, dx, dy; uint16_t targetRoll; CHECK_DROID(psDroid); @@ -2262,25 +2216,11 @@ static void moveUpdateVtolModel(DROID *psDroid, SDWORD speed, uint16_t direction targetRoll = clip(4 * angleDelta(psDroid->sMove.moveDir - psDroid->rot.direction), -DEG(60), DEG(60)); psDroid->rot.roll = psDroid->rot.roll + (uint16_t)gameTimeAdjustedIncrement(3 * angleDelta(targetRoll - psDroid->rot.roll)); - iMapZ = map_Height(psDroid->pos.x, psDroid->pos.y); - /* do vertical movement */ + iMapZ = map_Height(psDroid->pos.x, psDroid->pos.y); + psDroid->pos.z = MAX(iMapZ, psDroid->pos.z + timeAdjustedIncrement(psDroid->sMove.iVertSpeed, true)); - fDZ = timeAdjustedIncrement(psDroid->sMove.iVertSpeed, true); - fDroidZ = psDroid->sMove.fz; - fMapZ = (float) map_Height(psDroid->pos.x, psDroid->pos.y); - if ( fDroidZ+fDZ < fMapZ ) - { - psDroid->sMove.fz = fMapZ; - } - else - { - psDroid->sMove.fz = psDroid->sMove.fz + fDZ; - } - psDroid->pos.z = (UWORD)psDroid->sMove.fz; - - - moveAdjustVtolHeight( psDroid, iMapZ ); + moveAdjustVtolHeight(psDroid, iMapZ); } #define CYBORG_VERTICAL_SPEED ((SDWORD)psDroid->baseSpeed/2) @@ -2315,8 +2255,9 @@ moveCyborgTouchDownAnimDone( ANIM_OBJECT *psObj ) static void moveUpdateJumpCyborgModel(DROID *psDroid, SDWORD speed, uint16_t direction) { - float fPerpSpeed, fNormalSpeed, dx, dy, fSpeed; + float fPerpSpeed, fNormalSpeed, fSpeed; uint16_t iDroidDir; + int32_t dx, dy; // nothing to do if the droid is stopped if ( moveDroidStopped( psDroid, speed ) == true ) @@ -2341,7 +2282,7 @@ static void moveUpdateCyborgModel(DROID *psDroid, SDWORD moveSpeed, uint16_t mov PROPULSION_STATS *psPropStats; BASE_OBJECT *psObj = (BASE_OBJECT *) psDroid; UDWORD iMapZ = map_Height(psDroid->pos.x, psDroid->pos.y); - SDWORD iDist, iDx, iDy, iDz, iDroidZ; + int32_t iDist, iDx, iDy, iDz, iDroidZ; CHECK_DROID(psDroid); @@ -2385,10 +2326,6 @@ static void moveUpdateCyborgModel(DROID *psDroid, SDWORD moveSpeed, uint16_t mov { psDroid->sMove.iVertSpeed = (SWORD)-CYBORG_VERTICAL_SPEED; } - - - psDroid->sMove.fz = psDroid->pos.z; - } /* calculate move distance */ @@ -2805,9 +2742,6 @@ void moveUpdateDroid(DROID *psDroid) // Calculate the direction vector // psDroid->rot.direction = calcDirection(psDroid->pos.x,psDroid->pos.y, tarX,tarY); - psDroid->sMove.fx = psDroid->pos.x; - psDroid->sMove.fy = psDroid->pos.y; - psDroid->sMove.fz = psDroid->pos.z; moveCalcBoundary(psDroid); diff --git a/src/move.h b/src/move.h index b33fc99c0..01ccd891a 100644 --- a/src/move.h +++ b/src/move.h @@ -80,6 +80,25 @@ extern BOOL moveCheckDroidMovingAndVisible( void *psObj ); // set a vtol to be hovering in the air void moveMakeVtolHover( DROID *psDroid ); +/// Get high precision droid position +static inline Position droidGetPrecisePosition(const DROID *psDroid) +{ + Position newPos = { (psDroid->pos.x << EXTRA_BITS) + psDroid->sMove.eBitX, (psDroid->pos.y << EXTRA_BITS) + psDroid->sMove.eBitY, 0 }; + return newPos; +} + +/// Set high precision droid position +static inline void droidSetPrecisePosition(DROID *psDroid, Position newPos) +{ + // Store extra bits of precision + psDroid->sMove.eBitX = newPos.x & EXTRA_MASK; + psDroid->sMove.eBitY = newPos.y & EXTRA_MASK; + + // Drop extra bits of precision + psDroid->pos.x = newPos.x >> EXTRA_BITS; + psDroid->pos.y = newPos.y >> EXTRA_BITS; +} + #ifdef __cplusplus } #endif //__cplusplus diff --git a/src/movedef.h b/src/movedef.h index c53ca8fc9..ed768b1b0 100644 --- a/src/movedef.h +++ b/src/movedef.h @@ -24,6 +24,8 @@ #ifndef __INCLUDED_MOVEDEF_H__ #define __INCLUDED_MOVEDEF_H__ +#include "lib/framework/vector.h" + #ifdef __cplusplus extern "C" { @@ -49,6 +51,11 @@ MOVESHUFFLE, MOVEROUTESHUFFLE, // unused } MOVE_STATUS; +/// Extra precision added to movement calculations +#define EXTRA_BITS 8 +#define EXTRA_PRECISION ((1 << EXTRA_BITS) - 1) +#define EXTRA_MASK 0xff + typedef struct _move_control { MOVE_STATUS Status; // Inactive, Navigating or moving point to point status @@ -58,9 +65,9 @@ typedef struct _move_control SDWORD DestinationX, DestinationY; // World coordinates of movement destination SDWORD srcX,srcY,targetX,targetY; - float fx,fy; // droid location as a fract float speed; // Speed of motion SWORD boundX,boundY; // Vector for the end of path boundary + int32_t eBitX, eBitY; // extra bits stored in a temporary bit bucket uint16_t moveDir; // direction of motion (not the direction the droid is facing) uint16_t bumpDir; // direction at last bump @@ -78,9 +85,6 @@ typedef struct _move_control // iAttackRuns tracks the amount of ammunition a VTOL has remaining for each weapon UDWORD iAttackRuns[VTOL_MAXWEAPS]; - - // added for vtol movement - float fz; } MOVE_CONTROL; #ifdef __cplusplus diff --git a/src/multibot.c b/src/multibot.c index 6f7759399..bcb842b4a 100644 --- a/src/multibot.c +++ b/src/multibot.c @@ -217,7 +217,7 @@ BOOL sendDroidDisEmbark(const DROID* psDroid, const DROID* psTransporter) uint8_t player = psDroid->player; uint32_t droidID = psDroid->id; uint32_t transporterID = psTransporter->id; - Position pos = psDroid->pos; + Position pos = droidGetPrecisePosition(psDroid); NETuint8_t(&player); NETuint32_t(&droidID); @@ -285,7 +285,7 @@ BOOL recvDroidDisEmbark(NETQUEUE queue) addDroid(psFoundDroid, apsDroidLists); // Add it back into the world at the x/y - psFoundDroid->pos = pos; + droidSetPrecisePosition(psFoundDroid, pos); if (!droidOnMap(psFoundDroid)) { diff --git a/src/multiint.c b/src/multiint.c index 95bfab2eb..d80f720a9 100644 --- a/src/multiint.c +++ b/src/multiint.c @@ -39,6 +39,7 @@ #include "lib/ivis_common/piedef.h" #include "lib/ivis_common/piestate.h" #include "lib/ivis_common/pieclip.h" +#include "lib/ivis_common/piemode.h" #include "lib/ivis_common/piepalette.h" #include "lib/ivis_common/rendmode.h" #include "lib/ivis_opengl/piematrix.h" // for setgeometricoffset @@ -136,10 +137,6 @@ extern char MultiCustomMapsPath[PATH_MAX]; extern char MultiPlayersPath[PATH_MAX]; extern char VersionString[80]; // from netplay.c -extern GLuint fbo; // Our handle to the FBO -extern GLuint FBOtexture; // The texture we are going to use -extern GLuint FBOdepthbuffer; // Our handle to the depth render buffer -extern BOOL bFboProblem; // hack to work around people with bad drivers. (*cough*intel*cough*) extern BOOL bSendingMap; // used to indicate we are sending a map BOOL bHosted = false; //we have set up a game @@ -236,18 +233,18 @@ static int guessMapTilesetType(void) /// a picture of it void loadMapPreview(bool hideInterface) { - char aFileName[256]; + static char aFileName[256], bFileName[256]; UDWORD fileSize; char *pFileData = NULL; LEVEL_DATASET *psLevel = NULL; PIELIGHT plCliffL, plCliffH, plWater, plRoadL, plRoadH, plGroundL, plGroundH; - UDWORD i, j, x, y, height, offX2, offY2; - UBYTE scale,col; + UDWORD x, y, height; + UBYTE col; MAPTILE *psTile,*WTile; UDWORD oursize; Vector2i playerpos[MAX_PLAYERS]; // Will hold player positions - char *ptr = NULL, *imageData = NULL, *fboData = NULL; + char *ptr = NULL, *imageData = NULL; if(psMapTiles) { @@ -262,6 +259,16 @@ void loadMapPreview(bool hideInterface) aFileName[strlen(aFileName)-4] = '\0'; sstrcat(aFileName, "/ttypes.ttp"); pFileData = fileLoadBuffer; + sstrcpy(bFileName, screen_getMapName()); + if (!sstrcmp(aFileName, bFileName)) + { + if (hideInterface) + { + hideTime = gameTime; + } + return; + } + sstrcpy(bFileName, aFileName); if (!loadFileToBuffer(aFileName, pFileData, FILE_LOAD_BUFFER_SIZE, &fileSize)) { debug(LOG_ERROR, "loadMapPreview: Failed to load terrain types file"); @@ -319,23 +326,6 @@ void loadMapPreview(bool hideInterface) break; } - scale = 1; - if((mapHeight < 240)&&(mapWidth < 320)) - { - scale = 2; - } - if((mapHeight < 120)&&(mapWidth < 160)) - { - scale = 3; - } - if((mapHeight < 60)&&(mapWidth < 80)) - { - scale = 4; - } - if((mapHeight < 30)&&(mapWidth < 40)) - { - scale = 5; - } oursize = sizeof(char) * BACKDROP_HACK_WIDTH * BACKDROP_HACK_HEIGHT; imageData = (char*)malloc(oursize * 3); // used for the texture if( !imageData ) @@ -344,57 +334,41 @@ void loadMapPreview(bool hideInterface) abort(); // should be a fatal error ? return; } - fboData = (char*)malloc(oursize* 3); // used for the FBO texture - if( !fboData ) - { - debug(LOG_FATAL,"Out of memory for FBO texture!"); - free(imageData); - abort(); // should be a fatal error? - return ; - } ptr = imageData; - memset(ptr, 0x45, sizeof(char) * BACKDROP_HACK_WIDTH * BACKDROP_HACK_HEIGHT * 3); //dunno about background color + memset(ptr, 0, sizeof(char) * BACKDROP_HACK_WIDTH * BACKDROP_HACK_HEIGHT * 3); //dunno about background color psTile = psMapTiles; - offX2 = (BACKDROP_HACK_WIDTH / 2) - ((scale * mapWidth) / 2); - offY2 = (BACKDROP_HACK_HEIGHT / 2 ) - ((scale * mapHeight) / 2); - for (i = 0; i < mapHeight; i++) + for (y = 0; y < mapHeight; y++) { WTile = psTile; - for (j = 0; j < mapWidth; j++) + for (x = 0; x < mapWidth; x++) { + char * const p = imageData + (3 * (y * BACKDROP_HACK_WIDTH + x)); height = WTile->height; col = height; - for (x = (j * scale); x < (j * scale) + scale; x++) + switch (terrainType(WTile)) { - for (y = (i * scale); y < (i * scale) + scale; y++) - { - char * const p = imageData + (3 * ((offY2 + y) * BACKDROP_HACK_WIDTH + (x + offX2))); - switch (terrainType(WTile)) - { - case TER_CLIFFFACE: - p[0] = plCliffL.byte.r + (plCliffH.byte.r-plCliffL.byte.r) * col / 256; - p[1] = plCliffL.byte.g + (plCliffH.byte.g-plCliffL.byte.g) * col / 256; - p[2] = plCliffL.byte.b + (plCliffH.byte.b-plCliffL.byte.b) * col / 256; - break; - case TER_WATER: - p[0] = plWater.byte.r; - p[1] = plWater.byte.g; - p[2] = plWater.byte.b; - break; - case TER_ROAD: - p[0] = plRoadL.byte.r + (plRoadH.byte.r-plRoadL.byte.r) * col / 256; - p[1] = plRoadL.byte.g + (plRoadH.byte.g-plRoadL.byte.g) * col / 256; - p[2] = plRoadL.byte.b + (plRoadH.byte.b-plRoadL.byte.b) * col / 256; - break; - default: - p[0] = plGroundL.byte.r + (plGroundH.byte.r-plGroundL.byte.r) * col / 256; - p[1] = plGroundL.byte.g + (plGroundH.byte.g-plGroundL.byte.g) * col / 256; - p[2] = plGroundL.byte.b + (plGroundH.byte.b-plGroundL.byte.b) * col / 256; - break; - } - } + case TER_CLIFFFACE: + p[0] = plCliffL.byte.r + (plCliffH.byte.r-plCliffL.byte.r) * col / 256; + p[1] = plCliffL.byte.g + (plCliffH.byte.g-plCliffL.byte.g) * col / 256; + p[2] = plCliffL.byte.b + (plCliffH.byte.b-plCliffL.byte.b) * col / 256; + break; + case TER_WATER: + p[0] = plWater.byte.r; + p[1] = plWater.byte.g; + p[2] = plWater.byte.b; + break; + case TER_ROAD: + p[0] = plRoadL.byte.r + (plRoadH.byte.r-plRoadL.byte.r) * col / 256; + p[1] = plRoadL.byte.g + (plRoadH.byte.g-plRoadL.byte.g) * col / 256; + p[2] = plRoadL.byte.b + (plRoadH.byte.b-plRoadL.byte.b) * col / 256; + break; + default: + p[0] = plGroundL.byte.r + (plGroundH.byte.r-plGroundL.byte.r) * col / 256; + p[1] = plGroundL.byte.g + (plGroundH.byte.g-plGroundL.byte.g) * col / 256; + p[2] = plGroundL.byte.b + (plGroundH.byte.b-plGroundL.byte.b) * col / 256; + break; } WTile += 1; } @@ -403,95 +377,12 @@ void loadMapPreview(bool hideInterface) // Slight hack to init array with a special value used to determine how many players on map memset(playerpos,0x77,sizeof(playerpos)); // color our texture with clancolors @ correct position - plotStructurePreview16(imageData, scale, offX2, offY2,playerpos); - glErrors(); // clear openGL errorcodes - // and now, for those that have FBO available on their card - // added hack to work around bad drivers that report FBO available, when it is not. - if(Init_FBO(BACKDROP_HACK_WIDTH,BACKDROP_HACK_HEIGHT) && !bFboProblem) - { - // Save the view port and set it to the size of the texture - glPushAttrib(GL_VIEWPORT_BIT); + plotStructurePreview16(imageData, playerpos); - // First we bind the FBO so we can render to it - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); - bFboProblem |= glErrors(); + screen_enableMapPreview(bFileName, mapWidth, mapHeight, playerpos); - //set up projection & model matrix for the texture(!) - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0.0f,(double)BACKDROP_HACK_HEIGHT,0,(double)BACKDROP_HACK_WIDTH,-1.0f,1.0f); + screen_Upload(imageData, true); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glViewport( 0, 0, BACKDROP_HACK_WIDTH, BACKDROP_HACK_HEIGHT ); - // Then render as normal - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT ); //| GL_DEPTH_BUFFER_BIT); - glLoadIdentity(); - // and start drawing here - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, FBOtexture); - //upload the texture to the FBO - glTexSubImage2D(GL_TEXTURE_2D,0,0,0,BACKDROP_HACK_WIDTH,BACKDROP_HACK_HEIGHT,GL_RGB,GL_UNSIGNED_BYTE,imageData); - - iV_SetFont(font_large); - glDisable(GL_CULL_FACE); - for(i=0;i < MAX_PLAYERS;i++)// - { - float fx,fy; - if(playerpos[i].x==0x77777777) continue; // no player is available, so skip - fx =(float)playerpos[i].x; - fy =(float)playerpos[i].y; - fx*=(float)scale; - fy*=(float)scale; - fx+=(float)offX2; - fy+=(float)offY2; - - glcRenderStyle(GLC_TEXTURE); - // first draw a slightly bigger font of the number using said color - iV_SetTextColour(WZCOL_DBLUE); - iV_SetTextSize(28.f); - iV_DrawTextF(fx,fy,"%d",i); - // now draw it again using smaller font and said color - iV_SetTextColour(WZCOL_LBLUE); - iV_SetTextSize(24.f); - iV_DrawTextF(fx,fy,"%d",i); - } - glcRenderStyle(GLC_TEXTURE); - - // set rendering back to default frame buffer - glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); - glReadPixels(0, 0, BACKDROP_HACK_WIDTH, BACKDROP_HACK_HEIGHT,GL_RGB,GL_UNSIGNED_BYTE,fboData); - - //done with the FBO, so unbind it. - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); - bFboProblem |= glErrors(); - // if we detected a error, then we must fallback to old texture, or user will not see anything. - if(!bFboProblem) - { - screen_Upload(fboData); - } - else - { - screen_Upload(imageData); - } - bFboProblem |= glErrors(); - glEnable(GL_CULL_FACE); - } - else - { - // no FBO was available, just show them what we got. - screen_Upload(imageData); - } - - free(fboData); free(imageData); if (hideInterface) @@ -499,7 +390,6 @@ void loadMapPreview(bool hideInterface) hideTime = gameTime; } mapShutdown(); - Delete_FBO(); } // //////////////////////////////////////////////////////////////////////////// @@ -2115,7 +2005,7 @@ UDWORD addPlayerBox(BOOL players) sFormInit.pDisplay = displayPlayer; sFormInit.UserData = i; widgAddForm(psWScreen, &sFormInit); - addFESlider(MULTIOP_SKSLIDE+i,sFormInit.id, 35,9, DIFF_SLIDER_STOPS, + addFEAISlider(MULTIOP_SKSLIDE+i,sFormInit.id, 35,9, DIFF_SLIDER_STOPS, (game.skDiff[i] <= DIFF_SLIDER_STOPS ? game.skDiff[i] : DIFF_SLIDER_STOPS / 2)); //set to 50% (value of UBYTE_MAX == human player) } } @@ -2214,7 +2104,7 @@ static void addChatBox(void) if (*getModList()) { char modListMessage[WIDG_MAXSTR] = ""; - sstrcat(modListMessage, _("Active mods: ")); + sstrcat(modListMessage, _("Mod: ")); sstrcat(modListMessage, getModList()); addConsoleMessage(modListMessage,DEFAULT_JUSTIFY, SYSTEM_MESSAGE); if (NetPlay.bComms) @@ -2741,7 +2631,7 @@ static void processMultiopWidgets(UDWORD id) if((id >= MULTIOP_PLAYER_START) && (id <= MULTIOP_PLAYER_END)) // clicked on a player { // options for kicking - if(NetPlay.isHost) + if(NetPlay.isHost && (id - MULTIOP_PLAYER_START != NET_HOST_ONLY) ) // can't kick self! { if(mouseDown(MOUSE_RMB)) // both buttons.... { @@ -3048,6 +2938,13 @@ void frontendMultiMessages(void) char reason[MAX_KICK_REASON]; LOBBY_ERROR_TYPES KICK_TYPE = ERROR_NOERROR; + if (player_id == NET_HOST_ONLY) + { + debug(LOG_ERROR, "someone tried to kick the host--check your netplay logs!"); + NETend(); + break; + } + NETbeginDecode(queue, NET_KICK); NETuint32_t(&player_id); NETstring( reason, MAX_KICK_REASON); diff --git a/src/multijoin.c b/src/multijoin.c index a2fd9fef2..2be788b96 100644 --- a/src/multijoin.c +++ b/src/multijoin.c @@ -152,7 +152,8 @@ void clearPlayer(UDWORD player,BOOL quietly) { psNext = psStruct->psNext; - if(quietly) // don't show effects + // FIXME: look why destroyStruct() doesn't put back the feature like removeStruct() does + if(quietly || psStruct->pStructureType->type == REF_RESOURCE_EXTRACTOR) // don't show effects { removeStruct(psStruct, true); } @@ -207,7 +208,7 @@ BOOL MultiPlayerLeave(UDWORD playerIndex) return false; } - NETlogEntry("Player leaving game", 0, playerIndex); + NETlogEntry("Player leaving game", SYNC_FLAG, playerIndex); debug(LOG_INFO,"** Player %u [%s], has left the game at game time %u.", playerIndex, getPlayerName(playerIndex), gameTime); ssprintf(buf, _("%s has Left the Game"), getPlayerName(playerIndex)); diff --git a/src/multiplay.c b/src/multiplay.c index 0ab1b5205..32ae6335a 100644 --- a/src/multiplay.c +++ b/src/multiplay.c @@ -266,6 +266,7 @@ BOOL multiPlayerLoop(void) sprintf(msg, _("Kicking player %s, because they tried to bypass data integrity check!"), getPlayerName(index)); sendTextMessage(msg, true); addConsoleMessage(msg, LEFT_JUSTIFY, NOTIFY_MESSAGE); + NETlogEntry(msg, SYNC_FLAG, index); #ifndef DEBUG kickPlayer(index, "it is not nice to cheat!", ERROR_CHEAT); @@ -798,6 +799,13 @@ BOOL recvMessage(void) uint32_t player_id; char reason[MAX_KICK_REASON]; + if (player_id == NET_HOST_ONLY) + { + debug(LOG_ERROR, "someone tried to kick the host--check your netplay logs!"); + NETend(); + break; + } + NETbeginDecode(queue, NET_KICK); NETuint32_t(&player_id); NETstring( reason, MAX_KICK_REASON); diff --git a/src/multistruct.c b/src/multistruct.c index 682444bad..2ed4a1583 100644 --- a/src/multistruct.c +++ b/src/multistruct.c @@ -232,7 +232,6 @@ BOOL recvBuildFinished(NETQUEUE queue) buildingComplete(psStruct); } debug(LOG_SYNC, "Created normal building %u for player %u", psStruct->id, player); - NETlogEntry("building finished ok." ,0,0); return true; } @@ -255,8 +254,9 @@ BOOL recvBuildFinished(NETQUEUE queue) psStruct->status = SS_BUILT; buildingComplete(psStruct); debug(LOG_SYNC, "Created modified building %u for player %u", psStruct->id, player); - NETlogEntry("structure id modified", 0, player); - +#if defined (DEBUG) + NETlogEntry("structure id modified", SYNC_FLAG, player); +#endif return true; } } @@ -269,12 +269,14 @@ BOOL recvBuildFinished(NETQUEUE queue) psStruct->status = SS_BUILT; buildingComplete(psStruct); debug(LOG_SYNC, "Huge synch error, forced to create building %u for player %u", psStruct->id, player); - NETlogEntry("had to plonk down a building" ,0,player); +#if defined (DEBUG) + NETlogEntry("had to plonk down a building", SYNC_FLAG, player); +#endif } else { debug(LOG_SYNC, "Gigantic synch error, unable to create building for player %u", player); - NETlogEntry("had to plonk down a building, BUT FAILED OH S**T." ,0,player); + NETlogEntry("had to plonk down a building, BUT FAILED!", SYNC_FLAG, player); } return false; diff --git a/src/multisync.c b/src/multisync.c index a05496109..4af1ca0c0 100644 --- a/src/multisync.c +++ b/src/multisync.c @@ -277,10 +277,8 @@ static PACKAGED_CHECK packageCheck(const DROID *pD) ASSERT(false, "Droid %u body is too high before synch, is %u, which is more than %u.", pc.droidID, pD->body, pD->originalBody); } pc.experience = pD->experience; - pc.pos = pD->pos; + pc.pos = droidGetPrecisePosition(pD); pc.rot = pD->rot; - pc.sMoveX = pD->sMove.fx; - pc.sMoveY = pD->sMove.fy; if (pD->order == DORDER_ATTACK) { pc.targetID = pD->psTarget->id; @@ -312,13 +310,14 @@ BOOL recvDroidCheck(NETQUEUE queue) { DROID * pD; PACKAGED_CHECK pc, pc2; + Position precPos; NETPACKAGED_CHECK(&pc); // Find the droid in question if (!IdToDroid(pc.droidID, pc.player, &pD)) { - NETlogEntry("Recvd Unknown droid info. val=player", 0, pc.player); + NETlogEntry("Recvd Unknown droid info. val=player", SYNC_FLAG, pc.player); debug(LOG_SYNC, "Received checking info for an unknown (as yet) droid. player:%d ref:%d", pc.player, pc.droidID); continue; } @@ -343,14 +342,14 @@ BOOL recvDroidCheck(NETQUEUE queue) #define MERGECOPY(x, y, z) if (pc.y != pc2.y) { debug(LOG_SYNC, "Droid %u out of synch, changing "#x" from %"z" to %"z".", pc.droidID, x, pc.y); x = pc.y; } #define MERGEDELTA(x, y, z) if (pc.y != pc2.y) { debug(LOG_SYNC, "Droid %u out of synch, changing "#x" from %"z" to %"z".", pc.droidID, x, x + pc.y - pc2.y); x += pc.y - pc2.y; } // player not synched here... - MERGEDELTA(pD->pos.x, pos.x, "d"); - MERGEDELTA(pD->pos.y, pos.y, "d"); - MERGEDELTA(pD->pos.z, pos.z, "d"); + precPos = droidGetPrecisePosition(pD); + MERGEDELTA(precPos.x, pos.x, "d"); + MERGEDELTA(precPos.y, pos.y, "d"); + MERGEDELTA(precPos.z, pos.z, "d"); + droidSetPrecisePosition(pD, precPos); MERGEDELTA(pD->rot.direction, rot.direction, "d"); MERGEDELTA(pD->rot.pitch, rot.pitch, "d"); MERGEDELTA(pD->rot.roll, rot.roll, "d"); - MERGEDELTA(pD->sMove.fx, sMoveX, "f"); - MERGEDELTA(pD->sMove.fy, sMoveY, "f"); MERGEDELTA(pD->body, body, "u"); if (pD->body > pD->originalBody) { @@ -432,7 +431,6 @@ BOOL recvDroidCheck(NETQUEUE queue) return true; } - // //////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////// // Structure Checking, to ensure smoke and stuff is consistent across machines. diff --git a/src/objmem.c b/src/objmem.c index 1614ee927..fa1bdbcf3 100644 --- a/src/objmem.c +++ b/src/objmem.c @@ -63,6 +63,7 @@ DROID *apsDroidLists[MAX_PLAYERS]; STRUCTURE *apsStructLists[MAX_PLAYERS]; FEATURE *apsFeatureLists[MAX_PLAYERS]; ///< Only player zero is valid for features. TODO: Reduce to single list. BASE_OBJECT *apsSensorList[1]; ///< List of sensors in the game. +BASE_OBJECT *apsOilList[1]; /*The list of Flag Positions allocated */ FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS]; @@ -126,6 +127,7 @@ static void objmemDestroy(BASE_OBJECT *psObj) audio_RemoveObj(psObj); visRemoveVisibility(psObj); + free(psObj->watchedTiles); free(psObj); debug(LOG_MEMORY, "BASE_OBJECT* 0x%p is freed.", psObj); } @@ -421,7 +423,9 @@ static inline void releaseAllObjectsInList(BASE_OBJECT *list[], OBJECT_DESTRUCTO // Call a specialized destruction function // (will do all cleanup except for releasing memory of object) objectDestructor(psCurr); - visRemoveVisibility(psCurr); + // FIXME: the next call is disabled for now, yes, it will leak memory again. + // issue is with campaign games, and the swapping pointers 'trick' Pumpkin uses. + // visRemoveVisibility(psCurr); // Release object's memory free(psCurr); } @@ -568,6 +572,10 @@ void addStructure(STRUCTURE *psStructToAdd) { addObjectToFuncList(apsSensorList, (BASE_OBJECT*)psStructToAdd, 0); } + else if (psStructToAdd->type == REF_RESOURCE_EXTRACTOR) + { + addObjectToFuncList(apsOilList, (BASE_OBJECT*)psStructToAdd, 0); + } } /* Destroy a structure */ @@ -585,6 +593,10 @@ void killStruct(STRUCTURE *psBuilding) { removeObjectFromFuncList(apsSensorList, (BASE_OBJECT*)psBuilding, 0); } + else if (psBuilding->type == REF_RESOURCE_EXTRACTOR) + { + removeObjectFromFuncList(apsOilList, (BASE_OBJECT*)psBuilding, 0); + } for (i = 0; i < STRUCT_MAXWEAPS; i++) { @@ -645,6 +657,10 @@ void removeStructureFromList(STRUCTURE *psStructToRemove, STRUCTURE *pList[MAX_P { removeObjectFromFuncList(apsSensorList, (BASE_OBJECT*)psStructToRemove, 0); } + else if (psStructToRemove->type == REF_RESOURCE_EXTRACTOR) + { + removeObjectFromFuncList(apsOilList, (BASE_OBJECT*)psStructToRemove, 0); + } } /************************** FEATURE *********************************/ @@ -656,10 +672,14 @@ FEATURE* createFeature() } /* add the feature to the Feature Lists */ - void addFeature(FEATURE *psFeatureToAdd) - { +void addFeature(FEATURE *psFeatureToAdd) +{ addObjectToList((BASE_OBJECT**)apsFeatureLists, (BASE_OBJECT*)psFeatureToAdd, 0); - } + if (psFeatureToAdd->psStats->subType == FEAT_OIL_RESOURCE) + { + addObjectToFuncList(apsOilList, (BASE_OBJECT*)psFeatureToAdd, 0); + } +} /* Destroy a feature */ // set the player to 0 since features have player = maxplayers+1. This screws up destroyObject @@ -670,6 +690,11 @@ void killFeature(FEATURE *psDel) "killFeature: pointer is not a feature" ); psDel->player = 0; destroyObject((BASE_OBJECT**)apsFeatureLists, (BASE_OBJECT*)psDel); + + if (psDel->psStats->subType == FEAT_OIL_RESOURCE) + { + removeObjectFromFuncList(apsOilList, (BASE_OBJECT*)psDel, 0); + } } /* Remove all features */ diff --git a/src/objmem.h b/src/objmem.h index 272784268..e2b6e1380 100644 --- a/src/objmem.h +++ b/src/objmem.h @@ -37,6 +37,7 @@ extern STRUCTURE *apsStructLists[MAX_PLAYERS]; extern FEATURE *apsFeatureLists[MAX_PLAYERS]; extern FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS]; extern BASE_OBJECT *apsSensorList[1]; +extern BASE_OBJECT *apsOilList[1]; /* The list of destroyed objects */ extern BASE_OBJECT *psDestroyedObj; diff --git a/src/order.c b/src/order.c index ef46c2384..929777de3 100644 --- a/src/order.c +++ b/src/order.c @@ -753,14 +753,21 @@ void orderUpdateDroid(DROID *psDroid) { if (!orderDroidList(psDroid)) { - psDroid->order = DORDER_NONE; + psDroid->order = DORDER_NONE; moveToRearm(psDroid); + if (!vtolEmpty(psDroid)) + { + // VTOL droid can do more work, let scripts handle it + psScrVtolRetarget = psDroid; + eventFireCallbackTrigger((TRIGGER_TYPE)CALL_VTOL_RETARGET); + psScrVtolRetarget = NULL; + } } } else { - psDroid->order = DORDER_NONE; - actionDroid(psDroid, DACTION_NONE); + psDroid->order = DORDER_NONE; + actionDroid(psDroid, DACTION_NONE); } } else if ( ((psDroid->action == DACTION_MOVE) || @@ -3176,25 +3183,6 @@ void orderSelectedObjAdd(UDWORD player, BASE_OBJECT *psObj, BOOL add) orderPlayOrderObjAudio( player, psObj ); turnOffMultiMsg(false); //msgs back on. - - //This feels like the wrong place but it has to be done once the order has been received... - //demolish queuing...need to bring the interface back up - if (psDemolish && player == psObj->player) - { - /*this will stop the constructor being able to demolish any other - buildings until the demolish button is re-selected*/ - intDemolishCancel(); - -//turn off the build queue availability until desired release date! -#ifndef DISABLE_BUILD_QUEUE - //re-add the stat (side) interface to allow a new selection - if (ctrlShiftDown()) - { - intConstructorSelected(psDemolish); - } -#endif - } - } void orderSelectedObj(UDWORD player, BASE_OBJECT *psObj) diff --git a/src/order.h b/src/order.h index 1c30fb1af..9701eb629 100644 --- a/src/order.h +++ b/src/order.h @@ -25,7 +25,7 @@ #define __INCLUDED_SRC_ORDER_H__ #include "orderdef.h" -#include "action.h" //Watermelon:needs DROID_OACTION_INFO +#include "structuredef.h" #ifdef __cplusplus extern "C" diff --git a/src/pointtree.cpp b/src/pointtree.cpp index 842641cb3..e38c7acc4 100644 --- a/src/pointtree.cpp +++ b/src/pointtree.cpp @@ -1,3 +1,4 @@ +#include #include "pointtree.h" #include #include diff --git a/src/power.c b/src/power.c index 442516122..6e0cfb480 100644 --- a/src/power.c +++ b/src/power.c @@ -188,7 +188,7 @@ void powerCalc(BOOL on) float updateExtractedPower(STRUCTURE *psBuilding) { RES_EXTRACTOR *pResExtractor; - UDWORD timeDiff; + SDWORD timeDiff; UBYTE modifier; float pointsToAdd,extractedPoints; @@ -199,7 +199,12 @@ float updateExtractedPower(STRUCTURE *psBuilding) //and has got some power to extract if (pResExtractor->active) { - timeDiff = gameTime - pResExtractor->timeLastUpdated; + // if the extractor hasn't been updated recently, now would be a good time. + if (pResExtractor->timeLastUpdated < 20 && gameTime >= 20) + { + pResExtractor->timeLastUpdated = gameTime; + } + timeDiff = (int)gameTime - (int)pResExtractor->timeLastUpdated; // Add modifier according to difficulty level if (getDifficultyLevel() == DL_EASY) { @@ -216,6 +221,14 @@ float updateExtractedPower(STRUCTURE *psBuilding) // include modifier as a % pointsToAdd = ((float)modifier * EXTRACT_POINTS * timeDiff) / (GAME_TICKS_PER_SEC * 100); + if (timeDiff > GAME_TICKS_PER_SEC || -timeDiff > GAME_TICKS_PER_SEC) + { + // extractor is not in the right time zone + // we have a maximum time skip of less than a second, so this can't be caused by lag + ASSERT(false, "Oil derrick out of sync."); + pointsToAdd = 0; + } + pResExtractor->timeLastUpdated = gameTime; extractedPoints += pointsToAdd; diff --git a/src/projectile.h b/src/projectile.h index 02420ad7b..8aaff5532 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -21,11 +21,8 @@ #ifndef __INCLUDED_SRC_PROJECTILE_H__ #define __INCLUDED_SRC_PROJECTILE_H__ -#include "lib/framework/types.h" -#include "basedef.h" -#include "statsdef.h" -#include "movedef.h" -#include "lib/gamelib/anim.h" +#include "projectiledef.h" +#include "weapondef.h" #ifdef __cplusplus extern "C" diff --git a/src/radar.c b/src/radar.c index 6dadbba26..1dcafb4e9 100644 --- a/src/radar.c +++ b/src/radar.c @@ -83,7 +83,8 @@ static PIELIGHT flashColours[MAX_PLAYERS]= }; static SDWORD radarWidth, radarHeight, radarCenterX, radarCenterY, radarTexWidth, radarTexHeight; -static float RadarZoom; +static uint8_t RadarZoom; +static float RadarZoomMultiplier = 1.0f; static UDWORD radarBufferSize = 0; static void DrawRadarTiles(void); @@ -91,8 +92,9 @@ static void DrawRadarObjects(void); static void DrawRadarExtras(float radarX, float radarY, float pixSizeH, float pixSizeV); static void DrawNorth(void); -static void radarSize(float zoom) +static void radarSize(int ZoomLevel) { + float zoom = (float)ZoomLevel * RadarZoomMultiplier / 16.0; radarWidth = radarTexWidth * zoom; radarHeight = radarTexHeight * zoom; radarCenterX = pie_GetVideoBufferWidth() - BASE_GAP * 4 - MAX(radarHeight, radarWidth)/2; @@ -104,8 +106,8 @@ void radarInitVars(void) { radarTexWidth = 0; radarTexHeight = 0; - RadarZoom = 1.0f; - debug(LOG_WZ, "Resetting radar zoom to %f", RadarZoom); + RadarZoom = DEFAULT_RADARZOOM; + debug(LOG_WZ, "Resetting radar zoom to %u", RadarZoom); radarSize(RadarZoom); } @@ -145,8 +147,8 @@ BOOL resizeRadar(void) return false; } memset(radarBuffer, 0, radarBufferSize); - RadarZoom = (float)MAX(RADWIDTH, RADHEIGHT) / (float)MAX(radarTexWidth, radarTexHeight); - debug(LOG_WZ, "Setting radar zoom to %f", RadarZoom); + RadarZoomMultiplier = (float)MAX(RADWIDTH, RADHEIGHT) / (float)MAX(radarTexWidth, radarTexHeight); + debug(LOG_WZ, "Setting radar zoom to %u", RadarZoom); radarSize(RadarZoom); return true; @@ -162,17 +164,26 @@ BOOL ShutdownRadar(void) return true; } -void SetRadarZoom(float ZoomLevel) +void SetRadarZoom(uint8_t ZoomLevel) { - if (ZoomLevel <= MAX_RADARZOOM && ZoomLevel >= MIN_RADARZOOM) + if (ZoomLevel < 4) // old savegame format didn't save zoom levels very well { - debug(LOG_WZ, "Setting radar zoom to %f from %f", ZoomLevel, RadarZoom); - RadarZoom = ZoomLevel; - radarSize(ZoomLevel); + ZoomLevel = DEFAULT_RADARZOOM; } + if (ZoomLevel > MAX_RADARZOOM) + { + ZoomLevel = MAX_RADARZOOM; + } + if (ZoomLevel < MIN_RADARZOOM) + { + ZoomLevel = MIN_RADARZOOM; + } + debug(LOG_WZ, "Setting radar zoom to %u from %u", ZoomLevel, RadarZoom); + RadarZoom = ZoomLevel; + radarSize(RadarZoom); } -float GetRadarZoom(void) +uint8_t GetRadarZoom(void) { return RadarZoom; } diff --git a/src/radar.h b/src/radar.h index 090393129..d05a225bd 100644 --- a/src/radar.h +++ b/src/radar.h @@ -35,9 +35,10 @@ extern "C" void radarColour(UDWORD tileNumber, uint8_t r, uint8_t g, uint8_t b); ///< Set radar colour for given terrain type. -#define MAX_RADARZOOM 2.50f -#define MIN_RADARZOOM 0.75f -#define RADARZOOM_STEP 0.25f +#define MAX_RADARZOOM (16 * 10/4) // 2.50x +#define MIN_RADARZOOM (16 * 3/4) // 0.75x +#define DEFAULT_RADARZOOM (16) // 1.00x +#define RADARZOOM_STEP (16 * 1/4) // 0.25x extern void resetRadarRedraw(void); extern BOOL InitRadar(void); ///< Initialize minimap subsystem. @@ -45,8 +46,8 @@ extern BOOL ShutdownRadar(void); ///< Shutdown minimap subsystem. extern BOOL resizeRadar(void); ///< Recalculate minimap size. For initialization code only. extern void drawRadar(void); ///< Draw the minimap on the screen. extern void CalcRadarPosition(int mX, int mY, int *PosX, int *PosY); ///< Given a position within the radar, returns a world coordinate. -extern void SetRadarZoom(float ZoomLevel); ///< Set current zoom level. 1.0 is 1:1 resolution. -extern float GetRadarZoom(void); ///< Get current zoom level. +extern void SetRadarZoom(uint8_t ZoomLevel); ///< Set current zoom level. 1.0 is 1:1 resolution. +extern uint8_t GetRadarZoom(void); ///< Get current zoom level. extern BOOL CoordInRadar(int x, int y); ///< Is screen coordinate inside minimap? /** Different mini-map draw modes. */ diff --git a/src/scriptai.c b/src/scriptai.c index 2c77fd2e7..9a14c55e3 100644 --- a/src/scriptai.c +++ b/src/scriptai.c @@ -1637,7 +1637,6 @@ BOOL scrSkDoResearch(void) SDWORD player, bias;//,timeToResearch;//,*x,*y; UWORD i; - char sTemp[128]; STRUCTURE *psBuilding; RESEARCH_FACILITY *psResFacilty; PLAYER_RESEARCH *pPlayerRes; @@ -1696,8 +1695,13 @@ BOOL scrSkDoResearch(void) } } - sprintf(sTemp,"player:%d starts topic: %s",player, asResearch[i].pName ); - NETlogEntry(sTemp,0,0); +#if defined (DEBUG) + { + char sTemp[128]; + sprintf(sTemp,"player:%d starts topic: %s",player, asResearch[i].pName ); + NETlogEntry(sTemp, SYNC_FLAG, 0); + } +#endif } return true; diff --git a/src/scriptcb.c b/src/scriptcb.c index 1c5231675..c643c658f 100644 --- a/src/scriptcb.c +++ b/src/scriptcb.c @@ -57,6 +57,8 @@ STRUCTURE *psScrCBNewDroidFact; // id of factory that built it. // the attacker and target for a CALL_ATTACKED BASE_OBJECT *psScrCBAttacker, *psScrCBTarget; +// vtol target +DROID *psScrVtolRetarget = NULL; // alliance details UDWORD CBallFrom,CBallTo; @@ -184,6 +186,35 @@ BOOL scrCBStructAttacked(void) return true; } +BOOL scrCBVTOLRetarget(void) +{ + SDWORD player; + DROID **ppsDroid; + + if (!stackPopParams(2, VAL_INT, &player, VAL_REF|ST_DROID, &ppsDroid)) + { + return false; + } + ASSERT_OR_RETURN(false, player < MAX_PLAYERS && player >= 0, "Invalid player %d", player); + + if (player == psScrVtolRetarget->player) + { + *ppsDroid = psScrVtolRetarget; + scrFunctionResult.v.bval = true; + } + else + { + *ppsDroid = NULL; + scrFunctionResult.v.bval = false; + } + if (!stackPushResult(VAL_BOOL, &scrFunctionResult)) + { + return false; + } + + return true; +} + // Deal with a CALL_DROID_ATTACKED BOOL scrCBDroidAttacked(void) { diff --git a/src/scriptcb.h b/src/scriptcb.h index c9e58600b..ebcfac0dd 100644 --- a/src/scriptcb.h +++ b/src/scriptcb.h @@ -52,6 +52,7 @@ extern DROID *psScrCBNewDroid; extern STRUCTURE *psScrCBNewDroidFact; extern DROID *psScrCBOrderDroid; extern SDWORD psScrCBOrder; +extern DROID *psScrVtolRetarget; //Script key event callback extern SDWORD cbPressedMetaKey; @@ -138,6 +139,9 @@ extern BOOL scrCBResCompleted(void); /* when a player leaves the game*/ extern BOOL scrCBPlayerLeft(void); +/* when a VTOL runs out of things to do while mid-air */ +extern BOOL scrCBVTOLRetarget(void); + // alliance offered. extern BOOL scrCBAllianceOffer(void); extern UDWORD CBallFrom,CBallTo; diff --git a/src/scriptfuncs.c b/src/scriptfuncs.c index 61a21cd25..5cf2a53f7 100644 --- a/src/scriptfuncs.c +++ b/src/scriptfuncs.c @@ -10447,7 +10447,6 @@ BOOL scrPursueResearch(void) BOOL found; PLAYER_RESEARCH *pPlayerRes; - char sTemp[128]; STRUCTURE *psBuilding; RESEARCH_FACILITY *psResFacilty; @@ -10620,9 +10619,13 @@ BOOL scrPursueResearch(void) psResFacilty->timeToResearch = 1; } } - - sprintf(sTemp,"player:%d starts topic: %s",player, asResearch[foundIndex].pName ); - NETlogEntry(sTemp,0,0); +#if defined (DEBUG) + { + char sTemp[128]; + sprintf(sTemp,"player:%d starts topic: %s",player, asResearch[foundIndex].pName ); + NETlogEntry(sTemp, SYNC_FLAG, 0); + } +#endif } scrFunctionResult.v.bval = found; diff --git a/src/scripttabs.c b/src/scripttabs.c index e96e2c458..97259b2d8 100644 --- a/src/scripttabs.c +++ b/src/scripttabs.c @@ -1951,12 +1951,16 @@ CONST_SYMBOL asConstantTable[] = { "IMAGE_CURSOR_BUILD", VAL_INT, false, IMAGE_CURSOR_BUILD, NULL, NULL, 0.0f }, { "IMAGE_CURSOR_GUARD", VAL_INT, false, IMAGE_CURSOR_GUARD, NULL, NULL, 0.0f }, - { "IMAGE_CURSOR_BRIDGE", VAL_INT, false, IMAGE_CURSOR_BRIDGE, NULL, NULL, 0.0f }, + { "IMAGE_CURSOR_SCOUT", VAL_INT, false, IMAGE_CURSOR_SCOUT, NULL, NULL, 0.0f }, + { "IMAGE_CURSOR_DISEMBARK",VAL_INT, false, IMAGE_CURSOR_DISEMBARK, NULL, NULL, 0.0f }, { "IMAGE_CURSOR_ATTACH", VAL_INT, false, IMAGE_CURSOR_ATTACH, NULL, NULL, 0.0f }, { "IMAGE_CURSOR_LOCKON", VAL_INT, false, IMAGE_CURSOR_LOCKON, NULL, NULL, 0.0f }, { "IMAGE_CURSOR_FIX", VAL_INT, false, IMAGE_CURSOR_FIX, NULL, NULL, 0.0f }, { "IMAGE_CURSOR_EMBARK", VAL_INT, false, IMAGE_CURSOR_EMBARK, NULL, NULL, 0.0f }, + { "IMAGE_CURSOR_BRIDGE", VAL_INT, false, IMAGE_CURSOR_BRIDGE, NULL, NULL, 0.0f }, + { "IMAGE_CURSOR_BOMB", VAL_INT, false, IMAGE_CURSOR_BOMB, NULL, NULL, 0.0f }, + // game mode types (possible values for intMode) { "INT_NORMAL", VAL_INT, false, INT_NORMAL, NULL, NULL, 0.0f }, // Standard mode (just the reticule) @@ -2253,8 +2257,11 @@ CALLBACK_SYMBOL asCallbackTable[] = { "CALL_DROID_REACH_LOCATION",(TRIGGER_TYPE)CALL_DROID_REACH_LOCATION, scrCBDorderReachedLocation,3, { VAL_INT, VAL_REF|(INTERP_TYPE)ST_DROID, VAL_REF | VAL_INT } }, - { "CALL_KEY_PRESSED", (TRIGGER_TYPE)CALL_KEY_PRESSED, - scrCBProcessKeyPress,2, { VAL_REF | VAL_INT, VAL_REF| VAL_INT} }, + { "CALL_KEY_PRESSED", (TRIGGER_TYPE)CALL_KEY_PRESSED, + scrCBProcessKeyPress, 2, { VAL_REF | VAL_INT, VAL_REF| VAL_INT} }, + + { "CALL_VTOL_RETARGET", (TRIGGER_TYPE)CALL_VTOL_RETARGET, + scrCBVTOLRetarget, 2, { VAL_INT, VAL_REF| (INTERP_TYPE)ST_DROID } }, /* This entry marks the end of the callback list */ { "CALLBACK LIST END", 0, NULL, 0, {VAL_VOID} } diff --git a/src/scripttabs.h b/src/scripttabs.h index db2aafe54..a87274689 100644 --- a/src/scripttabs.h +++ b/src/scripttabs.h @@ -102,6 +102,7 @@ typedef enum _scr_callback_types CALL_DORDER_STOP, // Fired when droid is forced to stop via user interface CALL_DROID_REACH_LOCATION, // Fired when droid reached the destination and stopped on its own CALL_KEY_PRESSED, // Allows to process key presses, mainly for debug purposes + CALL_VTOL_RETARGET, // VTOL is out of targets } SCR_CALLBACK_TYPES; // The table of user types for the compiler diff --git a/src/seqdisp.c b/src/seqdisp.c index 2f9494e7a..045ea2e6a 100644 --- a/src/seqdisp.c +++ b/src/seqdisp.c @@ -381,6 +381,10 @@ BOOL seq_UpdateFullScreenVideo(int *pbClear) { aSeqList[currentPlaySeq].aText[i].x = 20 + D_W2; } + iV_SetTextColour(WZCOL_GREY); + iV_DrawText(&(aSeqList[currentPlaySeq].aText[i].pText[0]), + aSeqList[currentPlaySeq].aText[i].x + 1, aSeqList[currentPlaySeq].aText[i].y + 1); + iV_SetTextColour(WZCOL_TEXT_BRIGHT); iV_DrawText(&(aSeqList[currentPlaySeq].aText[i].pText[0]), aSeqList[currentPlaySeq].aText[i].x, aSeqList[currentPlaySeq].aText[i].y); } @@ -390,6 +394,10 @@ BOOL seq_UpdateFullScreenVideo(int *pbClear) { aSeqList[currentPlaySeq].aText[i].x = 20 + D_W2; } + iV_SetTextColour(WZCOL_GREY); + iV_DrawText(&(aSeqList[currentPlaySeq].aText[i].pText[0]), + aSeqList[currentPlaySeq].aText[i].x + 1, aSeqList[currentPlaySeq].aText[i].y + 1); + iV_SetTextColour(WZCOL_TEXT_BRIGHT); iV_DrawText(&(aSeqList[currentPlaySeq].aText[i].pText[0]), aSeqList[currentPlaySeq].aText[i].x, aSeqList[currentPlaySeq].aText[i].y); } @@ -617,7 +625,7 @@ static BOOL seq_AddTextFromFile(const char *pTextName, SEQ_TEXT_POSITIONING text ASSERT(pText != NULL, "error parsing text file"); if (pText != NULL) { - seq_AddTextForVideo(&pText[1], xOffset, yOffset, startFrame, endFrame, textJustification); + seq_AddTextForVideo(_(&pText[1]), xOffset, yOffset, startFrame, endFrame, textJustification); } } } diff --git a/src/structure.c b/src/structure.c index 9a622f9bd..5149071be 100644 --- a/src/structure.c +++ b/src/structure.c @@ -1397,7 +1397,6 @@ static SDWORD structChooseWallType(UDWORD player, UDWORD mapX, UDWORD mapY) SDWORD neighbourType, scanType; STRUCTURE_STATS *psStats; UDWORD sx,sy; - UDWORD oldBuildPoints; // scan around the location looking for walls memset(aWallPresent, 0, sizeof(aWallPresent)); @@ -1410,7 +1409,8 @@ static SDWORD structChooseWallType(UDWORD player, UDWORD mapX, UDWORD mapY) (psStruct->pStructureType->type == REF_WALL || psStruct->pStructureType->type == REF_GATE || psStruct->pStructureType->type == REF_WALLCORNER || - psStruct->pStructureType->type == REF_DEFENSE)) + (psStruct->pStructureType->type == REF_DEFENSE && psStruct->pStructureType->strength == STRENGTH_HARD) || + (psStruct->pStructureType->type == REF_BLASTDOOR && psStruct->pStructureType->strength == STRENGTH_HARD))) // fortresses { aWallPresent[xdiff+2][ydiff+2] = true; apsStructs[xdiff+2][ydiff+2] = psStruct; @@ -1459,37 +1459,23 @@ static SDWORD structChooseWallType(UDWORD player, UDWORD mapX, UDWORD mapY) // change to a corner if (psStruct->pStructureType->asFuncList[0]->type == WALL_TYPE) { - const int oldBody = psStruct->body; + const int oldBody = psStruct->body; + UDWORD oldBuildPoints = psStruct->currentBuildPts; + STRUCT_STATES oldStatus = psStruct->status; - /* Still being built - so save and load build points */ - if(psStruct->status == SS_BEING_BUILT) + psStats = ((WALL_FUNCTION *)psStruct->pStructureType->asFuncList[0])->pCornerStat; + sx = psStruct->pos.x; sy = psStruct->pos.y; + removeStruct(psStruct, true); + powerCalc(false); + psStruct = buildStructure(psStats, sx,sy, player, true); + powerCalc(true); + if (psStruct != NULL) { - oldBuildPoints = psStruct->currentBuildPts; - psStats = ((WALL_FUNCTION *)psStruct->pStructureType->asFuncList[0])->pCornerStat; - sx = psStruct->pos.x; sy = psStruct->pos.y; - removeStruct(psStruct, true); - powerCalc(false); - psStruct = buildStructure(psStats, sx,sy, player, true); - powerCalc(true); - if(psStruct !=NULL) + psStruct->status = oldStatus; + psStruct->body = oldBody; + psStruct->currentBuildPts = (SWORD)oldBuildPoints; + if (oldStatus != SS_BEING_BUILT) { - psStruct->status = SS_BEING_BUILT; - psStruct->body = oldBody; - psStruct->currentBuildPts = (SWORD)oldBuildPoints; - } - } - else - { - psStats = ((WALL_FUNCTION *)psStruct->pStructureType->asFuncList[0])->pCornerStat; - sx = psStruct->pos.x; sy = psStruct->pos.y; - removeStruct(psStruct, true); - powerCalc(false); - psStruct = buildStructure(psStats, sx,sy, player, true); - powerCalc(true); - if(psStruct !=NULL) - { - psStruct->status = SS_BUILT; - psStruct->body = oldBody; buildingComplete(psStruct); } } @@ -1625,9 +1611,8 @@ STRUCTURE* buildStructureDir(STRUCTURE_STATS *pStructureType, UDWORD x, UDWORD y if (!FromSave && (pStructureType->type == REF_WALL || pStructureType->type == REF_GATE)) { wallType = structChooseWallType(player, map_coord(x), map_coord(y)); - if (wallType == WALL_CORNER) + if (wallType == WALL_CORNER && pStructureType->type != REF_GATE) { - ASSERT_OR_RETURN(NULL, pStructureType->type != REF_GATE, "Cannot build corner gates!"); if (pStructureType->asFuncList[0]->type == WALL_TYPE) { pStructureType = ((WALL_FUNCTION *)pStructureType->asFuncList[0])->pCornerStat; @@ -4225,14 +4210,6 @@ BOOL validLocation(BASE_STATS *psStats, UDWORD x, UDWORD y, UDWORD player, site.xBR = (UWORD)(x + psBuilding->baseWidth - 1); site.yBR = (UWORD)(y + psBuilding->baseBreadth - 1); - // increase the size of a repair facility - if (psBuilding->type == REF_REPAIR_FACILITY) - { - site.xTL -= 1; - site.yTL -= 1; - site.xBR += 1; - site.yBR += 1; - } //if we're dragging the wall/defense we need to check along the current dragged size if (wallDrag.status != DRAG_INACTIVE && (psBuilding->type == REF_WALL || psBuilding->type == REF_DEFENSE || psBuilding->type == REF_REARM_PAD || psBuilding->type == REF_GATE) @@ -4347,30 +4324,6 @@ BOOL validLocation(BASE_STATS *psStats, UDWORD x, UDWORD y, UDWORD player, } } - // can't build next to a repair facility - for (psStruct = apsStructLists[player]; psStruct; psStruct = psStruct->psNext) - { - if (psStruct->pStructureType->type == REF_REPAIR_FACILITY) - { - // get the top left of the struct - i = map_coord(psStruct->pos.x) - 1; - j = map_coord(psStruct->pos.y) - 1; - - // see if the x extents overlap - if ((site.xTL >= i && site.xTL <= (i+2)) || - (site.xBR >= i && site.xBR <= (i+2))) - { - // now see if y extents overlap - if ((site.yTL >= j && site.yTL <= (j+2)) || - (site.yBR >= j && site.yBR <= (j+2))) - { - valid = false; - goto failed; - } - } - } - } - if (psStats->ref >= REF_STRUCTURE_START && psStats->ref < (REF_STRUCTURE_START + REF_RANGE)) { @@ -4430,38 +4383,6 @@ BOOL validLocation(BASE_STATS *psStats, UDWORD x, UDWORD y, UDWORD player, } } - // special droid/max-min test for repair facility - if ( valid && (psBuilding->type == REF_REPAIR_FACILITY)) - { - getTileMaxMin(x, y, &max, &min); - if ((max - min) > MAX_INCLINE) - { - valid = false; - } - if (valid && - !noDroid(x,y)) - { - valid = false; - } - } - - if (valid && // only do if necessary - (psBuilding->type != REF_REPAIR_FACILITY)) - { - for (i = site.xTL; i <= site.xBR && valid; i++) - { - for (j = site.yTL; j <= site.yBR && valid; j++) - { - // This really needs to check to see if the droid that's in the way is the droid that wants to build - // in which case it should'nt invalidate the location. - if(noDroid(i,j) == false) - { - valid = false; - } - } - } - } - //walls/defensive structures can be built along any ground if (valid && // only do if necessary (!(psBuilding->type == REF_REPAIR_FACILITY || @@ -4486,68 +4407,54 @@ BOOL validLocation(BASE_STATS *psStats, UDWORD x, UDWORD y, UDWORD player, //don't bother checking if already found a problem if (valid) { - //on PC - defence structures can be built next to anything now- AB 22/09/98 - //and the Missile_Silo (special case) - AB 01/03/99 - if (!(psBuilding->type == REF_DEFENSE || - psBuilding->type == REF_WALL || - psBuilding->type == REF_WALLCORNER || - psBuilding->type == REF_GATE || - psBuilding->type == REF_REARM_PAD || - psBuilding->type == REF_MISSILE_SILO)) + /* need to check there is one tile between buildings */ + for (i = (UWORD)(site.xTL-1); i <= (UWORD)(site.xBR+1); i++) { - /*need to check there is one tile between buildings*/ - for (i = (UWORD)(site.xTL-1); i <= (UWORD)(site.xBR+1); i++) + for (j = (UWORD)(site.yTL-1); j <= (UWORD)(site.yBR+1); j++) { - for (j = (UWORD)(site.yTL-1); j <= (UWORD)(site.yBR+1); j++) + //skip the actual area the structure will cover + if (i < site.xTL || i > site.xBR || + j < site.yTL || j > site.yBR) { - //skip the actual area the structure will cover - if (i < site.xTL || i > site.xBR || - j < site.yTL || j > site.yBR) - { - if (TileHasStructure(mapTile(i,j))) - { - psStruct = getTileStructure(i,j); - if (psStruct) - { - //you can build anything next to a defensive structure - if ((psStruct->pStructureType->type != REF_DEFENSE) && - (psStruct->pStructureType->type != REF_WALL) && - (psStruct->pStructureType->type != REF_WALLCORNER) - ) - { - //Walls can be built next to walls and defenses - AB 03/03/99 - if (psBuilding->type == REF_WALL) - { - if (!(psStruct->pStructureType->type == REF_WALL || - psStruct->pStructureType->type == REF_WALLCORNER)) - { - valid = false; - } - } - else - { - valid = false; - } - } - else // is a defense. - { // skirmish players don't build defensives next to each other.(route hack) - if( bMultiPlayer && game.type == SKIRMISH && !isHumanPlayer(player) ) - { - valid = false; - } - } - } - } - //cannot build within one tile of a oil resource - if(TileHasFeature(mapTile(i,j))) - { - FEATURE *psFeat = getTileFeature(i, j); + FEATURE *psFeat; - if (psFeat && psFeat->psStats->subType == - FEAT_OIL_RESOURCE) + if (TileHasStructure(mapTile(i,j)) && (psStruct = getTileStructure(i,j))) + { + if (psBuilding->type == REF_REPAIR_FACILITY || + psStruct->pStructureType->type == REF_REPAIR_FACILITY) + { + valid = false; + } + // these can be built next to anything + else if (!(psBuilding->type == REF_DEFENSE || + psBuilding->type == REF_WALL || + psBuilding->type == REF_WALLCORNER || + psBuilding->type == REF_GATE || + psBuilding->type == REF_REARM_PAD || + psBuilding->type == REF_MISSILE_SILO)) + { + if (!(psStruct->pStructureType->type == REF_DEFENSE || + psStruct->pStructureType->type == REF_WALL || + psStruct->pStructureType->type == REF_WALLCORNER || + psStruct->pStructureType->type == REF_GATE || + psStruct->pStructureType->type == REF_REARM_PAD || + psStruct->pStructureType->type == REF_MISSILE_SILO)) { valid = false; } + // skirmish AIs don't build nondefensives next to anything. (route hack) + else if (bMultiPlayer && game.type == SKIRMISH && !isHumanPlayer(player)) + { + valid = false; + } + } + } + //cannot build within one tile of a oil resource + if (TileHasFeature(mapTile(i,j)) && (psFeat = getTileFeature(i, j))) + { + if (psFeat->psStats->subType == FEAT_OIL_RESOURCE) + { + valid = false; } } } @@ -4691,15 +4598,6 @@ BOOL validLocation(BASE_STATS *psStats, UDWORD x, UDWORD y, UDWORD player, psOrderTarget)->baseBreadth; up = map_coord(psDroid->asOrderList[order].y) - size/2; down = up + size; - // increase the size of a repair facility - if (((STRUCTURE_STATS *)psDroid->asOrderList[ - order].psOrderTarget)->type == REF_REPAIR_FACILITY) - { - left -= 1; - up -= 1; - right += 1; - down += 1; - } if (((left > site.xTL-1 && left <= site.xBR+1) && (up > site.yTL-1 && up <= site.yBR+1)) || ((right > site.xTL-1 && right <= site.xBR+1) && diff --git a/src/terrain.c b/src/terrain.c index ca306e89a..6c2453bf2 100644 --- a/src/terrain.c +++ b/src/terrain.c @@ -28,7 +28,7 @@ * The water is drawn using the hardcoded page-80 and page-81 textures. */ -#include "lib/ivis_opengl/GLee.h" +#include #include #include "lib/framework/frame.h" @@ -1176,7 +1176,7 @@ void drawTerrain(void) ////////////////////////////////////// // canvas to draw on glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); + pie_SetRendMode(REND_OPAQUE); // we only draw in the depth buffer of using fog of war, as the clear color is black then if (rendStates.fogEnabled) { @@ -1347,7 +1347,7 @@ void drawTerrain(void) //////////////////////////////// // disable the lightmap texture glActiveTexture(GL_TEXTURE1); - glDisable(GL_TEXTURE_2D); + pie_SetTexturePage(TEXPAGE_NONE); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glActiveTexture(GL_TEXTURE0); @@ -1402,8 +1402,7 @@ void drawWater(void) glTranslatef(waterOffset, 0, 0); // multiplicative blending - glEnable(GL_BLEND); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); + pie_SetRendMode(REND_MULTIPLICATIVE); // second texture unit glActiveTexture(GL_TEXTURE1); diff --git a/src/transporter.c b/src/transporter.c index 7bb1bd410..a85b83b45 100644 --- a/src/transporter.c +++ b/src/transporter.c @@ -937,13 +937,8 @@ BOOL intAddDroidsAvailForm(void) sBarInit.width = STAT_PROGBARWIDTH; sBarInit.height = STAT_PROGBARHEIGHT; sBarInit.size = 50; - sBarInit.sCol.byte.r = STAT_PROGBARMAJORRED; - sBarInit.sCol.byte.g = STAT_PROGBARMAJORGREEN; - sBarInit.sCol.byte.b = STAT_PROGBARMAJORBLUE; - sBarInit.sMinorCol.byte.r = STAT_PROGBARMINORRED; - sBarInit.sMinorCol.byte.g = STAT_PROGBARMINORGREEN; - sBarInit.sMinorCol.byte.b = STAT_PROGBARMINORBLUE; - + sBarInit.sCol = WZCOL_ACTION_PROGRESS_BAR_MAJOR; + sBarInit.sMinorCol = WZCOL_ACTION_PROGRESS_BAR_MINOR; //add droids built before the mission for (psDroid = mission.apsDroidLists[selectedPlayer]; psDroid != NULL; diff --git a/src/warzoneconfig.c b/src/warzoneconfig.c index d83fb38fc..89611d26c 100644 --- a/src/warzoneconfig.c +++ b/src/warzoneconfig.c @@ -46,7 +46,6 @@ typedef struct _warzoneGlobals FMV_MODE FMVmode; BOOL bFog; SWORD effectsLevel; - BOOL allowSubtitles; BOOL Fullscreen; BOOL soundEnabled; BOOL trapCursor; @@ -95,14 +94,6 @@ void war_SetDefaultStates(void)//Sets all states war_SetMusicEnabled(true); } -void war_SetAllowSubtitles(BOOL b) { - warGlobs.allowSubtitles = b; -} - -BOOL war_GetAllowSubtitles(void) { - return warGlobs.allowSubtitles; -} - void war_setFullscreen(BOOL b) { warGlobs.Fullscreen = b; } diff --git a/src/wrappers.c b/src/wrappers.c index 0e758065a..779d6bfe4 100644 --- a/src/wrappers.c +++ b/src/wrappers.c @@ -69,7 +69,7 @@ static STAR newStar(void) STAR s; s.xPos = rand() % barRightX; s.speed = (rand() % 30 + 6) * pie_GetVideoBufferWidth() / 640.0; - s.colour = pal_Grey(150 + rand() % 100); + s.colour = pal_SetBrightness(150 + rand() % 100); return s; } @@ -154,6 +154,9 @@ TITLECODE titleLoop(void) pie_SetMouse(CURSOR_DEFAULT, war_GetColouredCursor()); } + if (titleMode != MULTIOPTION && titleMode != MULTILIMIT && titleMode != STARTGAME) + screen_disableMapPreview(); + switch(titleMode) // run relevant title screen code. { // MULTIPLAYER screens @@ -278,7 +281,7 @@ TITLECODE titleLoop(void) //loadbar update void loadingScreenCallback(void) { - const PIELIGHT loadingbar_background = pal_RGBA(0, 0, 0, 24); + const PIELIGHT loadingbar_background = WZCOL_LOADING_BAR_BACKGROUND; const uint32_t currTick = SDL_GetTicks(); unsigned int i; diff --git a/tests/Makefile.am b/tests/Makefile.am index 99f6d5c1e..1e0b5ee0c 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -9,7 +9,7 @@ check_PROGRAMS = \ maptest \ pointtreetest -astartest_SOURCES = astartest.c +astartest_SOURCES = astartest.c ../lib/framework/debug.c astartest_LDADD = $(SDL_LIBS) maptest_SOURCES = ../tools/map/mapload.c maptest.c diff --git a/tests/astartest.c b/tests/astartest.c index 592cd2f06..847b1f73d 100644 --- a/tests/astartest.c +++ b/tests/astartest.c @@ -4,15 +4,21 @@ #include #include #include + +#define mapX 64 +#define mapY 48 +#define IMPASSABLE 255 + +int mapWidth = mapX; +int mapHeight = mapY; + #include "../lib/framework/frame.h" +#include "../lib/framework/debug.h" #include "../lib/framework/types.h" #include "../lib/framework/macros.h" #include "../lib/framework/vector.h" #include "../src/movedef.h" - -#define ASSERT(expr, ...) -#define LOG_ERROR 0 -#define debug(level, ...) +#include "../src/map.h" /* Faux declarations */ void fpathHardTableReset(void); @@ -23,9 +29,6 @@ typedef enum _fpath_movetype FMT_ATTACK, ///< Assume that we will destroy enemy obstacles } FPATH_MOVETYPE; -typedef int PROPULSION_TYPE; -typedef int DROID_TYPE; - typedef struct _jobNode { PROPULSION_TYPE propulsion; @@ -45,21 +48,6 @@ typedef enum ASR_NEAREST, ///< found a partial route to a nearby position } ASTAR_RESULT; -#define TILE_SHIFT 7 - -static inline int32_t world_coord(int32_t mapCoord) -{ - return mapCoord << TILE_SHIFT; -} - -static inline int32_t map_coord(int32_t worldCoord) -{ - return worldCoord >> TILE_SHIFT; -} - -#define mapX 64 -#define mapY 48 -#define IMPASSABLE 255 static unsigned char testmap[mapX][mapY]; static inline BOOL fpathBaseBlockingTile(SDWORD x, SDWORD y, PROPULSION_TYPE propulsion, int player, FPATH_MOVETYPE moveType) diff --git a/tests/pointtreetest.c b/tests/pointtreetest.c index d0f8af232..23aa12ad4 100644 --- a/tests/pointtreetest.c +++ b/tests/pointtreetest.c @@ -1,8 +1,8 @@ -#include "../src/pointtree.h" +#include #include #include #include -#include +#include "../src/pointtree.h" #define NUM_POINTS 100000 #define NUM_SLOW_CHECKS 1 diff --git a/tools/3ds2pie/3ds2pie.c b/tools/3ds2pie/3ds2pie.c deleted file mode 100644 index e4bd3175c..000000000 --- a/tools/3ds2pie/3ds2pie.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - * The 3D Studio File Format Library - * Copyright (C) 1996-2001 by J.E. Hoffmann - * All rights reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#else -typedef int bool; -#define PATH_MAX 255 -#define true 1 -#define false 0 -#endif - -// Based on 3ds2m.c from lib3ds - -// gcc -o 3ds2pie 3ds2pie.c -Wall -g -O0 `pkg-config --cflags --libs lib3ds` -Wshadow - -// Make a string lower case -static void resToLower(char *pStr) -{ - while (*pStr != 0) - { - *pStr = tolower(*pStr); - pStr += 1; - } -} - - -void dump_pie_file(Lib3dsFile *f, FILE *o, const char *page, bool swapYZ, bool invertUV, bool reverseWinding, unsigned int baseTexFlags, float scaleFactor) -{ - Lib3dsMesh *m; - Lib3dsMaterial *material; - int meshIdx, j; - - fprintf(o, "PIE 2\n"); - fprintf(o, "TYPE 200\n"); - - for (j = 0, material = f->materials; material; material = material->next, j++) - { - Lib3dsTextureMap *texture = &material->texture1_map; - - resToLower(texture->name); - if (j > 0) - { - fprintf(stderr, "Texture %d %s-%s: More than one texture currently not supported!\n", j, page, texture->name); - continue; - } - fprintf(o, "TEXTURE %d %s-%s 256 256\n", j, page, texture->name); - } - - for (j = 0, m = f->meshes; m; m = m->next, j++); - fprintf(o, "LEVELS %d\n", j); - - for (meshIdx = 0, m = f->meshes; m; m = m->next, meshIdx++) - { - unsigned int i; - - if (meshIdx > 0) - { - fprintf(stderr, "Mesh %d %s: More than one frame currently not supported!\n", meshIdx, m->name); - continue; - } - - fprintf(o, "LEVEL %d\n", meshIdx + 1); - fprintf(o, "POINTS %d\n", m->points); - for (i = 0; i < m->points; i++) - { - Lib3dsVector pos; - - lib3ds_vector_copy(pos, m->pointL[i].pos); - - if (swapYZ) - { - fprintf(o, "\t%d %d %d\n", (int)(pos[0] * scaleFactor), (int)(pos[2] * scaleFactor), (int)(pos[1] * scaleFactor)); - } - else - { - fprintf(o, "\t%d %d %d\n", (int)(pos[0] * scaleFactor), (int)(pos[1] * scaleFactor), (int)(pos[2] * scaleFactor)); - } - } - - fprintf(o, "POLYGONS %d\n", m->faces); - for (i = 0; i < m->faces; ++i) - { - Lib3dsFace *face = &m->faceL[i]; - int texel[3][2]; - - if (!invertUV) - { - texel[0][0] = m->texelL[face->points[0]][0] * 256.0f; - texel[0][1] = m->texelL[face->points[0]][1] * 256.0f; - texel[1][0] = m->texelL[face->points[1]][0] * 256.0f; - texel[1][1] = m->texelL[face->points[1]][1] * 256.0f; - texel[2][0] = m->texelL[face->points[2]][0] * 256.0f; - texel[2][1] = m->texelL[face->points[2]][1] * 256.0f; - } - else - { - texel[0][0] = m->texelL[face->points[0]][0] * 256.0f; - texel[0][1] = (1.0f - m->texelL[face->points[0]][1]) * 256.0f; - texel[1][0] = m->texelL[face->points[1]][0] * 256.0f; - texel[1][1] = (1.0f - m->texelL[face->points[1]][1]) * 256.0f; - texel[2][0] = m->texelL[face->points[2]][0] * 256.0f; - texel[2][1] = (1.0f - m->texelL[face->points[2]][1]) * 256.0f; - } - - if (reverseWinding) - { - fprintf(o, "\t%d 3 %d %d %d", baseTexFlags, (int)face->points[2], (int)face->points[1], (int)face->points[0]); - fprintf(o, " %d %d %d %d %d %d\n", texel[2][0], texel[2][1], texel[1][0], texel[1][1], texel[0][0], texel[0][1]); - } - else - { - fprintf(o, "\t%d 3 %d %d %d", baseTexFlags, (int)face->points[0], (int)face->points[1], (int)face->points[2]); - fprintf(o, " %d %d %d %d %d %d\n", texel[0][0], texel[0][1], texel[1][0], texel[1][1], texel[2][0], texel[2][1]); - } - } - } -} - - -#if !defined(WZ_3DS2PIE_GUI) -static char *input_file = ""; -static char *output_file = ""; -static char *page = ""; -static bool swapYZ = true; -static bool reverseWinding = true; -static bool invertUV = true; -static unsigned int baseTexFlags = 200; -static float scaleFactor = 1.0f; - -static void parse_args(int argc, char **argv) -{ - unsigned int i = 1; - - for (i = 1; argc >= 3 + i && argv[i][0] == '-'; i++) - { - if (argv[i][1] == 'y') - { - swapYZ = false; // exporting program used Y-axis as "up", like we do, don't switch - } - else if (argv[i][1] == 'i') - { - invertUV = false; - } - else if (argv[i][1] == 't') - { - baseTexFlags = 2200; - } - else if (argv[i][1] == 'r') - { - reverseWinding = false; - } - else if (argv[i][1] == 's') - { - int ret; - - i++; - if (argc < i) - { - fprintf(stderr, "Missing parameter to scale option.\n"); - exit(1); - } - ret = sscanf(argv[i], "%f", &scaleFactor); - if (ret != 1) - { - fprintf(stderr, "Bad parameter to scale option.\n"); - exit(1); - } - } - else - { - fprintf(stderr, "Unrecognized option: %s\n", argv[i]); - exit(1); - } - } - if (argc < 3 + i) - { - fprintf(stderr, "Syntax: 3ds2m [-s] [-y] [-r] [-i] [-t] input_filename output_filename page_number\n"); - fprintf(stderr, " -y Do not swap Y and Z axis. Exporter uses Y-axis as \"up\".\n"); - fprintf(stderr, " -r Do not reverse winding of all polygons.\n"); - fprintf(stderr, " -i Do not invert the vertical texture coordinates.\n"); - fprintf(stderr, " -s N Scale model points by N before converting.\n"); - fprintf(stderr, " -t Use two sided polygons (slower; deprecated).\n"); - exit(1); - } - input_file = argv[i++]; - output_file = argv[i++]; - page = argv[i++]; -} - - -int main(int argc, char **argv) -{ - Lib3dsFile *f = NULL; - FILE *o = NULL; - - parse_args(argc, argv); - f = lib3ds_file_load(input_file); - if (!f) - { - fprintf(stderr, "***ERROR***\nLoading file %s failed\n", input_file); - exit(1); - } - o = fopen(output_file, "w+"); - if (!o) - { - fprintf(stderr, "***ERROR***\nCan't open %s for writing\n", output_file); - exit(1); - } - dump_pie_file(f, o, page, swapYZ, invertUV, reverseWinding, baseTexFlags, scaleFactor); - fclose(o); - - lib3ds_file_free(f); - - return 0; -} -#endif diff --git a/tools/3ds2pie/3ds2pie.cpp b/tools/3ds2pie/3ds2pie.cpp new file mode 100644 index 000000000..ed4ff6d90 --- /dev/null +++ b/tools/3ds2pie/3ds2pie.cpp @@ -0,0 +1,428 @@ +/* + * The 3D Studio File Format Library + * Copyright (C) 1996-2001 by J.E. Hoffmann + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "3ds2pie.h" + +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#endif + +struct WZ_FACE_PROXY { + unsigned int index[POLYGON_SIZE_3DS]; + float texCoord[POLYGON_SIZE_3DS][2]; + bool cull; +}; + +struct WZ_POSITION_PROXY { + float x, y, z; + unsigned int reindex; + bool dupe; +}; + +// Make a string lower case +static void resToLower(char *pStr) +{ + while (*pStr != 0) + { + *pStr = tolower(*pStr); + pStr += 1; + } +} + +void dump_3ds_to_pie(Lib3dsFile *f, WZ_PIE_LEVEL *pie, PIE_OPTIONS options) +{ + Lib3dsMesh *m; + Lib3dsMaterial *material; + unsigned int meshIdx, i, j; + + /* Materials */ + + for (j = 0, material = f->materials; material; material = material->next, ++j) + { + Lib3dsTextureMap *texture = &material->texture1_map; + + if (j > 0) + { + fprintf(stderr, "Texture %d %s-%s: More than one texture currently not supported!\n", j, options.page, texture->name); + continue; + } + + resToLower(texture->name); + pie->texName = strdup(texture->name); + } + + /* Vertexes and polygons from meshes */ + + for (meshIdx = 0, m = f->meshes; m; m = m->next, ++meshIdx) + { + unsigned int facesCount; + WZ_FACE_PROXY *faceList; + WZ_POSITION_PROXY *posList; + + if (meshIdx > 0) + { + fprintf(stderr, "Mesh %d %s: More than one frame currently not supported!\n", meshIdx, m->name); + continue; + } + + /* Vertexes */ + + posList = (WZ_POSITION_PROXY *) malloc(sizeof(WZ_POSITION_PROXY) * m->points); + + for (j = 0; j < m->points; ++j) + { + posList[j].dupe = false; + + if (options.swapYZ) + { + posList[j].x = m->pointL[j].pos[0]; + posList[j].y = m->pointL[j].pos[2]; + posList[j].z = m->pointL[j].pos[1]; + } + else + { + posList[j].x = m->pointL[j].pos[0]; + posList[j].y = m->pointL[j].pos[1]; + posList[j].z = m->pointL[j].pos[2]; + } + } + + // Remove duplicate points + for (i = 0, j = 0; j < m->points; ++j) + { + unsigned int k; + + for (k = j + 1; k < m->points; ++k) + { + // if points in k are equal to points in j, replace all k with j in face list + if (!posList[k].dupe && + posList[k].x == posList[j].x && + posList[k].y == posList[j].y && + posList[k].z == posList[j].z) + { + posList[k].dupe = true; // oh noes, a dupe! let's skip it when we write them out again. + posList[k].reindex = i; // rewrite face list to point here + } + } + if (!posList[j].dupe) + { + posList[j].reindex = i; + i++; + } + } + + pie->posL = (WZ_POSITION *) malloc(sizeof(WZ_POSITION) * i); + pie->numVertexes = i; + + for (j = 0; j < m->points; ++j) + { + if (!posList[j].dupe) + { + pie->posL[posList[j].reindex].x = posList[j].x; + pie->posL[posList[j].reindex].y = posList[j].y; + pie->posL[posList[j].reindex].z = posList[j].z; + } + } + + /* Polygons */ + + faceList = (WZ_FACE_PROXY *) malloc(sizeof(WZ_FACE_PROXY) * m->faces); + + // i controls reverseWinding dynamically in form of (i,1,2-i), do notice 1! + i = 2 * (int)options.reverseWinding; + for (j = 0; j < m->faces; ++j) + { + Lib3dsFace *face = &m->faceL[j]; + + if (!options.invertUV) + { + faceList[j].texCoord[i][0] = m->texelL[face->points[0]][0]; + faceList[j].texCoord[i][1] = m->texelL[face->points[0]][1]; + faceList[j].texCoord[1][0] = m->texelL[face->points[1]][0]; + faceList[j].texCoord[1][1] = m->texelL[face->points[1]][1]; + faceList[j].texCoord[2-i][0] = m->texelL[face->points[2]][0]; + faceList[j].texCoord[2-i][1] = m->texelL[face->points[2]][1]; + } + else + { + faceList[j].texCoord[i][0] = m->texelL[face->points[0]][0]; + faceList[j].texCoord[i][1] = 1.0f - m->texelL[face->points[0]][1]; + faceList[j].texCoord[1][0] = m->texelL[face->points[1]][0]; + faceList[j].texCoord[1][1] = 1.0f - m->texelL[face->points[1]][1]; + faceList[j].texCoord[2-i][0] = m->texelL[face->points[2]][0]; + faceList[j].texCoord[2-i][1] = 1.0f - m->texelL[face->points[2]][1]; + } + + faceList[j].index[i] = face->points[0]; + faceList[j].index[1] = face->points[1]; + faceList[j].index[2-i] = face->points[2]; + + if (face->material[0]) { + material=lib3ds_file_material_by_name(f, face->material); + faceList[j].cull = !material->two_sided; + } + else { + faceList[j].cull = true; + } + } + + // Rewrite face table with reindexed vertexes + facesCount = m->faces; + for (j = 0; j < m->faces; ++j) + { + faceList[j].index[0] = posList[faceList[j].index[0]].reindex; + faceList[j].index[1] = posList[faceList[j].index[1]].reindex; + faceList[j].index[2] = posList[faceList[j].index[2]].reindex; + + if (options.twoSidedPolys && !faceList[j].cull) + ++facesCount; + } + + // Free vertex proxy + if (posList) + free(posList); + + pie->faceL = (WZ_FACE *) malloc(sizeof(WZ_FACE) * facesCount); + pie->numFaces = facesCount; + + for (i = 0, j = 0; j < m->faces; ++i, ++j) + { + pie->faceL[i].index[0] = faceList[j].index[0]; + pie->faceL[i].index[1] = faceList[j].index[1]; + pie->faceL[i].index[2] = faceList[j].index[2]; + + pie->faceL[i].texCoord[0][0] = faceList[j].texCoord[0][0]; + pie->faceL[i].texCoord[0][1] = faceList[j].texCoord[0][1]; + pie->faceL[i].texCoord[1][0] = faceList[j].texCoord[1][0]; + pie->faceL[i].texCoord[1][1] = faceList[j].texCoord[1][1]; + pie->faceL[i].texCoord[2][0] = faceList[j].texCoord[2][0]; + pie->faceL[i].texCoord[2][1] = faceList[j].texCoord[2][1]; + + if (!faceList[j].cull) + { + ++i; + pie->faceL[i].index[0] = faceList[j].index[2]; + pie->faceL[i].index[1] = faceList[j].index[1]; + pie->faceL[i].index[2] = faceList[j].index[0]; + + pie->faceL[i].texCoord[0][0] = faceList[j].texCoord[2][0]; + pie->faceL[i].texCoord[0][1] = faceList[j].texCoord[2][1]; + pie->faceL[i].texCoord[1][0] = faceList[j].texCoord[1][0]; + pie->faceL[i].texCoord[1][1] = faceList[j].texCoord[1][1]; + pie->faceL[i].texCoord[2][0] = faceList[j].texCoord[0][0]; + pie->faceL[i].texCoord[2][1] = faceList[j].texCoord[0][1]; + } + } + + // Free face proxy + if (faceList) + free(faceList); + } +} + + +void dump_pie_file(WZ_PIE_LEVEL *pie, FILE *o, PIE_OPTIONS options) +{ + unsigned int i, pietype = 0, levelIdx; + + if (options.exportPIE3) + { + fprintf(o, "PIE 3\n"); + } + else + { + fprintf(o, "PIE 2\n"); + pietype |= 0x200; + } + + if (options.useTCMask) + { + pietype |= 0x10000; + } + + fprintf(o, "TYPE %x\n", pietype); + + if (options.exportPIE3) + { + fprintf(o, "TEXTURE 0 %s-%s 0 0\n", options.page, pie->texName); + } + else + { + fprintf(o, "TEXTURE 0 %s-%s 256 256\n", options.page, pie->texName); + } + + fprintf(o, "LEVELS %d\n", 1); // Should be pie.levels + + for (levelIdx = 0; levelIdx < 1; ++levelIdx) + { + fprintf(o, "LEVEL %d\n", levelIdx + 1); + fprintf(o, "POINTS %d\n", pie->numVertexes); + + for (i = 0; i < pie->numVertexes; ++i) + { + if (options.exportPIE3) + { + fprintf(o, "\t%f %f %f\n", + pie->posL[i].x * options.scaleFactor, + pie->posL[i].y * options.scaleFactor, + pie->posL[i].z * options.scaleFactor); + } + else + { + fprintf(o, "\t%d %d %d\n", + (int)(pie->posL[i].x * options.scaleFactor), + (int)(pie->posL[i].y * options.scaleFactor), + (int)(pie->posL[i].z * options.scaleFactor)); + } + } + + fprintf(o, "POLYGONS %d\n", pie->numFaces); + + for (i = 0; i < pie->numFaces; ++i) + { + fprintf(o, "\t%X 3 %u %u %u", 0x200, + pie->faceL[i].index[0], pie->faceL[i].index[1], pie->faceL[i].index[2]); + if (options.exportPIE3) + { + fprintf(o, " %f %f %f %f %f %f\n", + pie->faceL[i].texCoord[0][0], pie->faceL[i].texCoord[0][1], + pie->faceL[i].texCoord[1][0], pie->faceL[i].texCoord[1][1], + pie->faceL[i].texCoord[2][0], pie->faceL[i].texCoord[2][1]); + } + else + { + fprintf(o, " %d %d %d %d %d %d\n", + (int)(pie->faceL[i].texCoord[0][0] * 256), + (int)(pie->faceL[i].texCoord[0][1] * 256), + (int)(pie->faceL[i].texCoord[1][0] * 256), + (int)(pie->faceL[i].texCoord[1][1] * 256), + (int)(pie->faceL[i].texCoord[2][0] * 256), + (int)(pie->faceL[i].texCoord[2][1] * 256)); + } + } + } +} + +// FIXME!!! Most likely it's broken... +#if !defined(WZ_3DS2PIE_GUI) +static char *input_file = ""; +static char *output_file = ""; +static char *page = ""; +static bool swapYZ = true; +static bool reverseWinding = true; +static bool invertUV = true; +static unsigned int baseTexFlags = 200; +static float scaleFactor = 1.0f; + +static void parse_args(int argc, char **argv) +{ + unsigned int i = 1; + + for (i = 1; argc >= 3 + i && argv[i][0] == '-'; i++) + { + if (argv[i][1] == 'y') + { + swapYZ = false; // exporting program used Y-axis as "up", like we do, don't switch + } + else if (argv[i][1] == 'i') + { + invertUV = false; + } + else if (argv[i][1] == 't') + { + baseTexFlags = 2200; + } + else if (argv[i][1] == 'r') + { + reverseWinding = false; + } + else if (argv[i][1] == 's') + { + int ret; + + i++; + if (argc < i) + { + fprintf(stderr, "Missing parameter to scale option.\n"); + exit(1); + } + ret = sscanf(argv[i], "%f", &scaleFactor); + if (ret != 1) + { + fprintf(stderr, "Bad parameter to scale option.\n"); + exit(1); + } + } + else + { + fprintf(stderr, "Unrecognized option: %s\n", argv[i]); + exit(1); + } + } + if (argc < 3 + i) + { + fprintf(stderr, "Syntax: 3ds2m [-s] [-y] [-r] [-i] [-t] input_filename output_filename page_number\n"); + fprintf(stderr, " -y Do not swap Y and Z axis. Exporter uses Y-axis as \"up\".\n"); + fprintf(stderr, " -r Do not reverse winding of all polygons.\n"); + fprintf(stderr, " -i Do not invert the vertical texture coordinates.\n"); + fprintf(stderr, " -s N Scale model points by N before converting.\n"); + fprintf(stderr, " -t Use two sided polygons (slower; deprecated).\n"); + exit(1); + } + input_file = argv[i++]; + output_file = argv[i++]; + page = argv[i++]; +} + + +int main(int argc, char **argv) +{ + Lib3dsFile *f = NULL; + FILE *o = NULL; + + parse_args(argc, argv); + f = lib3ds_file_load(input_file); + if (!f) + { + fprintf(stderr, "***ERROR***\nLoading file %s failed\n", input_file); + exit(1); + } + o = fopen(output_file, "w+"); + if (!o) + { + fprintf(stderr, "***ERROR***\nCan't open %s for writing\n", output_file); + exit(1); + } + dump_pie_file(f, o, page, swapYZ, invertUV, reverseWinding, baseTexFlags, scaleFactor); + fclose(o); + + lib3ds_file_free(f); + + return 0; +} +#endif diff --git a/tools/3ds2pie/3ds2pie.h b/tools/3ds2pie/3ds2pie.h new file mode 100644 index 000000000..12b089e71 --- /dev/null +++ b/tools/3ds2pie/3ds2pie.h @@ -0,0 +1,58 @@ +/* + Copyright (C) Warzone 2100 Project + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program. If not, see + . +*/ +#ifndef __3DS2PIE_H +#define __3DS2PIE_H + +#define POLYGON_SIZE_3DS 3 // Should be triangles + +struct WZ_FACE { + unsigned int index[POLYGON_SIZE_3DS]; + float texCoord[POLYGON_SIZE_3DS][2]; +}; + +struct WZ_POSITION { + float x, y, z; +}; + +struct WZ_PIE_LEVEL { + unsigned int numFaces; + WZ_FACE * faceL; + unsigned int numVertexes; + WZ_POSITION *posL; + char *texName; +}; + +//TODO: There should be a WZ_PIE structure with a number of levels and a level list + +struct PIE_OPTIONS { + char *page; + bool swapYZ; + bool invertUV; + bool reverseWinding; + bool twoSidedPolys; + float scaleFactor; + bool exportPIE3; + bool useTCMask; +}; + +#include + +void dump_3ds_to_pie(Lib3dsFile *f, WZ_PIE_LEVEL *pie, PIE_OPTIONS options); +void dump_pie_file(WZ_PIE_LEVEL *pie, FILE *o, PIE_OPTIONS options); + +#endif diff --git a/tools/3ds2pie/3ds2pie_gui.cpp b/tools/3ds2pie/3ds2pie_gui.cpp index e7cdd60a4..652b56713 100644 --- a/tools/3ds2pie/3ds2pie_gui.cpp +++ b/tools/3ds2pie/3ds2pie_gui.cpp @@ -16,6 +16,7 @@ . */ #include "3ds2pie_gui.h" +#include "3ds2pie.h" #include #include @@ -26,9 +27,6 @@ #include -extern "C" void dump_pie_file(Lib3dsFile *f, FILE *o, const char *page, bool swapYZ, bool inverseUV, bool reverseWinding, int baseTexFlags, float scaleFactor); - - Gui3ds2pie::Gui3ds2pie( QWidget *parent ) : QDialog(parent), Ui::Gui3ds2pie() { @@ -62,14 +60,14 @@ void Gui3ds2pie::spinboxChanged(double value) void Gui3ds2pie::browseInputFile() { - QString path = QFileDialog::getOpenFileName(this, tr("Choose input file"), QString::null, QString::null); + QString path = QFileDialog::getOpenFileName(this, tr("Choose input file"), QString::null, "*.3ds"); inputFile_edit->setText(path); } void Gui3ds2pie::browseOutputFile() { - QString path = QFileDialog::getSaveFileName(this, tr("Choose output file"), QString::null, QString::null); + QString path = QFileDialog::getSaveFileName(this, tr("Choose output file"), QString::null, "*.pie"); outputFile_edit->setText(path); } @@ -104,7 +102,6 @@ void Gui3ds2pie::accept() QString inputFile = inputFile_edit->text(); QString outputFile = outputFile_edit->text(); QString texturePage = texturePage_edit->text(); - unsigned int baseTexFlags = (twoSidedPolys->isChecked() ? 2200 : 200 ); if (inputFile.isEmpty()) { @@ -135,11 +132,27 @@ void Gui3ds2pie::accept() return; } - dump_pie_file(f, o, texturePage.toAscii().data(), swapYZ->isChecked(), invertUV->isChecked(), reverseWinding->isChecked(), baseTexFlags, scale_spinbox->value()); + PIE_OPTIONS options; + options.twoSidedPolys = twoSidedPolys->isChecked(); + options.exportPIE3 = exportPIE3->isChecked(); + options.invertUV = invertUV->isChecked(); + options.page = strdup(texturePage.toAscii().data()); + options.reverseWinding = reverseWinding->isChecked(); + options.scaleFactor = scale_spinbox->value(); + options.swapYZ = swapYZ->isChecked(); + options.useTCMask = useTCMask->isChecked(); + + WZ_PIE_LEVEL pie; + + dump_3ds_to_pie(f, &pie, options); + dump_pie_file(&pie, o, options); fclose(o); lib3ds_file_free(f); + if (options.page) + free(options.page); + QDialog::accept(); } diff --git a/tools/3ds2pie/3ds2pie_gui.pro b/tools/3ds2pie/3ds2pie_gui.pro index b1ff9147c..720efb62e 100644 --- a/tools/3ds2pie/3ds2pie_gui.pro +++ b/tools/3ds2pie/3ds2pie_gui.pro @@ -1,8 +1,9 @@ FORMS += 3ds2pie_gui.ui SOURCES += 3ds2pie_gui.cpp \ - 3ds2pie.c \ + 3ds2pie.cpp \ main.cpp -HEADERS += 3ds2pie_gui.h +HEADERS += 3ds2pie_gui.h \ + 3ds2pie.h TEMPLATE = app CONFIG += warn_on \ qt \ diff --git a/tools/3ds2pie/3ds2pie_gui.ui b/tools/3ds2pie/3ds2pie_gui.ui index 6d6362b10..60b1cca74 100644 --- a/tools/3ds2pie/3ds2pie_gui.ui +++ b/tools/3ds2pie/3ds2pie_gui.ui @@ -1,184 +1,211 @@ - + + Gui3ds2pie - - + + 0 0 400 - 237 + 256 - + 3ds2pie - - - - - - + + + + + + Path to the 3DS file - - - + + + Path to the PIE file - - - + + + Texture page to use - + page- - + 1 - - - + + + Scale for model - + 9999 - + 1 - + Qt::Horizontal - - - + + + Browse - - - + + + Browse - - - + + + Scale for model - + 99.989999999999995 - + 1.000000000000000 - - - + + + Input file - - - + + + Output file - - - + + + Texture page - - - + + + Scale - - - - - - Assume that 'Z' denotes "up" direction + + + + + + Assume that 'Z' denotes "up" direction (Should be enabled for 3DS Max created files) - + Swap Y/Z - + true - - - + + + Reverse the winding of all polygon faces (Should be enabled for 3DS Max created files) - + Reverse polygon winding - + true - - - + + + Invert the vertical point of origin for UV coordinates (Should be enabled for 3DS Max created files) - + Invert U/V - + true - - - + + + Use both sides of Polygons (Not used in Warzone 2100) - + Two sided polygons + + + + true + + + Enable floating points in PIE format. + + + Export PIE3 + + + true + + + + + + + Use TCMask feature instead of old team coloring frames. + + + Enable TCMask texture + + + - - - + + + Qt::Horizontal - - QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok @@ -192,11 +219,11 @@ Gui3ds2pie accept() - + 199 214 - + 199 119 @@ -208,11 +235,11 @@ Gui3ds2pie reject() - + 199 214 - + 199 119 diff --git a/tools/blender/README b/tools/blender/README index 86a720204..4de9f2d88 100644 --- a/tools/blender/README +++ b/tools/blender/README @@ -4,5 +4,5 @@ Files: - pie.py : Generic PIE parser - pie_common.py : Blender plugin library - pie_import.py : Blender import plugin - - pie_export.py : Blender export plugin (currently defunct) + - pie_export.py : Blender export plugin - pie_levels_to_layers.py : Assign PIE levels to Blender layers diff --git a/tools/conversion/obj2pie.c b/tools/conversion/obj2pie.c index 34eadc139..69a10d655 100644 --- a/tools/conversion/obj2pie.c +++ b/tools/conversion/obj2pie.c @@ -17,9 +17,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +// compile command: gcc obj2pie.c -o obj2pie -lm + #include #include #include +#include #ifndef WIN32 #include @@ -36,19 +39,21 @@ static char *output_file = ""; static char *texture_file; static bool swapYZ = true; static bool reverseWinding = true; -static bool invertUV = true; -static unsigned int baseTexFlags = 200; +static bool invertV = true; +static int pieVersion = 3; +static bool twoSided = false; +static unsigned int pieType = 0x200; static float scaleFactor = 1.0f; -typedef struct _vector3i +typedef struct _vector3f { - int x, y, z; -} vector3i; + float x, y, z; +} vector3f; -typedef struct _vector2i +typedef struct _vector2f { - int u, v; -} vector2i; + float u, v; +} vector2f; typedef struct _face { @@ -57,56 +62,65 @@ typedef struct _face int index_c_vertex, index_c_texture; } face; -static vector3i *points; +static vector3f *points; static int count_points; -static vector2i *uvcoords; +static vector2f *uvcoords; static int count_uvcoords; static face *faces; static int count_faces; -void addpoint(int x, int y, int z) +void addpoint(float x, float y, float z) { if (points == NULL) { - points = (vector3i*) malloc(sizeof(vector3i)); + points = (vector3f*) malloc(sizeof(vector3f)); count_points = 1; } else { count_points++; - points = (vector3i*)realloc(points, count_points * sizeof(vector3i)); + points = (vector3f*)realloc(points, count_points * sizeof(vector3f)); } - points[count_points-1].x = x; - points[count_points-1].y = y; - points[count_points-1].z = z; + if( pieVersion == 2) + { + points[count_points-1].x = rintf(x); + points[count_points-1].y = rintf(y); + points[count_points-1].z = rintf(z); + } + else // pieVersion == 3 + { + points[count_points-1].x = x; + points[count_points-1].y = y; + points[count_points-1].z = z; + } } -void adduvcoord(int u, int v) +void adduvcoord(float u, float v) { - if (uvcoords == NULL) + if (uvcoords == NULL ) { - uvcoords = (vector2i*) malloc(sizeof(vector2i)); + uvcoords = (vector2f*) malloc(sizeof(vector2f)); count_uvcoords = 1; } else { count_uvcoords++; - uvcoords = (vector2i*)realloc(uvcoords, count_uvcoords * sizeof(vector2i)); + uvcoords = (vector2f*)realloc(uvcoords, count_uvcoords * sizeof(vector2f)); } - if (u > 255) + if( pieVersion == 2) { - u = 255; + uvcoords[count_uvcoords-1].u = rintf(u*256.0f); + uvcoords[count_uvcoords-1].v = rintf(v*256.0f);; } - if (v > 255) + else // pieVersion == 3 { - v = 255; + uvcoords[count_uvcoords-1].u = u; + uvcoords[count_uvcoords-1].v = v; } - uvcoords[count_uvcoords-1].u = u; - uvcoords[count_uvcoords-1].v = v; } void addface(int index_a_vertex, int index_a_texture, int index_b_vertex, int index_b_texture, int index_c_vertex, int index_c_texture) @@ -121,7 +135,6 @@ void addface(int index_a_vertex, int index_a_texture, int index_b_vertex, int in count_faces++; faces = (face*) realloc(faces, count_faces * sizeof(face)); } - faces[count_faces-1].index_a_vertex = index_a_vertex; faces[count_faces-1].index_a_texture = index_a_texture; faces[count_faces-1].index_b_vertex = index_b_vertex; @@ -134,8 +147,10 @@ void readobj(FILE *input) { char buffer[256]; int index_a_vertex, index_a_texture, index_b_vertex, index_b_texture, index_c_vertex, index_c_texture; + int ignored_a_normal, ignored_b_normal, ignored_c_normal; float u, v; float x, y, z; + bool normalsDetected = false; if (input == NULL) { @@ -155,22 +170,53 @@ void readobj(FILE *input) { fgets(buffer, 256, input); - if (buffer[0] == 'v' && buffer[1] != 't') + if (buffer[0] == 'v' && buffer[1] == 'n') { - sscanf(&buffer[2], "%f %f %f", &x, &y, &z); - addpoint((int)(x*scaleFactor), (int)(y*scaleFactor), (int)(z*scaleFactor)); + normalsDetected = true; } else if (buffer[0] == 'v' && buffer[1] == 't') { sscanf(&buffer[3], "%f %f", &u, &v); - if (invertUV) + if (invertV) v = 1.0f - v; - adduvcoord((int)(u*256.f), (int)(v*256.f)); + adduvcoord(u,v); } - else if (buffer[0] == 'f') + else if (buffer[0] == 'v') // && buffer[1] != 't' && buffer[1] != 'n' { - sscanf(&buffer[2], "%d/%d %d/%d %d/%d", &index_a_vertex, &index_a_texture, &index_b_vertex, &index_b_texture, &index_c_vertex, &index_c_texture); - addface(index_a_vertex - 1, index_a_texture - 1, index_b_vertex - 1, index_b_texture - 1, index_c_vertex - 1, index_c_texture - 1); + sscanf(&buffer[2], "%f %f %f", &x, &y, &z); + addpoint(x*scaleFactor, + (swapYZ?z:y)*scaleFactor, + (swapYZ?y:z)*scaleFactor); + } + else if (buffer[0] == 'f' ) + { + if(normalsDetected) + { + sscanf(&buffer[2], "%d/%d/%d %d/%d/%d %d/%d/%d", + &index_a_vertex, &index_a_texture, &ignored_a_normal, + &index_b_vertex, &index_b_texture, &ignored_b_normal, + &index_c_vertex, &index_c_texture, &ignored_c_normal); + } + else + { + sscanf(&buffer[2], "%d/%d %d/%d %d/%d", + &index_a_vertex, &index_a_texture, + &index_b_vertex, &index_b_texture, + &index_c_vertex, &index_c_texture); + } + + if(reverseWinding || twoSided) + { + addface(index_c_vertex - 1, index_c_texture - 1, + index_b_vertex - 1, index_b_texture - 1, + index_a_vertex - 1, index_a_texture - 1); + } + if(!reverseWinding || twoSided) + { + addface(index_a_vertex - 1, index_a_texture - 1, + index_b_vertex - 1, index_b_texture - 1, + index_c_vertex - 1, index_c_texture - 1); + } } } } @@ -185,53 +231,51 @@ void writepie(FILE *output) return; } - fprintf(output, "PIE 2\nTYPE 200\n"); + fprintf(output, "PIE %d\nTYPE %x\n", pieVersion, pieType); fprintf(output, "TEXTURE 0 %s 256 256\n", texture_file); fprintf(output, "LEVELS 1\nLEVEL 1\n"); fprintf(output, "POINTS %d\n", count_points); for (i = 0;i < count_points;i++) { - if (swapYZ) + if( pieVersion == 2) { - fprintf(output, "\t%d %d %d\n", points[i].x, points[i].z, points[i].y); + fprintf(output, "\t%d %d %d\n", (int)points[i].x, (int)points[i].y, (int)points[i].z); } - else + else // pieVersion == 3 { - fprintf(output, "\t%d %d %d\n", points[i].x, points[i].y, points[i].z); + fprintf(output, "\t%f %f %f\n", points[i].x, points[i].y, points[i].z); } } fprintf(output, "POLYGONS %d\n", count_faces); for (i = 0;i < count_faces;i++) { - if (reverseWinding) + if(pieVersion == 2) { - fprintf(output, "\t%d 3 %d %d %d %d %d %d %d %d %d\n", - baseTexFlags, - faces[i].index_c_vertex, - faces[i].index_b_vertex, - faces[i].index_a_vertex, - uvcoords[faces[i].index_c_texture].u, - uvcoords[faces[i].index_c_texture].v, - uvcoords[faces[i].index_b_texture].u, - uvcoords[faces[i].index_b_texture].v, - uvcoords[faces[i].index_a_texture].u, - uvcoords[faces[i].index_a_texture].v); + fprintf(output, "\t200 3 %d %d %d %d %d %d %d %d %d\n", + faces[i].index_a_vertex, + faces[i].index_b_vertex, + faces[i].index_c_vertex, + (int)uvcoords[faces[i].index_a_texture].u, + (int)uvcoords[faces[i].index_a_texture].v, + (int)uvcoords[faces[i].index_b_texture].u, + (int)uvcoords[faces[i].index_b_texture].v, + (int)uvcoords[faces[i].index_c_texture].u, + (int)uvcoords[faces[i].index_c_texture].v); } - else + else // pieVersion == 3 { - fprintf(output, "\t%d 3 %d %d %d %d %d %d %d %d %d\n", - baseTexFlags, - faces[i].index_a_vertex, - faces[i].index_b_vertex, - faces[i].index_c_vertex, - uvcoords[faces[i].index_a_texture].u, - uvcoords[faces[i].index_a_texture].v, - uvcoords[faces[i].index_b_texture].u, - uvcoords[faces[i].index_b_texture].v, - uvcoords[faces[i].index_c_texture].u, - uvcoords[faces[i].index_c_texture].v); + fprintf(output, "\t200 3 %d %d %d %f %f %f %f %f %f\n", + faces[i].index_a_vertex, + faces[i].index_b_vertex, + faces[i].index_c_vertex, + uvcoords[faces[i].index_a_texture].u, + uvcoords[faces[i].index_a_texture].v, + uvcoords[faces[i].index_b_texture].u, + uvcoords[faces[i].index_b_texture].v, + uvcoords[faces[i].index_c_texture].u, + uvcoords[faces[i].index_c_texture].v); } } } @@ -275,11 +319,11 @@ static void parse_args(int argc, char **argv) } else if (argv[i][1] == 'i') { - invertUV = false; + invertV = false; } else if (argv[i][1] == 't') { - baseTexFlags = 2200; + twoSided = true; } else if (argv[i][1] == 'r') { @@ -302,6 +346,32 @@ static void parse_args(int argc, char **argv) exit(1); } } + else if (argv[i][1] == 'v') + { + int ret; + + i++; + if (argc < i) + { + fprintf(stderr, "Missing parameter to pie version option.\n"); + exit(1); + } + ret = sscanf(argv[i], "%d", &pieVersion); + if (ret != 1) + { + fprintf(stderr, "Bad parameter to pie version option.\n"); + exit(1); + } + if( pieVersion < 2 || pieVersion > 3) + { + fprintf(stderr, "Unsupported pie version %d.\n",pieVersion); + exit(1); + } + } + else if (argv[i][1] == 'm') + { + pieType |= 0x10000; + } else { fprintf(stderr, "Unrecognized option: %s\n", argv[i]); @@ -310,12 +380,16 @@ static void parse_args(int argc, char **argv) } if (argc < 3 + i) { - fprintf(stderr, "Syntax: obj2pie [-s] [-y] [-r] [-i] [-t] input_filename output_filename texture_filename\n"); - fprintf(stderr, " -y Do not swap Y and Z axis. Exporter uses Y-axis as \"up\".\n"); - fprintf(stderr, " -r Do not reverse winding of all polygons.\n"); - fprintf(stderr, " -i Do not invert the vertical texture coordinates.\n"); - fprintf(stderr, " -s N Scale model points by N before converting.\n"); - fprintf(stderr, " -t Use two sided polygons (slower; deprecated).\n"); + fprintf(stderr, "Usage: obj2pie [options] input_filename output_filename texture_filename\n"); + fprintf(stderr, "Options:\n"); + fprintf(stderr, " -y Do not swap Y and Z axis. Exporter uses Y-axis as \"up\".\n"); + fprintf(stderr, " -r Do not reverse winding of all polygons.\n"); + fprintf(stderr, " -i Do not invert the vertical texture coordinates.\n"); + fprintf(stderr, " -s N Scale model points by N before converting.\n"); + fprintf(stderr, " -t Use two sided polygons (Create duplicate faces with reverse winding).\n"); + fprintf(stderr, " -v N Pie export version ( 2 and 3 supported, 3 is default).\n"); + fprintf(stderr, " -m Use tcmask pie type.\n"); + exit(1); } input_file = argv[i++]; diff --git a/tools/masterserver/motd.txt b/tools/masterserver/motd.txt new file mode 100644 index 000000000..7329d5c9c --- /dev/null +++ b/tools/masterserver/motd.txt @@ -0,0 +1 @@ +Welcome to Warzone! Your game is now listed in the lobby server. \ No newline at end of file diff --git a/tools/masterserver/motd2.2.txt b/tools/masterserver/motd2.2.txt new file mode 100644 index 000000000..91699d637 --- /dev/null +++ b/tools/masterserver/motd2.2.txt @@ -0,0 +1,2 @@ +This server will not support your version of warzone much longer! Please +upgrade your game. See www.wz2100.net. diff --git a/tools/masterserver/wzmasterserver.py b/tools/masterserver/wzmasterserver.py index e0a5eb90c..6c1acef40 100755 --- a/tools/masterserver/wzmasterserver.py +++ b/tools/masterserver/wzmasterserver.py @@ -29,9 +29,9 @@ from __future__ import with_statement # __author__ = "Gerard Krol, Tim Perrei, Freddie Witherden, Gerhard Schaden, Dennis Schridde, Buginator" -__version__ = "2.2" +__version__ = "2.3" __bpydoc__ = """\ -This script runs a Warzone 2100 2.2.x+ masterserver +This script runs a Warzone 2100 2.3.x+ masterserver """ # @@ -55,7 +55,8 @@ from protocol import * checkInterval = 100 # Interval between requests causing a gamedb check -MOTDstring = None # our message of the day (max 255 bytes) +MOTDstring = None # our message of the day (max 255 bytes) (for 2.3 / trunk) +MOTD22string = None # the EOL message for 2.2.x logging.basicConfig(level = logging.DEBUG, format = "%(asctime)-15s %(levelname)s %(message)s") @@ -301,7 +302,13 @@ class RequestHandler(SocketServer.ThreadingMixIn, SocketServer.StreamRequestHand self.sendStatusMessage(self.CLIENT_ERROR_NOT_ACCEPTABLE, 'Game unreachable, failed to open a connection to: [%s]:%d' % (self.gameHost, protocol.gamePort)) return - self.sendStatusMessage(self.SUCCESS_OK, MOTDstring) + if self.g.lobbyVersion == 3: + self.sendStatusMessage(self.SUCCESS_OK, MOTDstring) + else: + self.sendStatusMessage(self.SUCCESS_OK, MOTD22string) +# After a few weeks, we will force 2.2.x clients to upgrade, by closing the connection after MOTD is sent. +# self.sendStatusMessage(self.CLIENT_ERROR_NOT_ACCEPTABLE, MOTD22string) +# return gamedb.listGames() return # Get a game list. @@ -363,9 +370,17 @@ if __name__ == '__main__': logging.info("Starting Warzone 2100 lobby server on port %d" % (protocol.lobbyPort)) # Read in the Message of the Day, max is 1 line, 255 chars + #for the 2.3 / trunk clients in_file = open("motd.txt", "r") MOTDstring = in_file.read() in_file.close() + + #for the 2.2.x client (farewell message) + in_file = open("motd2.2.txt", "r") + MOTD22string = in_file.read() + in_file.close() + + logging.info("The MOTD(2.2) is (%s)" % MOTD22string) logging.info("The MOTD is (%s)" % MOTDstring) diff --git a/tools/qwzm/animationview.ui b/tools/qwzm/animationview.ui deleted file mode 100644 index b4daf5267..000000000 --- a/tools/qwzm/animationview.ui +++ /dev/null @@ -1,68 +0,0 @@ - - AnimationView - - - - 0 - 0 - 673 - 368 - - - - Animation Frames - - - - - - - - - - - Prepend - - - - - - - Append - - - - - - - Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Close - - - - - - - - - - diff --git a/tools/qwzm/connectorview.ui b/tools/qwzm/connectorview.ui deleted file mode 100644 index 045f9f440..000000000 --- a/tools/qwzm/connectorview.ui +++ /dev/null @@ -1,68 +0,0 @@ - - ConnectorView - - - - 0 - 0 - 673 - 368 - - - - Connectors - - - - - - - - - - - Prepend - - - - - - - Append - - - - - - - Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Close - - - - - - - - - - diff --git a/tools/qwzm/conversion.cpp b/tools/qwzm/conversion.cpp index 27ca8486c..4a87fe9b9 100644 --- a/tools/qwzm/conversion.cpp +++ b/tools/qwzm/conversion.cpp @@ -1,83 +1,84 @@ +#include + #include #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "qwzm.h" +#include "conversion.h" -// Load PIE files -#define iV_IMD_TEX 0x00000200 -#define iV_IMD_XNOCUL 0x00002000 -#define iV_IMD_TEXANIM 0x00004000 -#define MAX_POLYGON_SIZE 16 - -typedef struct { - int index[MAX_POLYGON_SIZE]; - int texCoord[MAX_POLYGON_SIZE][2]; - int vertices; - int frames, rate, width, height; // animation data - bool cull; -} WZ_FACE; - -typedef struct { - int x, y, z; -} WZ_POSITION; - -void QWzmViewer::loadPIE(QString inputFile) +MODEL *QWzmViewer::loadPIE(QString inputFile) { const bool swapYZ = false; const bool reverseWinding = false; const bool invertUV = false; const bool assumeAnimation = false; - int num, x, y, z, levels, level; + int num, x, y, z, levels, level, pieVersion; char s[200]; - const char *input = inputFile.toAscii().constData(); + QByteArray inFile = inputFile.toAscii(); + const char *input = inFile.constData(); + MODEL *psModel = NULL; FILE *fp = fopen(input, "r"); if (!fp) { qWarning("Cannot open \"%s\" for reading: %s", input, strerror(errno)); - return; + return NULL; } - num = fscanf(fp, "PIE %d\n", &x); + num = fscanf(fp, "PIE %d\n", &pieVersion); if (num != 1) { - fprintf(stderr, "Bad PIE file %s\n", input); - exit(1); + qWarning("Bad PIE file %s\n", input); + fclose(fp); + freeModel(psModel); + return NULL; } - num = fscanf(fp, "TYPE %d\n", &x); // ignore + num = fscanf(fp, "TYPE %x\n", &x); // ignore if (num != 1) { - fprintf(stderr, "Bad TYPE directive in %s\n", input); - exit(1); + qWarning("Bad TYPE directive in %s\n", input); + fclose(fp); + freeModel(psModel); + return NULL; } num = fscanf(fp, "TEXTURE %d %s %d %d\n", &z, s, &x, &y); if (num != 4) { - fprintf(stderr, "Bad TEXTURE directive in %s\n", input); - exit(1); + qWarning("Bad TEXTURE directive in %s\n", input); + fclose(fp); + freeModel(psModel); + return NULL; } num = fscanf(fp, "LEVELS %d\n", &levels); if (num != 1) { - fprintf(stderr, "Bad LEVELS directive in %s\n", input); - exit(1); + qWarning("Bad LEVELS directive in %s\n", input); + fclose(fp); + freeModel(psModel); + return NULL; } - // Recreate model - if (psModel) - { - freeModel(psModel); - psModel = NULL; - } psModel = createModel(levels, 0); if (!psModel) { qFatal("Out of memory"); + fclose(fp); + exit(EXIT_FAILURE); } strcpy(psModel->texPath, s); @@ -91,39 +92,47 @@ void QWzmViewer::loadPIE(QString inputFile) num = fscanf(fp, "\nLEVEL %d\n", &x); if (num != 1 || level + 1 != x) { - fprintf(stderr, "Bad LEVEL directive in %s, was %d should be %d.\n", input, x, level + 1); - exit(1); + qWarning("Bad LEVEL directive in %s, was %d should be %d.\n", input, x, level + 1); + fclose(fp); + freeModel(psModel); + return NULL; } num = fscanf(fp, "POINTS %d\n", &points); if (num != 1) { - fprintf(stderr, "Bad POINTS directive in %s, level %d.\n", input, level); - exit(1); + qWarning("Bad POINTS directive in %s, level %d.\n", input, level); + fclose(fp); + freeModel(psModel); + return NULL; } posList = (WZ_POSITION*)malloc(sizeof(WZ_POSITION) * points); for (j = 0; j < points; j++) { if (swapYZ) { - num = fscanf(fp, "%d %d %d\n", &posList[j].x, &posList[j].z, &posList[j].y); + num = fscanf(fp, "%f %f %f\n", &posList[j].x, &posList[j].z, &posList[j].y); } else { - num = fscanf(fp, "%d %d %d\n", &posList[j].x, &posList[j].y, &posList[j].z); + num = fscanf(fp, "%f %f %f\n", &posList[j].x, &posList[j].y, &posList[j].z); } if (num != 3) { - fprintf(stderr, "Bad POINTS entry level %d, number %d\n", level, j); - exit(1); + qWarning("Bad POINTS entry level %d, number %d\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } } num = fscanf(fp, "POLYGONS %d", &faces); if (num != 1) { - fprintf(stderr, "Bad POLYGONS directive in %s, level %d.\n", input, level); - exit(1); + qWarning("Bad POLYGONS directive in %s, level %d.\n", input, level); + fclose(fp); + freeModel(psModel); + return NULL; } facesWZM = faces; // for starters faceList = (WZ_FACE*)malloc(sizeof(WZ_FACE) * faces); @@ -136,13 +145,17 @@ void QWzmViewer::loadPIE(QString inputFile) num = fscanf(fp, "\n%x", &flags); if (num != 1) { - fprintf(stderr, "Bad POLYGONS texture flag entry level %d, number %d\n", level, j); - exit(1); + qWarning("Bad POLYGONS texture flag entry level %d, number %d\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } if (!(flags & iV_IMD_TEX)) { - fprintf(stderr, "Bad texture flag entry level %d, number %d - no texture flag!\n", level, j); - exit(1); + qWarning("Bad texture flag entry level %d, number %d - no texture flag!\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } if (flags & iV_IMD_XNOCUL) @@ -155,21 +168,23 @@ void QWzmViewer::loadPIE(QString inputFile) faceList[j].cull = false; } - num = fscanf(fp, "%d", &faceList[j].vertices); + num = fscanf(fp, "%u", &faceList[j].vertices); if (num != 1 || faceList[j].vertices < 0) { - fprintf(stderr, "Bad POLYGONS vertices entry level %d, number %d\n", level, j); - exit(1); + qWarning("Bad POLYGONS vertices entry level %d, number %d\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } assert(faceList[j].vertices <= MAX_POLYGON_SIZE); // larger polygons not supported - assert(faceList[j].vertices >= 3); // points and lines not supported - if (faceList[j].vertices > 3) + assert(faceList[j].vertices >= VERTICES_PER_TRIANGLE); // points and lines not supported + if (faceList[j].vertices > VERTICES_PER_TRIANGLE) { // since they are triangle fans already, we get to do easy tessellation - facesWZM += (faceList[j].vertices - 3); + facesWZM += (faceList[j].vertices - VERTICES_PER_TRIANGLE); if (faceList[j].cull) { - facesWZM += (faceList[j].vertices - 3); // double the number of extra faces needed + facesWZM += (faceList[j].vertices - VERTICES_PER_TRIANGLE); // double the number of extra faces needed } } pointsWZM += faceList[j].vertices; @@ -180,21 +195,25 @@ void QWzmViewer::loadPIE(QString inputFile) num = fscanf(fp, "%d", &faceList[j].index[k]); if (num != 1) { - fprintf(stderr, "Bad vertex position entry level %d, number %d\n", level, j); - exit(1); + qWarning("Bad vertex position entry level %d, number %d\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } } if (flags & iV_IMD_TEXANIM) { - num = fscanf(fp, "%d %d %d %d", &faceList[j].frames, &faceList[j].rate, &faceList[j].width, &faceList[j].height); + num = fscanf(fp, "%d %d %f %f", &faceList[j].frames, &faceList[j].rate, &faceList[j].width, &faceList[j].height); if (num != 4) { - fprintf(stderr, "Bad texture animation entry level %d, number %d.\n", level, j); - exit(1); + qWarning("Bad texture animation entry level %d, number %d.\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } if (faceList[j].frames <= 1) { - fprintf(stderr, "Level %d, polygon %d has a single animation frame. That makes no sense.\n", level, j); + qWarning("Level %d, polygon %d has a single animation frame. That makes no sense.\n", level, j); } if (textureArrays < faceList[j].frames) { @@ -205,16 +224,18 @@ void QWzmViewer::loadPIE(QString inputFile) { faceList[j].frames = 0; faceList[j].rate = 0; - faceList[j].width = 1; // to avoid division by zero - faceList[j].height = 1; + faceList[j].width = 0; + faceList[j].height = 0; } for (k = 0; k < faceList[j].vertices; k++) { - num = fscanf(fp, "%d %d", &faceList[j].texCoord[k][0], &faceList[j].texCoord[k][1]); + num = fscanf(fp, "%f %f", &faceList[j].texCoord[k][0], &faceList[j].texCoord[k][1]); if (num != 2) { - fprintf(stderr, "Bad texture coordinate entry level %d, number %d\n", level, j); - exit(1); + qWarning("Bad texture coordinate entry level %d, number %d\n", level, j); + fclose(fp); + freeModel(psModel); + return NULL; } } } @@ -232,8 +253,8 @@ void QWzmViewer::loadPIE(QString inputFile) pointCount = 0; psMesh->vertices = pointsWZM; psMesh->faces = facesWZM; - psMesh->vertexArray = (GLfloat*)malloc(sizeof(GLfloat) * psMesh->vertices * 3); - psMesh->indexArray = (GLuint*)malloc(sizeof(GLuint) * psMesh->vertices * 3); + psMesh->vertexArray = (GLfloat*)malloc(sizeof(GLfloat) * psMesh->vertices * VERTICES_PER_TRIANGLE); + psMesh->indexArray = (GLuint*)malloc(sizeof(GLuint) * psMesh->vertices * VERTICES_PER_TRIANGLE); psMesh->textureArrays = textureArrays; for (j = 0; j < textureArrays; j++) { @@ -263,15 +284,49 @@ void QWzmViewer::loadPIE(QString inputFile) { for (int k = 0; k < faceList[j].vertices; k++) { - // This works because wrap around is only permitted if you start the animation at the - // left border of the texture. What a horrible hack this was. - int framesPerLine = 256 / faceList[j].width; + double u; + double v; + // Fix for division by zero in pie 2 + int framesPerLine = OLD_TEXTURE_SIZE_FIX; + + if (pieVersion == 3) + { + if(faceList[j].width != 0) + { + framesPerLine = 1/ faceList[j].width; + } + else + { + // Fix for division by zero in pie 3 + framesPerLine = 1; + } + } + else if (faceList[j].width != 0) // else pieVersion ==2 + { + framesPerLine = OLD_TEXTURE_SIZE_FIX / faceList[j].width; + } + int frameH = z % framesPerLine; + + /* + * This works because wrap around is only permitted if you start the animation at the + * left border of the texture. What a horrible hack this was. + * Note: It is done the same way in the Warzone source. + */ int frameV = z / framesPerLine; double width = faceList[j].texCoord[k][0] + faceList[j].width * frameH; double height = faceList[j].texCoord[k][1] + faceList[j].height * frameV; - double u = width / 256.0f; - double v = height / 256.0f; + + if (pieVersion == 2) + { + u = width / OLD_TEXTURE_SIZE_FIX; + v = height / OLD_TEXTURE_SIZE_FIX; + } + else if (pieVersion == 3) + { + u = width; + v = height; + } if (invertUV) { @@ -312,7 +367,7 @@ void QWzmViewer::loadPIE(QString inputFile) } // Generate triangles from the Warzone triangle fans (PIEs, get it?) - for (k = 3; k < faceList[j].vertices; k++) + for (k = VERTICES_PER_TRIANGLE; k < faceList[j].vertices; k++) { if (reverseWinding || faceList[j].cull) { @@ -368,13 +423,15 @@ void QWzmViewer::loadPIE(QString inputFile) for (j = 0; j < psMesh->connectors; j++) { CONNECTOR *conn = &psMesh->connectorArray[j]; - int a, b, c; + GLfloat a, b, c; - num = fscanf(fp, "\n%d %d %d", &a, &b, &c); + num = fscanf(fp, "\n%f %f %f", &a, &b, &c); if (num != 3) { - fprintf(stderr, "Bad CONNECTORS directive in %s entry level %d, number %d\n", input, level, j); - exit(1); + qWarning("Bad CONNECTORS directive in %s entry level %d, number %d\n", input, level, j); + fclose(fp); + freeModel(psModel); + return NULL; } conn->pos.x = a; conn->pos.y = b; @@ -386,9 +443,11 @@ void QWzmViewer::loadPIE(QString inputFile) free(faceList); free(posList); } + fclose(fp); + return psModel; } -void QWzmViewer::load3DS(QString input) +MODEL *QWzmViewer::load3DS(QString input) { const bool swapYZ = true; const bool reverseWinding = true; @@ -399,19 +458,16 @@ void QWzmViewer::load3DS(QString input) int meshes = 0; Lib3dsMesh *m; int meshIdx; + MODEL *psModel; if (!f) { qWarning("Loading 3DS file %s failed", input.toAscii().constData()); - return; + return NULL; } for (meshes = 0, m = f->meshes; m; m = m->next, meshes++) ; // count the meshes - if (psModel) - { - freeModel(psModel); - psModel = NULL; - } + psModel = createModel(meshes, 0); if (!psModel) { @@ -500,4 +556,355 @@ void QWzmViewer::load3DS(QString input) } lib3ds_file_free(f); + return psModel; +} + +int QWzmViewer::savePIE(const char *filename, const MODEL *psModel, int pieVersion, int type) +{ + std::fstream file; + int i, j, k; + + /* variable ptOffset: Temporary storage of calculated index + * for a give face OR vertex in the WZM vertex array. + */ + /* variable ptSetIndex: Index of a vertex in the set + * of PIE points for a given PIE level. + */ + // variable polyFlag: Use to compose the flag for a PIE polygon + unsigned int ptOffset, ptSetIndex, polyFlag; + + /* Temporary stringstream used to accomodate + * the order PIE polygon data is written + */ + std::stringstream animTmpSs; + + MESH *mesh; + + /* variable unitW: Width of the bounding box for + * a single tex. anim. "frame" of a polygon. + * variable unitH: Same as unitW except represents + * the height. + */ + /* variable t: represents the top of the bounding box + * when estimating the tex. anim.'s + * height. + * variable b: Same as t except represents the + * bottom. + */ + double unitW, unitH, t, b; + + /* variable ptSet: for creating a unique set + * of PIE points for a given PIE level. + */ + std::set< pie_Point> ptSet; + + /* variable textures: Temporary storage of + * texture coordinates to avoid redundant + * ptOffset calculations. + */ + std::queue< textCoords, std::list > textures; + + file.open(filename, std::fstream::out); + + if (!file.is_open()) + { + qWarning("QWzmViewer::savePIE - Failed to open file."); + return -1; + } + + file << "PIE " << pieVersion << '\n'; + file << "TYPE " << std::hex << type << std::dec << "\n"; + + // Texture directive: + file << "TEXTURE 0 " << psModel->texPath; + switch (pieVersion) + { + case 2: + if (psModel->pixmap != NULL) + { + file << ' ' << psModel->pixmap->h << ' ' << psModel->pixmap->w << '\n'; + } + else + { + file << " 256 256\n"; + } + break; + case 3: + file << " 0 0\n"; + break; + default: + file.close(); + qWarning("QWzmViewer::savePIE - Unsupported pie version"); + return -1; + } + + // LEVELS directive + file << "LEVELS " << psModel->meshes << '\n'; + + // For each WZM mesh a PIE level. + for (i = 0; i < psModel->meshes; i++) + { + ptSet.clear(); + mesh = &(psModel->mesh[i]); + + // LEVEL directive + file << "LEVEL " << i + 1 << "\n"; + + // Create the set of unique points. + for (j = 0; j < mesh->vertices; j++) + { + ptSet.insert(pie_Point(mesh->vertexArray[j*VERTICES_PER_TRIANGLE], + mesh->vertexArray[j*VERTICES_PER_TRIANGLE+1], + mesh->vertexArray[j*VERTICES_PER_TRIANGLE+2])); + } + + if (ptSet.size() > pie_MAX_POLYGONS) + { + file.close(); + qWarning("QWzmViewer::savePIE - Model has too many vertices to save as PIE."); + return -1; + } + + // POINTS directive + file << "POINTS " << ptSet.size() << '\n'; + + // print out all the points in the set + std::set< pie_Point>::iterator it; + for (it = ptSet.begin(); it != ptSet.end(); it++) + { + GLfloat x, y, z; + it->getXYZ(x, y, z); + switch (pieVersion) + { + case 2: + file << '\t' << (int)rintf(x) << ' ' << (int)rintf(y) << ' ' << (int)rintf(z) << '\n'; + break; + case 3: + file << '\t' << x << ' ' << y << ' ' << z << '\n'; + break; + } + } + + // POLYGONS directive + file << "POLYGONS " << mesh->faces << '\n'; + + for (j = 0; j < mesh->faces; j++) + { + polyFlag = iV_IMD_TEX; // Default flag + animTmpSs.str(std::string()); + + if (mesh->textureArrays > 1) + { + ptOffset = mesh->indexArray[j*VERTICES_PER_TRIANGLE]; + + /* + * TODO: + * This _if_ statement isn't a robust way of checking + * for animations or team colours. + */ + if ((mesh->textureArray[0][ptOffset*2] < mesh->textureArray[1][ptOffset*2]) + || (mesh->textureArray[0][ptOffset*2+1] < mesh->textureArray[mesh->textureArrays-1][ptOffset*2+1])) + { + /* Find height and width for team colours + * and animations. + * TODO: Check that the animations are legal + * for the PIE format. + */ + unitH = 0; + + // Try to find width the easy way + unitW = mesh->textureArray[1][ptOffset*2] - mesh->textureArray[0][ptOffset*2]; + + // Try to find height the easy way + for (k = 0; k < mesh->textureArrays - 1; k++) + { + // Look for wrap around + if (mesh->textureArray[k+1][ptOffset*2+1] > mesh->textureArray[k][ptOffset*2+1]) + { + unitH = mesh->textureArray[k+1][ptOffset*2+1] - mesh->textureArray[k][ptOffset*2+1]; + break; + } + } + + // If the easy way failed + if ( unitH <= 0) + { + // Find top and bottom, add pixels to the difference for good luck. + b = 0; // Search for the bottom starting from the top + t = 1; // Search for the top starting from the bottom + + // Try every V to find the min and max + for (k = 0; k < VERTICES_PER_TRIANGLE; k++) + { + ptOffset = mesh->indexArray[j*VERTICES_PER_TRIANGLE+k]; + if (mesh->textureArray[0][ptOffset*2+1] < t) + { + t = mesh->textureArray[0][ptOffset*2+1]; + } + if (mesh->textureArray[0][ptOffset*2+1] > b) + { + b = mesh->textureArray[0][ptOffset*2+1]; + } + } + + unitH = fabs(b - t); + + if (psModel->pixmap != NULL && psModel->pixmap->h != 0) + { + unitH += 2 / psModel->pixmap->h; + } + else if (pieVersion == 2) + { + unitH += 2 / OLD_TEXTURE_SIZE_FIX; + } + } + + /* If the animations wraps around for each frame + * then the easy way of finding width would fail. + */ + if (unitW <= 0 && unitH ==0) + { + qWarning("QWzmViewer::savePIE - Texture animation appears to be illegal for PIE format."); + file.close(); + return -1; + } + else if ( unitW <=0) + { + unitW = 1; + } + + switch (pieVersion) + { + // TODO: Get playback rate and replace the literal " 1 " with it. + case 2: + animTmpSs << mesh->textureArrays << " 1 " << (int)rintf(OLD_TEXTURE_SIZE_FIX*unitW) + << ' ' << (int)rintf(OLD_TEXTURE_SIZE_FIX*unitH); + break; + case 3: + animTmpSs << mesh->textureArrays << " 1 " << (GLfloat)unitW << ' ' << (GLfloat)unitH; + break; + } + polyFlag |= iV_IMD_TEXANIM; + } + } + + // Write out the flag followed by the number of vertices + file << "\t" << std::hex << polyFlag << std::dec << ' ' << VERTICES_PER_TRIANGLE; // Triangles only + + // Write the three polygon indices + for (k = 0; k < VERTICES_PER_TRIANGLE; k++) + { + ptOffset = mesh->indexArray[j*VERTICES_PER_TRIANGLE+k]; + + pie_Point thisPoint(mesh->vertexArray[ptOffset*VERTICES_PER_TRIANGLE], + mesh->vertexArray[ptOffset*VERTICES_PER_TRIANGLE+1], + mesh->vertexArray[ptOffset*VERTICES_PER_TRIANGLE+2]); + + ptSetIndex = distance(ptSet.begin(), ptSet.find(thisPoint)); + + if (ptSetIndex == ptSet.size()) + { + file.close(); + qWarning("QWzmViewer::savePIE - Internal error: Failed to find vertex in set."); + return -1; + } + else + { + file << ' ' << ptSetIndex; + + // Store the texture coordinates for later + textures.push(textCoords(mesh->textureArray[0][ptOffset*2], + mesh->textureArray[0][ptOffset*2+1])); + } + } + + // If the polygon has team colours or animations, write that data now + if (polyFlag & iV_IMD_TEXANIM) + { + file << ' ' << animTmpSs.str(); + } + + // Write out all the texture coordinates + while (!textures.empty()) + { + switch (pieVersion) + { + case 2: + file << ' ' << (int)rintf(OLD_TEXTURE_SIZE_FIX*textures.front().u); + file << ' ' << (int)rintf(OLD_TEXTURE_SIZE_FIX*textures.front().v); + break; + case 3: + file << ' ' << textures.front().u << ' ' << textures.front().v; + break; + } + textures.pop(); + } + file << '\n'; + } + + // In PIE the CONNECTORS directive is optional + if (mesh->connectors > 0) + { + // CONNECTORS directive + file << "CONNECTORS " << mesh->connectors << "\n"; + + for (j = 0; j < mesh->connectors; j++) + { + switch (pieVersion) + { + case 2: + file << "\t" << (int)rintf(mesh->connectorArray[j].pos.x) + << ' ' << (int)rintf(mesh->connectorArray[j].pos.y) + << ' ' << (int)rintf(mesh->connectorArray[j].pos.z) << '\n'; + break; + case 3: + file << "\t" << mesh->connectorArray[j].pos.x + << ' ' << mesh->connectorArray[j].pos.y + << ' ' << mesh->connectorArray[j].pos.z << '\n'; + break; + } + } + } + } + + if(file.bad()) + { + file.close(); + return -1; + } + file.close(); + return 0; +} + +QPieExportDialog::QPieExportDialog(QWidget *parent) + : QDialog(parent), Ui_PieExportDialog() +{ + setupUi(this); +} + +QPieExportDialog::~QPieExportDialog() +{ +} + +int QPieExportDialog::getPieVersion() +{ + return cbb_pieversion->currentIndex() + 2; +} + +int QPieExportDialog::getFlags() +{ + int retVal = 0; + if (cb_TCMask->checkState()) + { + retVal |= iV_IMD_TCMASK; + } + if (cb_Tex->checkState()) + { + retVal |= iV_IMD_TEX; + } + if (cb_Other->checkState()) + { + retVal |= sb_OtherFlags->value(); + } + return retVal; } diff --git a/tools/qwzm/conversion.h b/tools/qwzm/conversion.h new file mode 100644 index 000000000..e165508e3 --- /dev/null +++ b/tools/qwzm/conversion.h @@ -0,0 +1,98 @@ +#ifndef CONVERSION_H +#define CONVERSION_H +#include + +#include "ui_pieexport.h" + +#define VERTICES_PER_TRIANGLE 3 + +// Load PIE files +#define iV_IMD_TEX 0x00000200 +#define iV_IMD_XNOCUL 0x00002000 +#define iV_IMD_TEXANIM 0x00004000 +#define iV_IMD_TCMASK 0x00010000 +#define MAX_POLYGON_SIZE 16 + +#define OLD_TEXTURE_SIZE_FIX 256.0f + +#define pie_MAX_VERTICES 768 +#define pie_MAX_POLYGONS 512 +#define pie_MAX_VERTICES_PER_POLYGON 6 + +typedef struct +{ + int index[MAX_POLYGON_SIZE]; + GLfloat texCoord[MAX_POLYGON_SIZE][2]; + int vertices; + int frames, rate; // animation data + GLfloat width, height; // animation data + bool cull; +} WZ_FACE; + +typedef struct +{ + GLfloat x, y, z; +} WZ_POSITION; + +class pie_Point +{ +private: + GLfloat x, y, z; +public: + + pie_Point(GLfloat x, GLfloat y, GLfloat z) + { + this->x = x; + this->y = y; + this->z = z; + } + + void getXYZ(GLfloat &x, GLfloat &y, GLfloat &z) const + { + x = this->x; + y = this->y; + z = this->z; + } + + bool operator < (const pie_Point& rhs) const + { + if (this->x == rhs.x && this->y == rhs.y) + { + return (this->z < rhs.z); + } + else if (this->x == rhs.x) + { + return (this->y < rhs.y); + } + else + { + return (this->x < rhs.x); + } + } + + bool operator == (const pie_Point& rhs) const + { + return (this->x == rhs.x && this->x == rhs.x && this->x == rhs.x); + } +}; + +struct textCoords +{ + GLfloat u, v; + textCoords(GLfloat u, GLfloat v) + { + this->u = u; + this->v = v; + } +}; + +/** PIE Export dialog*/ +class QPieExportDialog : public QDialog, private Ui_PieExportDialog +{ +public: + QPieExportDialog(QWidget *parent = 0); + ~QPieExportDialog(); + int getPieVersion(); + int getFlags(); +}; +#endif // CONVERSION_H diff --git a/tools/qwzm/pieexport.ui b/tools/qwzm/pieexport.ui new file mode 100644 index 000000000..53e818d78 --- /dev/null +++ b/tools/qwzm/pieexport.ui @@ -0,0 +1,215 @@ + + + PieExportDialog + + + + 0 + 0 + 400 + 250 + + + + + 0 + 0 + + + + Dialog + + + Qt::LeftToRight + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:18pt; font-weight:600; color:#ff0000;">Warning: Experimental!</span></p></body></html> + + + Qt::AlignCenter + + + + + + + + + PIE Version: + + + + + + + QComboBox::AdjustToContents + + + true + + + + 2 + + + + + 3 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + + + + + + Type: + + + + + + Textured + + + + + + + TCMask + + + + + + + Other + + + + + + + Qt::RightToLeft + + + + + + true + + + 131071 + + + + + + + + + + + 0 + 0 + + + + Qt::RightToLeft + + + Qt::Vertical + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + QHexSpinBox + QSpinBox +
qhexspinbox.h
+
+
+ + + + buttonBox + accepted() + PieExportDialog + accept() + + + 236 + 240 + + + 157 + 213 + + + + + buttonBox + rejected() + PieExportDialog + reject() + + + 304 + 240 + + + 286 + 213 + + + + + cb_Other + toggled(bool) + sb_OtherFlags + setEnabled(bool) + + + 278 + 120 + + + 294 + 143 + + + + +
diff --git a/tools/qwzm/qhexspinbox.h b/tools/qwzm/qhexspinbox.h new file mode 100644 index 000000000..0fe4116cf --- /dev/null +++ b/tools/qwzm/qhexspinbox.h @@ -0,0 +1,34 @@ +#ifndef QHEXSPINBOX_H +#define QHEXSPINBOX_H +#include + +class QHexSpinBox : public QSpinBox +{ +public: + QHexSpinBox(QWidget *parent = 0): + QSpinBox(parent) + { + setDisabled(true); + setPrefix("0x"); + } + int valueFromText(const QString &text) const + { + bool ok; + int retVal = text.toInt(&ok, 16); + if (ok) + return retVal; + return 0; + } + + QString textFromValue(int value) const + { + return QString::number(value, 16).toUpper(); + } + QValidator::State validate(const QString &input, const int&)const + { + if (valueFromText(input)) + return QValidator::Acceptable; + return QValidator::Invalid; + } +}; +#endif // QHEXSPINBOX_H diff --git a/tools/qwzm/qwzm.cpp b/tools/qwzm/qwzm.cpp index 5b3644add..6f6948545 100644 --- a/tools/qwzm/qwzm.cpp +++ b/tools/qwzm/qwzm.cpp @@ -17,158 +17,259 @@ */ #include "qwzm.h" +#include "conversion.h" -QConnectorViewer::QConnectorViewer(QWidget *parent) - : QDialog(parent), Ui_ConnectorView() +#include +#include +#include + + +QWzmViewer::QWzmViewer(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow()), psModel(NULL), timer(new QTimer(this)) { - setupUi(this); - connect(pushButtonClose, SIGNAL(pressed()), this, SLOT(hide())); -// connect(pushButtonPrepend, SIGNAL(pressed()), parent, SLOT(prependConnector())); -// connect(pushButtonAppend, SIGNAL(pressed()), parent, SLOT(appendConnector())); -// connect(pushButtonRemove, SIGNAL(pressed()), parent, SLOT(removeConnector())); -} + QSettings settings; + ui->setupUi(this); -void QConnectorViewer::setModel(QStandardItemModel *model) -{ - tableView->setModel(model); - tableView->setSelectionMode(QAbstractItemView::SingleSelection); - tableView->setSelectionBehavior(QAbstractItemView::SelectRows); -} + connectorsModel.setColumnCount(4); + connectorsModel.setHeaderData(0, Qt::Horizontal, QString("X")); + connectorsModel.setHeaderData(1, Qt::Horizontal, QString("Y")); + connectorsModel.setHeaderData(2, Qt::Horizontal, QString("Z")); + connectorsModel.setHeaderData(3, Qt::Horizontal, QString(tr("Type"))); -QModelIndex QConnectorViewer::selectedIndex() -{ - return tableView->currentIndex(); -} + animationModel.setColumnCount(8); + animationModel.setHeaderData(0, Qt::Horizontal, QString(tr("Time"))); + animationModel.setHeaderData(1, Qt::Horizontal, QString("Tex")); + animationModel.setHeaderData(2, Qt::Horizontal, QString("Trs X")); + animationModel.setHeaderData(3, Qt::Horizontal, QString("Trs Y")); + animationModel.setHeaderData(4, Qt::Horizontal, QString("Trs Z")); + animationModel.setHeaderData(5, Qt::Horizontal, QString("Rot X")); + animationModel.setHeaderData(6, Qt::Horizontal, QString("Rot Y")); + animationModel.setHeaderData(7, Qt::Horizontal, QString("Rot Z")); -void QConnectorViewer::setSelectedIndex(int idx) -{ - tableView->setCurrentIndex(tableView->model()->index(idx, 0)); -} + fileNameLabel = new QLabel(tr("No file loaded"), ui->statusBar); -void QConnectorViewer::updateModel() -{ - tableView->resizeColumnsToContents(); -} + selectedMeshComboBox = new QComboBox(ui->statusBar); + selectedMeshComboBox->setToolTip(tr("Selected Mesh")); + selectedMeshComboBox->setEnabled(false); -QConnectorViewer::~QConnectorViewer() -{ -} + visibleMeshComboBox = new QComboBox(ui->statusBar); + visibleMeshComboBox->setEnabled(false); + visibleMeshComboBox->setToolTip(tr("Visible Mesh")); + visibleMeshComboBox->addItem(tr("All")); -QAnimViewer::QAnimViewer(QWidget *parent) - : QDialog(parent), Ui_AnimationView() -{ - setupUi(this); - connect(pushButtonClose, SIGNAL(pressed()), this, SLOT(hide())); - connect(pushButtonPrepend, SIGNAL(pressed()), parent, SLOT(prependFrame())); - connect(pushButtonAppend, SIGNAL(pressed()), parent, SLOT(appendFrame())); - connect(pushButtonRemove, SIGNAL(pressed()), parent, SLOT(removeFrame())); -} + teamComboBox = new QComboBox(ui->statusBar); + teamComboBox->setToolTip(tr("Team Colour")); + teamComboBox->addItem(tr("Green")); + teamComboBox->addItem(tr("Yellow")); + teamComboBox->addItem(tr("Grey")); + teamComboBox->addItem(tr("Black")); + teamComboBox->addItem(tr("Red")); + teamComboBox->addItem(tr("Blue")); + teamComboBox->addItem(tr("Pink")); + teamComboBox->addItem(tr("Cyan")); -void QAnimViewer::setModel(QStandardItemModel *model) -{ - tableViewAnimation->setModel(model); - tableViewAnimation->setSelectionMode(QAbstractItemView::SingleSelection); - tableViewAnimation->setSelectionBehavior(QAbstractItemView::SelectRows); -} + scaleSlider = new QSlider(ui->statusBar); + scaleSlider->setToolTip(tr("Scale")); + scaleSlider->setRange(1, 1000); + scaleSlider->setValue(100); + scaleSlider->setOrientation(Qt::Horizontal); + scaleSlider->setEnabled(false); -QModelIndex QAnimViewer::selectedIndex() -{ - return tableViewAnimation->currentIndex(); -} + ui->statusBar->addPermanentWidget(fileNameLabel); + ui->statusBar->addPermanentWidget(selectedMeshComboBox); + ui->statusBar->addPermanentWidget(visibleMeshComboBox); + ui->statusBar->addPermanentWidget(teamComboBox); + ui->statusBar->addPermanentWidget(scaleSlider); -void QAnimViewer::setSelectedIndex(int idx) -{ - tableViewAnimation->setCurrentIndex(tableViewAnimation->model()->index(idx, 0)); -} + ui->connectorTableView->setModel(&connectorsModel); + ui->animationTableView->setModel(&animationModel); -void QAnimViewer::updateModel() -{ - tableViewAnimation->resizeColumnsToContents(); -} + ui->animationDockWidget->hide(); + ui->connectorDockWidget->hide(); -QAnimViewer::~QAnimViewer() -{ -} - -QWzmViewer::QWzmViewer(QWidget *parent) - : QMainWindow(parent), Ui::QWZM() -{ - psModel = NULL; - QTimer *timer = new QTimer(this); - - setupUi(this); connect(timer, SIGNAL(timeout()), this, SLOT(tick())); - connect(actionQuit, SIGNAL(triggered()), qApp, SLOT(quit())); - connect(actionSave, SIGNAL(triggered()), this, SLOT(save())); - connect(actionSaveAs, SIGNAL(triggered()), this, SLOT(saveAs())); - connect(actionImport_3DS, SIGNAL(triggered()), this, SLOT(open3DS())); - connect(actionOpenWZM, SIGNAL(triggered()), this, SLOT(openWZM())); - connect(actionImport_PIE, SIGNAL(triggered()), this, SLOT(openPIE())); - connect(actionWireframe, SIGNAL(triggered()), this, SLOT(toggleWireframe())); - connect(actionHelp, SIGNAL(triggered()), glView, SLOT(help())); - connect(actionAxis, SIGNAL(triggered()), glView, SLOT(toggleAxisIsDrawn())); - connect(actionCulling, SIGNAL(triggered()), this, SLOT(toggleCulling())); - connect(actionAnimation, SIGNAL(triggered()), this, SLOT(toggleAnimation())); - connect(actionScaleModel, SIGNAL(triggered()), this, SLOT(toggleScale())); - connect(comboBoxTeam, SIGNAL(currentIndexChanged(int)), this, SLOT(setTeam(int))); - connect(comboBoxSelectedMesh, SIGNAL(currentIndexChanged(int)), this, SLOT(setMesh(int))); - connect(actionSwapYZ, SIGNAL(triggered()), this, SLOT(toggleSwapYZ())); - connect(actionReverseWinding, SIGNAL(triggered()), this, SLOT(toggleReverseWinding())); - connect(actionFlipVerticalTexCoords, SIGNAL(triggered()), this, SLOT(toggleFlipVerticalTexCoords())); - connect(actionEditFrames, SIGNAL(triggered()), this, SLOT(toggleEditAnimation())); - connect(actionEditConnectors, SIGNAL(triggered()), this, SLOT(toggleEditConnectors())); + connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(actionOpen())); + connect(ui->actionSave, SIGNAL(triggered()), this, SLOT(actionSave())); + connect(ui->actionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); + connect(ui->actionQuit, SIGNAL(triggered()), QApplication::instance(), SLOT(quit())); + connect(ui->actionImport_3DS, SIGNAL(triggered()), this, SLOT(open3DS())); + connect(ui->actionWireframe, SIGNAL(triggered()), this, SLOT(toggleWireframe())); + connect(ui->actionHelpContents, SIGNAL(triggered()), ui->glView, SLOT(help())); + connect(ui->actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt())); + connect(ui->actionAboutApplication, SIGNAL(triggered()), this, SLOT(actionAboutApplication())); + connect(ui->actionAxis, SIGNAL(triggered()), ui->glView, SLOT(toggleAxisIsDrawn())); + connect(ui->actionCulling, SIGNAL(triggered()), this, SLOT(toggleCulling())); + connect(ui->actionAnimation, SIGNAL(triggered()), this, SLOT(toggleAnimation())); + connect(ui->actionScaleModel, SIGNAL(triggered()), this, SLOT(toggleScale())); + connect(selectedMeshComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setMesh(int))); + connect(visibleMeshComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setVisibleMesh(int))); + connect(teamComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setTeam(int))); + connect(ui->actionSwapYZ, SIGNAL(triggered()), this, SLOT(toggleSwapYZ())); + connect(ui->actionReverseWinding, SIGNAL(triggered()), this, SLOT(toggleReverseWinding())); + connect(ui->actionFlipVerticalTexCoords, SIGNAL(triggered()), this, SLOT(toggleFlipVerticalTexCoords())); + connect(ui->actionFramesEditor, SIGNAL(toggled(bool)), this, SLOT(toggleEditAnimation(bool))); + connect(ui->actionConnectorsEditor, SIGNAL(toggled(bool)), this, SLOT(toggleEditConnectors(bool))); + connect(ui->animationDockWidget, SIGNAL(visibilityChanged(bool)), ui->actionFramesEditor, SLOT(setChecked(bool))); + connect(ui->connectorDockWidget, SIGNAL(visibilityChanged(bool)), ui->actionConnectorsEditor, SLOT(setChecked(bool))); + connect(ui->prependFrameButton, SIGNAL(pressed()), this, SLOT(prependFrame())); + connect(ui->appendFrameButton, SIGNAL(pressed()), this, SLOT(appendFrame())); + connect(ui->removeFrameButton, SIGNAL(pressed()), this, SLOT(removeFrame())); // Set defaults toggleAnimation(); - actionSave->setEnabled(false); - actionSaveAs->setEnabled(false); - connectorView = new QConnectorViewer(this); - connectors.setColumnCount(4); - connectors.setHeaderData(0, Qt::Horizontal, QString("X")); - connectors.setHeaderData(1, Qt::Horizontal, QString("Y")); - connectors.setHeaderData(2, Qt::Horizontal, QString("Z")); - connectors.setHeaderData(3, Qt::Horizontal, QString("Type")); - connectorView->setModel(&connectors); + ui->actionSave->setEnabled(false); + ui->actionSaveAs->setEnabled(false); - animView = new QAnimViewer(this); - anim.setColumnCount(8); - anim.setHeaderData(0, Qt::Horizontal, QString("Time")); - anim.setHeaderData(1, Qt::Horizontal, QString("Tex")); - anim.setHeaderData(2, Qt::Horizontal, QString("Trs X")); - anim.setHeaderData(3, Qt::Horizontal, QString("Trs Y")); - anim.setHeaderData(4, Qt::Horizontal, QString("Trs Z")); - anim.setHeaderData(5, Qt::Horizontal, QString("Rot X")); - anim.setHeaderData(6, Qt::Horizontal, QString("Rot Y")); - anim.setHeaderData(7, Qt::Horizontal, QString("Rot Z")); - animView->setModel(&anim); + restoreGeometry(settings.value("geometry").toByteArray()); + restoreState(settings.value("windowState").toByteArray()); timer->start(25); } QWzmViewer::~QWzmViewer() { + delete ui; } -void QWzmViewer::toggleEditAnimation() +void QWzmViewer::closeEvent(QCloseEvent *event) { - animView->show(); + QSettings settings; + + settings.setValue("geometry", saveGeometry()); + settings.setValue("windowState", saveState()); + + QMainWindow::closeEvent(event); } -void QWzmViewer::toggleEditConnectors() +void QWzmViewer::actionOpen() { - connectorView->show(); + static QString lastDir; // Convenience HACK to remember last succesful directory a model was loaded from. + filename = QFileDialog::getOpenFileName(this, tr("Choose a PIE or WZM file"), lastDir, tr("All Compatible (*.wzm *.pie);;WZM models (*.wzm);;PIE models (*.pie)")); + if (!filename.isEmpty()) + { + QFileInfo theFile(filename); + MODEL *tmpModel = NULL; + + if (theFile.completeSuffix().compare(QString("wzm"), Qt::CaseInsensitive) == 0) + { + tmpModel = readModel(filename.toAscii().constData(), 0); + } + else if (theFile.completeSuffix().compare(QString("pie"), Qt::CaseInsensitive) == 0) + { + tmpModel = loadPIE(filename); + } + else + { + return; + } + + if (tmpModel) + { + + QFileInfo texPath(theFile.absoluteDir(), tmpModel->texPath); + + // Try to find texture automatically + if (!texPath.exists()) + { + texPath.setFile(QString("../../data/base/texpages/"), tmpModel->texPath); + if (!texPath.exists()) + { + texPath.setFile(QFileDialog::getExistingDirectory(this, tr("Specify texture directory"), QString::null), tmpModel->texPath); + if (!texPath.exists()) + { + QMessageBox::warning(this, tr("Oops..."), "Could not find texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); + freeModel(tmpModel); + return; + } + } + } + if (psModel) + { + freeModel(psModel); + } + psModel = tmpModel; + setModel(texPath); + ui->actionSave->setEnabled(true); + lastDir = theFile.absolutePath(); + fileNameLabel->setText(theFile.fileName()); + fileNameLabel->setToolTip(filename); + } + else + { + qWarning("Failed to create model!"); + + ui->statusBar->showMessage(tr("Failed to create model!"), 3000); + } + } +} + +void QWzmViewer::actionSaveAs() +{ + if (psModel) + { + filename = QFileDialog::getSaveFileName(this, tr("Choose output file"), QString::null, tr("All Compatible (*.wzm *.pie);;WZM (*.wzm);;PIE (*.pie)")); + ui->actionSave->setEnabled(true); + fileNameLabel->setText(QFileInfo(filename).fileName()); + fileNameLabel->setToolTip(filename); + actionSave(); + } +} + +void QWzmViewer::actionSave() +{ + int retVal = -1; + if (!filename.isEmpty() && psModel) + { + QFileInfo fileInfo(filename); + if (fileInfo.completeSuffix().compare(QString("wzm"), Qt::CaseInsensitive) == 0) + { + retVal = saveModel(filename.toAscii().constData(), psModel); + } + else if (fileInfo.completeSuffix().compare(QString("pie"), Qt::CaseInsensitive) == 0) + { + QPieExportDialog dialog; + dialog.exec(); + if (dialog.result()) + { + retVal = savePIE(filename.toAscii().constData(), psModel, dialog.getPieVersion(), dialog.getFlags()); + } + else + { + retVal = 0; + } + } + + if (retVal != 0) + { + QMessageBox::warning(this, tr("Oops..."), "Could not save model", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); + } + } +} + +void QWzmViewer::actionAboutApplication() +{ + QMessageBox::about(this, tr("About QWZM"), QString(tr("QWZM %1
Model viewer and editor for Warzone 2100.").arg(QApplication::instance()->applicationVersion()))); +} + +void QWzmViewer::toggleEditAnimation(bool show) +{ + ui->animationDockWidget->setVisible(show); +} + +void QWzmViewer::toggleEditConnectors(bool show) +{ + ui->connectorDockWidget->setVisible(show); } void QWzmViewer::setTeam(int index) { - glView->setTeam(index); + ui->glView->setTeam(index); } void QWzmViewer::toggleScale() { - double result = QInputDialog::getDouble(this, tr("Choose scale factor"), tr("Factor:") ); - qWarning("TODO: %f", result); +// double result = QInputDialog::getDouble(this, tr("Choose scale factor"), tr("Factor:") ); + qWarning("TODO"); } void QWzmViewer::toggleSwapYZ() @@ -188,25 +289,34 @@ void QWzmViewer::toggleFlipVerticalTexCoords() void QWzmViewer::tick() { - int currentMesh = comboBoxSelectedMesh->currentIndex(); + int currentMesh = selectedMeshComboBox->currentIndex(); if (psModel) { MESH *psMesh = &psModel->mesh[currentMesh]; - psMesh->currentFrame = animView->selectedIndex().row(); + psMesh->currentFrame = ui->animationTableView->currentIndex().row(); + + if(psMesh->frames <= 0) + { + psMesh->currentFrame = -1; + } + else if(psMesh->currentFrame >= psMesh->frames || psMesh->currentFrame < 0) + { + psMesh->currentFrame = 0; + } } - glView->updateGL(); - if (psModel && actionAnimation->isChecked()) + ui->glView->updateGL(); + if (psModel && ui->actionAnimation->isChecked()) { MESH *psMesh = &psModel->mesh[currentMesh]; - animView->setSelectedIndex(psMesh->currentFrame); + ui->animationTableView->setCurrentIndex(animationModel.index(psMesh->currentFrame, 0)); } } void QWzmViewer::toggleCulling() { - if (actionCulling->isChecked()) + if (ui->actionCulling->isChecked()) { glEnable(GL_CULL_FACE); } @@ -219,9 +329,10 @@ void QWzmViewer::toggleCulling() void QWzmViewer::toggleAnimation() { // Reset animation on start because it might be out of sync - if (psModel && actionAnimation->isChecked()) + if (psModel && ui->actionAnimation->isChecked()) { - animView->setSelectedIndex(0); + ui->animationTableView->setCurrentIndex(ui->animationTableView->model()->index(0, 0)); + for (int i = 0; i < psModel->meshes; i++) { MESH *psMesh = &psModel->mesh[i]; @@ -231,12 +342,12 @@ void QWzmViewer::toggleAnimation() } } - glView->setAnimation(actionAnimation->isChecked()); + ui->glView->setAnimation(ui->actionAnimation->isChecked()); } void QWzmViewer::toggleWireframe() { - if (actionWireframe->isChecked()) + if (ui->actionWireframe->isChecked()) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); } @@ -246,33 +357,12 @@ void QWzmViewer::toggleWireframe() } } -void QWzmViewer::saveAs() -{ - if (psModel) - { - filename = QFileDialog::getSaveFileName(this, tr("Choose output file"), QString::null, QString::null); - actionSave->setEnabled(true); - save(); - } -} - -void QWzmViewer::save() -{ - if (filename != "" && psModel) - { - if (saveModel(filename.toAscii().constData(), psModel) != 0) - { - QMessageBox::critical(this, tr("Oops..."), "Could not save model", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); - } - } -} - -void QWzmViewer::rowsChanged(const QModelIndex &parent, int start, int end) +void QWzmViewer::rowsChanged(const QModelIndex&, int, int) { reloadFrames(); } -void QWzmViewer::dataChanged(const QModelIndex &first, const QModelIndex &last) +void QWzmViewer::dataChanged(const QModelIndex&, const QModelIndex&) { reloadFrames(); } @@ -280,10 +370,10 @@ void QWzmViewer::dataChanged(const QModelIndex &first, const QModelIndex &last) // Load animation frames from UI model into WZM drawing model void QWzmViewer::reloadFrames() { - MESH *psMesh = &psModel->mesh[comboBoxSelectedMesh->currentIndex()]; + MESH *psMesh = &psModel->mesh[selectedMeshComboBox->currentIndex()]; // Reallocate frames - psMesh->frames = anim.rowCount(); + psMesh->frames = animationModel.rowCount(); free(psMesh->frameArray); psMesh->frameArray = (FRAME *)malloc(sizeof(FRAME) * psMesh->frames); @@ -291,71 +381,80 @@ void QWzmViewer::reloadFrames() { FRAME *psFrame = &psMesh->frameArray[i]; - psFrame->timeSlice = anim.data(anim.index(i, 0, QModelIndex())).toDouble(); - psFrame->textureArray = anim.data(anim.index(i, 1, QModelIndex())).toInt(); - psFrame->translation.x = anim.data(anim.index(i, 2, QModelIndex())).toDouble(); - psFrame->translation.y = anim.data(anim.index(i, 3, QModelIndex())).toDouble(); - psFrame->translation.z = anim.data(anim.index(i, 4, QModelIndex())).toDouble(); - psFrame->rotation.x = anim.data(anim.index(i, 5, QModelIndex())).toDouble(); - psFrame->rotation.y = anim.data(anim.index(i, 6, QModelIndex())).toDouble(); - psFrame->rotation.z = anim.data(anim.index(i, 7, QModelIndex())).toDouble(); + psFrame->timeSlice = animationModel.data(animationModel.index(i, 0, QModelIndex())).toDouble(); + psFrame->textureArray = animationModel.data(animationModel.index(i, 1, QModelIndex())).toInt(); + psFrame->translation.x = animationModel.data(animationModel.index(i, 2, QModelIndex())).toDouble(); + psFrame->translation.y = animationModel.data(animationModel.index(i, 3, QModelIndex())).toDouble(); + psFrame->translation.z = animationModel.data(animationModel.index(i, 4, QModelIndex())).toDouble(); + psFrame->rotation.x = animationModel.data(animationModel.index(i, 5, QModelIndex())).toDouble(); + psFrame->rotation.y = animationModel.data(animationModel.index(i, 6, QModelIndex())).toDouble(); + psFrame->rotation.z = animationModel.data(animationModel.index(i, 7, QModelIndex())).toDouble(); + } + + if(psMesh->frames <= 0) + { + psMesh->currentFrame = -1; + } + else if(psMesh->currentFrame >= psMesh->frames || psMesh->currentFrame < 0) + { + psMesh->currentFrame = 0; } } void QWzmViewer::prependFrame() { - QModelIndex index = animView->selectedIndex(); + QModelIndex index = ui->animationTableView->currentIndex(); animLock(); - anim.insertRow(index.row()); - anim.setData(anim.index(index.row(), 0, QModelIndex()), QString::number(0.1)); - anim.setData(anim.index(index.row(), 1, QModelIndex()), QString::number(0)); - anim.setData(anim.index(index.row(), 2, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(index.row(), 3, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(index.row(), 4, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(index.row(), 5, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(index.row(), 6, QModelIndex()), QString::number(0.0)); + animationModel.insertRow(index.row()); + animationModel.setData(animationModel.index(index.row(), 0, QModelIndex()), QString::number(0.1)); + animationModel.setData(animationModel.index(index.row(), 1, QModelIndex()), QString::number(0)); + animationModel.setData(animationModel.index(index.row(), 2, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(index.row(), 3, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(index.row(), 4, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(index.row(), 5, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(index.row(), 6, QModelIndex()), QString::number(0.0)); animUnlock(); // act on last change only - anim.setData(anim.index(index.row(), 7, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(index.row(), 7, QModelIndex()), QString::number(0.0)); } void QWzmViewer::appendFrame() { - QModelIndex index = animView->selectedIndex(); + QModelIndex index = ui->animationTableView->currentIndex(); int idx = index.row() + 1; animLock(); - anim.insertRow(idx); - anim.setData(anim.index(idx, 0, QModelIndex()), QString::number(0.1)); - anim.setData(anim.index(idx, 1, QModelIndex()), QString::number(0)); - anim.setData(anim.index(idx, 2, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(idx, 3, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(idx, 4, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(idx, 5, QModelIndex()), QString::number(0.0)); - anim.setData(anim.index(idx, 6, QModelIndex()), QString::number(0.0)); + animationModel.insertRow(idx); + animationModel.setData(animationModel.index(idx, 0, QModelIndex()), QString::number(0.1)); + animationModel.setData(animationModel.index(idx, 1, QModelIndex()), QString::number(0)); + animationModel.setData(animationModel.index(idx, 2, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(idx, 3, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(idx, 4, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(idx, 5, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(idx, 6, QModelIndex()), QString::number(0.0)); animUnlock(); // act on last change only - anim.setData(anim.index(idx, 7, QModelIndex()), QString::number(0.0)); + animationModel.setData(animationModel.index(idx, 7, QModelIndex()), QString::number(0.0)); } void QWzmViewer::removeFrame() { - QModelIndex index = animView->selectedIndex(); - anim.removeRow(index.row()); + QModelIndex index = ui->animationTableView->currentIndex(); + animationModel.removeRow(index.row()); } void QWzmViewer::animLock() { // Prevent backscatter - disconnect(&anim, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(dataChanged(const QModelIndex &, const QModelIndex &))); - disconnect(&anim, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); - disconnect(&anim, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); + disconnect(&animationModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(dataChanged(const QModelIndex &, const QModelIndex &))); + disconnect(&animationModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); + disconnect(&animationModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); } void QWzmViewer::animUnlock() { - connect(&anim, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(dataChanged(const QModelIndex &, const QModelIndex &))); - connect(&anim, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); - connect(&anim, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); + connect(&animationModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(dataChanged(const QModelIndex &, const QModelIndex &))); + connect(&animationModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); + connect(&animationModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(rowsChanged(const QModelIndex &, int, int))); } void QWzmViewer::setMesh(int index) @@ -368,168 +467,127 @@ void QWzmViewer::setMesh(int index) // Refresh frame view animLock(); - anim.setRowCount(psMesh->frames); + animationModel.setRowCount(psMesh->frames); for (int i = 0; i < psMesh->frames; i++) { FRAME *psFrame = &psMesh->frameArray[i]; - anim.setData(anim.index(i, 0, QModelIndex()), QString::number(psFrame->timeSlice)); - anim.setData(anim.index(i, 1, QModelIndex()), QString::number(psFrame->textureArray)); - anim.setData(anim.index(i, 2, QModelIndex()), QString::number(psFrame->translation.x)); - anim.setData(anim.index(i, 3, QModelIndex()), QString::number(psFrame->translation.y)); - anim.setData(anim.index(i, 4, QModelIndex()), QString::number(psFrame->translation.z)); - anim.setData(anim.index(i, 5, QModelIndex()), QString::number(psFrame->rotation.x)); - anim.setData(anim.index(i, 6, QModelIndex()), QString::number(psFrame->rotation.y)); - anim.setData(anim.index(i, 7, QModelIndex()), QString::number(psFrame->rotation.z)); + animationModel.setData(animationModel.index(i, 0, QModelIndex()), QString::number(psFrame->timeSlice)); + animationModel.setData(animationModel.index(i, 1, QModelIndex()), QString::number(psFrame->textureArray)); + animationModel.setData(animationModel.index(i, 2, QModelIndex()), QString::number(psFrame->translation.x)); + animationModel.setData(animationModel.index(i, 3, QModelIndex()), QString::number(psFrame->translation.y)); + animationModel.setData(animationModel.index(i, 4, QModelIndex()), QString::number(psFrame->translation.z)); + animationModel.setData(animationModel.index(i, 5, QModelIndex()), QString::number(psFrame->rotation.x)); + animationModel.setData(animationModel.index(i, 6, QModelIndex()), QString::number(psFrame->rotation.y)); + animationModel.setData(animationModel.index(i, 7, QModelIndex()), QString::number(psFrame->rotation.z)); } - animView->updateModel(); - animView->setSelectedIndex(psMesh->currentFrame); + + ui->animationTableView->resizeColumnsToContents(); + ui->animationTableView->horizontalHeader()->setStretchLastSection(true); + ui->animationTableView->setCurrentIndex(animationModel.index(psMesh->currentFrame, 0)); + animUnlock(); // Refresh connector view - connectors.setRowCount(psMesh->connectors); + connectorsModel.setRowCount(psMesh->connectors); for (int i = 0; i < psMesh->connectors; i++) { - connectors.setData(connectors.index(i, 0, QModelIndex()), QString::number(psMesh->connectorArray[i].pos.x)); - connectors.setData(connectors.index(i, 1, QModelIndex()), QString::number(psMesh->connectorArray[i].pos.y)); - connectors.setData(connectors.index(i, 2, QModelIndex()), QString::number(psMesh->connectorArray[i].pos.z)); - connectors.setData(connectors.index(i, 4, QModelIndex()), QString::number(psMesh->connectorArray[i].type)); // TODO, dropdown box + connectorsModel.setData(connectorsModel.index(i, 0, QModelIndex()), QString::number(psMesh->connectorArray[i].pos.x)); + connectorsModel.setData(connectorsModel.index(i, 1, QModelIndex()), QString::number(psMesh->connectorArray[i].pos.y)); + connectorsModel.setData(connectorsModel.index(i, 2, QModelIndex()), QString::number(psMesh->connectorArray[i].pos.z)); + connectorsModel.setData(connectorsModel.index(i, 4, QModelIndex()), QString::number(psMesh->connectorArray[i].type)); // TODO, dropdown box } } -void QWzmViewer::setModel(QFileInfo &texPath) +void QWzmViewer::setModel(const QFileInfo &texPath) { psModel->pixmap = readPixmap(texPath.absoluteFilePath().toAscii().constData()); + if (!psModel->pixmap) { - QMessageBox::critical(this, tr("Oops..."), "Could not read texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); + QMessageBox::warning(this, tr("Oops..."), "Could not read texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); + freeModel(psModel); psModel = NULL; return; } - glView->setModel(psModel); - comboBoxTeam->setCurrentIndex(0); - actionSave->setEnabled(false); - actionSaveAs->setEnabled(true); - comboBoxSelectedMesh->setMaxCount(0); // delete previous - comboBoxSelectedMesh->setMaxCount(psModel->meshes); + + ui->glView->setModel(psModel); + teamComboBox->setCurrentIndex(0); + ui->actionSave->setEnabled(false); + ui->actionSaveAs->setEnabled(true); + selectedMeshComboBox->setEnabled(true); + selectedMeshComboBox->setMaxCount(0); // delete previous + selectedMeshComboBox->setMaxCount(psModel->meshes); + visibleMeshComboBox->setEnabled(true); + visibleMeshComboBox->setMaxCount(1); + visibleMeshComboBox->setMaxCount(psModel->meshes + 1); + ui->animationDockWidgetContents->setEnabled(true); + for (int i = 0; i < psModel->meshes; i++) { - comboBoxSelectedMesh->insertItem(i, QString::number(i)); + selectedMeshComboBox->insertItem(i, QString::number(i)); + visibleMeshComboBox->insertItem(i + 1, QString::number(i)); } - comboBoxSelectedMesh->setCurrentIndex(0); + + selectedMeshComboBox->setCurrentIndex(0); setMesh(0); } +void QWzmViewer::setVisibleMesh(int index) +{ + ui->glView->selectMesh(index); +} + void QWzmViewer::open3DS() { QString model = QFileDialog::getOpenFileName(this, tr("Choose 3DS file"), QString::null, tr("3DS models (*.3ds)")); - if (model != "") + + if (!model.isEmpty()) { - load3DS(model); - if (psModel) - { - QFileInfo texPath(psModel->texPath); - - if (!texPath.exists()) - { - texPath.setFile(QString("../../data/base/texpages/"), psModel->texPath); - if (!texPath.exists()) - { - texPath.setFile(QFileDialog::getOpenFileName(this, tr("Find texture"), QString::null, tr("PNG texture (*.png)"))); - strcpy(psModel->texPath, texPath.fileName().toAscii().constData()); - if (!texPath.exists()) - { - QMessageBox::critical(this, tr("Oops..."), "Could not open texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); - psModel = NULL; - return; - } - } - } - setModel(texPath); - } - else - { - qWarning("Failed to create model"); - } - } -} - -void QWzmViewer::openPIE() -{ - QString model = QFileDialog::getOpenFileName(this, tr("Choose PIE file"), QString::null, tr("PIE models (*.pie)")); - if (model != "") - { - loadPIE(model); - if (psModel) - { - QFileInfo texPath(psModel->texPath); - - if (!texPath.exists()) - { - texPath.setFile(QString("../../data/base/texpages/"), psModel->texPath); - if (!texPath.exists()) - { - texPath.setFile(QFileDialog::getOpenFileName(this, tr("Find texture"), QString::null, tr("PNG texture (*.png)"))); - strcpy(psModel->texPath, texPath.fileName().toAscii().constData()); - if (!texPath.exists()) - { - QMessageBox::critical(this, tr("Oops..."), "Could not open texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); - psModel = NULL; - return; - } - } - } - setModel(texPath); - } - else - { - qWarning("Failed to create model"); - } - } -} - -void QWzmViewer::openWZM() -{ - filename = QFileDialog::getOpenFileName(this, tr("Choose 3DS file"), QString::null, tr("WZM models (*.wzm)")); - if (filename != "") - { - MODEL *tmpModel = readModel(filename.toAscii().constData(), 0); + MODEL *tmpModel = load3DS(model); if (tmpModel) { QFileInfo texPath(tmpModel->texPath); - // Try to find texture automatically if (!texPath.exists()) { - texPath.setFile(QString("../../data/base/texpages/"), tmpModel->texPath); + texPath.setFile(QFileDialog::getOpenFileName(this, tr("Find texture"), QString::null, tr("PNG texture (*.png)"))); + strcpy(tmpModel->texPath, texPath.fileName().toAscii().constData()); if (!texPath.exists()) { - texPath.setFile(QFileDialog::getExistingDirectory(this, tr("Specify texture directory"), QString::null), tmpModel->texPath); - if (!texPath.exists()) - { - QMessageBox::critical(this, tr("Oops..."), "Could not find texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); - free(tmpModel); - return; - } + QMessageBox::warning(this, tr("Oops..."), "Could not open texture", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); + freeModel(tmpModel); + return; } } + if (psModel) + { + freeModel(psModel); + } psModel = tmpModel; + ui->actionSave->setEnabled(true); setModel(texPath); - actionSave->setEnabled(true); } else { qWarning("Failed to create model!"); + + ui->statusBar->showMessage(tr("Failed to create model!"), 3000); } } } int main(int argc, char *argv[]) { - QApplication app(argc, argv); + QApplication application(argc, argv); + application.setApplicationName("QWZM"); + application.setApplicationVersion("Pre-Alpha"); + application.setOrganizationName("Warzone2100"); + application.setOrganizationDomain("wz2100.net"); + QWzmViewer *wzm = new QWzmViewer(); wzm->show(); - return app.exec(); + return application.exec(); } diff --git a/tools/qwzm/qwzm.h b/tools/qwzm/qwzm.h index ca6766e01..4bd63c141 100644 --- a/tools/qwzm/qwzm.h +++ b/tools/qwzm/qwzm.h @@ -15,65 +15,66 @@ License along with this program. If not, see . */ + #ifndef QWZM_H #define QWZM_H -#include -#include -#include +#include "ui_qwzm.h" + +extern "C" +{ +#include "wzmutils.h" +} #include #include #include #include -extern "C" { -#include "wzmutils.h" -} -#include "ui_qwzm.h" -#include "ui_animationview.h" -#include "ui_connectorview.h" +#include +#include +#include +#include +#include -/** Animation view */ -class QAnimViewer : public QDialog, private Ui_AnimationView +class QWzmViewer : public QMainWindow { Q_OBJECT - public: - QAnimViewer(QWidget *parent = 0); - ~QAnimViewer(); - void setModel(QStandardItemModel *model); - void updateModel(); - QModelIndex selectedIndex(); - void setSelectedIndex(int idx); -}; -/** Connector view */ -class QConnectorViewer : public QDialog, private Ui_ConnectorView -{ - Q_OBJECT - public: - QConnectorViewer(QWidget *parent = 0); - ~QConnectorViewer(); - void setModel(QStandardItemModel *model); - void updateModel(); - QModelIndex selectedIndex(); - void setSelectedIndex(int idx); -}; - -/** WZM Viewer */ -class QWzmViewer : public QMainWindow, private Ui::QWZM -{ - Q_OBJECT - public: +public: QWzmViewer(QWidget *parent = 0); ~QWzmViewer(); - protected slots: - void saveAs(); - void save(); +protected: + void closeEvent(QCloseEvent *event); + MODEL *load3DS(QString input); + MODEL *loadPIE(QString input); + + /** PIE Export Method. + * + * @brief Function that saves a WZM Model to a file in the PIE format. + * + * @note Data may be lost in the conversion, especially + * if exporting to PIE version 2. + * + * @param Name of file to serialised to. + * @param Pointer to WZM data structure to be serialised. + * @param PIE version to export to. + * @note Currently only PIE version 2 and 3 are implemented. + * @param PIE flags to set. + * @return Returns 0 on success, -1 on failure. + * @author Safety0ff + */ + int savePIE(const char *filename, const MODEL *psModel, int pieVersion, int type); + + void setModel(const QFileInfo &texPath); + +protected slots: + void actionOpen(); + void actionSaveAs(); + void actionSave(); void open3DS(); - void openWZM(); - void openPIE(); + void actionAboutApplication(); void toggleWireframe(); void toggleCulling(); void setTeam(int index); @@ -84,10 +85,11 @@ class QWzmViewer : public QMainWindow, private Ui::QWZM void toggleReverseWinding(); void toggleFlipVerticalTexCoords(); void setMesh(int index); - void toggleEditAnimation(); - void toggleEditConnectors(); + void toggleEditAnimation(bool show); + void toggleEditConnectors(bool show); void animLock(); void animUnlock(); + void setVisibleMesh(int index); void rowsChanged(const QModelIndex &parent, int start, int end); void dataChanged(const QModelIndex &first, const QModelIndex &last); @@ -97,15 +99,17 @@ class QWzmViewer : public QMainWindow, private Ui::QWZM void appendFrame(); void removeFrame(); - private: - QString filename; +private: + Ui::MainWindow *ui; MODEL *psModel; - QStandardItemModel anim, connectors; - void load3DS(QString input); - void loadPIE(QString input); - void setModel(QFileInfo &texPath); - QAnimViewer *animView; - QConnectorViewer *connectorView; + QString filename; + QStandardItemModel animationModel; + QStandardItemModel connectorsModel; + QComboBox *selectedMeshComboBox; + QComboBox *visibleMeshComboBox; + QComboBox *teamComboBox; + QSlider *scaleSlider; + QLabel *fileNameLabel; + QTimer *timer; }; - #endif diff --git a/tools/qwzm/qwzm.pro b/tools/qwzm/qwzm.pro index 61f73293c..d44e02364 100644 --- a/tools/qwzm/qwzm.pro +++ b/tools/qwzm/qwzm.pro @@ -1,16 +1,29 @@ -FORMS += qwzm.ui animationview.ui connectorview.ui -SOURCES += qwzm.cpp ../display/wzmutils.c wzmglwidget.cpp conversion.cpp -HEADERS += qwzm.h ../display/wzmutils.h wzmglwidget.h +FORMS += qwzm.ui \ + pieexport.ui +SOURCES += qwzm.cpp \ + wzmutils.c \ + wzmglwidget.cpp \ + conversion.cpp +HEADERS += qwzm.h \ + wzmutils.h \ + wzmglwidget.h \ + conversion.h \ + qhexspinbox.h TEMPLATE = app -CONFIG += debug warn_on qt precompile_header +CONFIG += debug \ + warn_on \ + qt \ + precompile_header TARGET = qwzm # If your system uses different paths for QGLViewer, create a file named # "config" and override the two variables below (with "="). QGLVIEWER_INCL = /usr/include/QGLViewer QGLVIEWER_LIBS = -lQGLViewer - include("config") -INCLUDEPATH += ../display $$QGLVIEWER_INCL -LIBS += -l3ds -lm $$QGLVIEWER_LIBS -QT += opengl xml +INCLUDEPATH += $$QGLVIEWER_INCL +LIBS += -l3ds \ + -lm \ + $$QGLVIEWER_LIBS +QT += opengl \ + xml diff --git a/tools/qwzm/qwzm.ui b/tools/qwzm/qwzm.ui index 3f9d622ff..69116ec0d 100644 --- a/tools/qwzm/qwzm.ui +++ b/tools/qwzm/qwzm.ui @@ -1,7 +1,8 @@ - - QWZM - - + + + MainWindow + + 0 0 @@ -9,123 +10,28 @@ 600 - + The Warzone Model Post-production Program - - + + QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks + + + - - - + + + 0 0 - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Selected mesh - - - - - - - - - - - - Qt::Vertical - - - - - - - - - Player - - - - - - - - Green - - - - - Yellow - - - - - Grey - - - - - Black - - - - - Red - - - - - Blue - - - - - Pink - - - - - Cyan - - - - - - - - - - - + + 0 0 @@ -133,198 +39,373 @@ 25 - - + + File - - - - - - - - - + + + + + + + + + - - + + View - - - - - + + + + + + + - - + + + Help + + + + + + + + Tools - - - - + + + + - - - Edit - - - - - - - - + + + + - - + + + + Animation Frames + + + 8 + + + + false + + + + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + true + + + + + + + + + Prepend + + + + + + + Append + + + + + + + Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + Connectors + + + 2 + + + + false + + + + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + true + + + + + + + + + Prepend + + + + + + + Append + + + + + + + Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + true - + Import 3DS... - - + + false - + Import OBJ... - - + + true - - Import PIE... - - - - - true - - + Save - + Ctrl+S - - + + true - + Save as... - - - - Quit + + Ctrl+Shift+S - + + + + Exit + + Ctrl+Q - - + + true - + Animate - + Ctrl+A - - + + true - + true - + Culling - - + + true - + Wireframe - + Ctrl+W - - + + false - + Help - + Ctrl+H - - + + true - + true - + Show axis - - Ctrl+A + + A - - - Open + + + Open... - + Ctrl+O - - + + + false + + Swap Y and Z axis - - + + + false + + Reverse polygon winding - - + + + false + + Flip vertical texcoords - - + + + false + + Scale model - - + + Frames - - + + Connectors + + + Contents + + + + + About QWZM... + + + + + About Qt... + + + + + true + + + Frames Editor + + + + + true + + + Connectors Editor + + diff --git a/tools/qwzm/wzmglwidget.cpp b/tools/qwzm/wzmglwidget.cpp index 07914aeef..65737f951 100644 --- a/tools/qwzm/wzmglwidget.cpp +++ b/tools/qwzm/wzmglwidget.cpp @@ -19,7 +19,7 @@ #include "wzmglwidget.h" #define gl_errors() really_report_gl_errors(__FILE__, __LINE__) -static void really_report_gl_errors (const char *file, int line) +static void really_report_gl_errors(const char *file, int line) { GLenum error = glGetError(); @@ -30,17 +30,14 @@ static void really_report_gl_errors (const char *file, int line) } WZMOpenGLWidget::WZMOpenGLWidget(QWidget *parent) - : QGLViewer(parent) + : QGLViewer(parent), psModel(NULL), teamIndex(0), + selectedMesh(-1), animation(false), now(0) { - animation = false; - psModel = NULL; - teamIndex = 0; if (!QGLFormat::hasOpenGL()) { qWarning("This system has no OpenGL support!"); exit(EXIT_FAILURE); } - now = 0; timer.start(); setAxisIsDrawn(true); } @@ -64,6 +61,9 @@ void WZMOpenGLWidget::init() glEnable(GL_BLEND); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_ALPHA_TEST); + glAlphaFunc(GL_GEQUAL, 0.05f); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); @@ -79,16 +79,22 @@ void WZMOpenGLWidget::draw() now = timer.elapsed(); } - drawModel(psModel, now); + drawModel(psModel, now, selectedMesh); } } +void WZMOpenGLWidget::selectMesh(int index) +{ + selectedMesh = index - 1; +} + void WZMOpenGLWidget::setTeam(int index) { if (!psModel) { return; } + if (index > 7 || index < 0) { qWarning("setTeam: Bad index %d", index); diff --git a/tools/qwzm/wzmglwidget.h b/tools/qwzm/wzmglwidget.h index 9d9d658b0..efb61ae20 100644 --- a/tools/qwzm/wzmglwidget.h +++ b/tools/qwzm/wzmglwidget.h @@ -19,7 +19,8 @@ #define QWZMGL_H #include -extern "C" { +extern "C" +{ #include "wzmutils.h" } @@ -27,22 +28,24 @@ class WZMOpenGLWidget : public QGLViewer { Q_OBJECT - public: +public: WZMOpenGLWidget(QWidget *parent); ~WZMOpenGLWidget(); void setModel(MODEL *model); void setTeam(int index); void setAnimation(bool value); void draw(); + void selectMesh(int meshSelect); - protected: +protected: void init(); // void resizeGL(int w, int h); QString helpString() const; - private: +private: MODEL *psModel; int teamIndex; + int selectedMesh; bool animation; QTime timer; int now; diff --git a/tools/qwzm/wzmutils.c b/tools/qwzm/wzmutils.c new file mode 100644 index 000000000..3e0653358 --- /dev/null +++ b/tools/qwzm/wzmutils.c @@ -0,0 +1,625 @@ +/* + This file is part of Warzone 2100. + Copyright (C) 2007-2009 Warzone Resurrection Project + + Warzone 2100 is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Warzone 2100 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Warzone 2100; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "wzmutils.h" + +#include + +#if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +# define inline __inline +# define alloca _alloca +# define fileno _fileno +#endif + +void prepareModel(MODEL *psModel) +{ + if (!psModel || !psModel->pixmap || psModel->pixmap->w <= 0 || psModel->pixmap->h <= 0 || !psModel->pixmap->pixels) + { + printf("Bad model passed to prepareModel!\n"); + exit(EXIT_FAILURE); + } + glGenTextures(1, &psModel->texture); + glBindTexture(GL_TEXTURE_2D, psModel->texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, psModel->pixmap->w, psModel->pixmap->h, 0, GL_RGBA, + GL_UNSIGNED_BYTE, psModel->pixmap->pixels); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +} + +// Adjust the vector in vec1 with the vector to be in vec2 by fractional value in +// fraction which indicates how far we've come toward vec2. The result is put into +// the result vector. +static void interpolateVectors(Vector3f vec1, Vector3f vec2, Vector3f *result, double fraction) +{ + result->x = vec1.x * (1.0 - fraction) + vec2.x * fraction; + result->y = vec1.y * (1.0 - fraction) + vec2.y * fraction; + result->z = vec1.z * (1.0 - fraction) + vec2.z * fraction; +} + +static inline void drawMesh(MODEL *psModel, int now, int mesh) +{ + MESH *psMesh = &psModel->mesh[mesh]; + + assert(psMesh); + if (psMesh->frameArray) + { + FRAME *psFrame = &psMesh->frameArray[psMesh->currentFrame]; + FRAME *nextFrame = psFrame; + double fraction = 1.0f / (psFrame->timeSlice * 1000) * (now - psMesh->lastChange); // until next frame + Vector3f vec; + + glPushMatrix(); // save matrix state + + assert(psMesh->currentFrame < psMesh->frames); + + if (psMesh->currentFrame == psMesh->frames - 1) + { + nextFrame = &psMesh->frameArray[0]; // wrap around + } + else + { + nextFrame = &psMesh->frameArray[psMesh->currentFrame + 1]; + } + + // Try to avoid crap drivers from taking down the entire system + assert(finitef(psFrame->translation.x) && finitef(psFrame->translation.y) && finitef(psFrame->translation.z)); + assert(psFrame->rotation.x >= -360.0f && psFrame->rotation.y >= -360.0f && psFrame->rotation.z >= -360.0f); + assert(psFrame->rotation.x <= 360.0f && psFrame->rotation.y <= 360.0f && psFrame->rotation.z <= 360.0f); + + // Translate + interpolateVectors(psFrame->translation, nextFrame->translation, &vec, fraction); + glTranslatef(vec.x, vec.z, vec.y); // z and y flipped + + // Rotate + interpolateVectors(psFrame->rotation, nextFrame->rotation, &vec, fraction); + glRotatef(vec.x, 1, 0, 0); + glRotatef(vec.z, 0, 1, 0); // z and y flipped again... + glRotatef(vec.y, 0, 0, 1); + + // Morph + if (!psMesh->teamColours) + { + psMesh->currentTextureArray = psFrame->textureArray; + } + } + + glTexCoordPointer(2, GL_FLOAT, 0, psMesh->textureArray[psMesh->currentTextureArray]); + glVertexPointer(3, GL_FLOAT, 0, psMesh->vertexArray); + + glDrawElements(GL_TRIANGLES, psMesh->faces * 3, GL_UNSIGNED_INT, psMesh->indexArray); + if (psMesh->frameArray) + { + glPopMatrix(); // restore position for next mesh + } +} +void drawModel(MODEL *psModel, int now, int selectedMesh) +{ + int i; + + assert(psModel && psModel->mesh); + + // Update animation frames + for (i = 0; i < psModel->meshes; i++) + { + MESH *psMesh = &psModel->mesh[i]; + FRAME *psFrame; + + if (!psMesh->frameArray) + { + continue; + } + psFrame = &psMesh->frameArray[psMesh->currentFrame]; + + assert(psMesh->currentFrame < psMesh->frames && psMesh->currentFrame >= 0); + if (psFrame->timeSlice != 0 && psFrame->timeSlice * 1000 + psMesh->lastChange < now) + { + psMesh->lastChange = now; + psMesh->currentFrame++; + if (psMesh->currentFrame >= psMesh->frames) + { + psMesh->currentFrame = 0; // loop + } + } + } + + // Draw model + glColor3f(1.0f, 1.0f, 1.0f); + if (selectedMesh >= 0 && selectedMesh < psModel->meshes) + { + drawMesh(psModel, now, selectedMesh); + } + else + { + for (i = 0; i < psModel->meshes; i++) + { + drawMesh(psModel, now, i); + } + } +} + +MODEL *createModel(int meshes, int now) +{ + MODEL *psModel = malloc(sizeof(MODEL)); + int i; + + psModel->meshes = meshes; + psModel->mesh = malloc(sizeof(MESH) * meshes); + psModel->texPath[0] = '\0'; + psModel->pixmap = NULL; + for (i = 0; i < meshes; i++) + { + MESH *psMesh = &psModel->mesh[i]; + int j; + + psMesh->faces = 0; + psMesh->frames = 0; + psMesh->vertices = 0; + psMesh->textureArrays = 0; + psMesh->connectors = 0; + psMesh->teamColours = false; + psMesh->vertexArray = NULL; + psMesh->indexArray = NULL; + psMesh->connectorArray = NULL; + for (j = 0; j < MAX_TEXARRAYS; j++) + { + psMesh->textureArray[j] = NULL; + } + psMesh->frameArray = NULL; + psMesh->currentFrame = 0; + psMesh->lastChange = now; + psMesh->currentTextureArray = 0; + } + + return psModel; +} + +PIXMAP *readPixmap(const char *filename) +{ + PIXMAP *gfx; + png_structp pngp; + png_infop infop; + png_uint_32 width, height; + png_int_32 y, stride; + int bit_depth, color_type, interlace_type; + FILE *fp; + png_bytep *row_pointers; + const unsigned int sig_length = 8; + unsigned char header[8]; + unsigned char *image_data; + unsigned int result; + + if (PNG_LIBPNG_VER_MAJOR != 1 || PNG_LIBPNG_VER_MINOR < 2) + { + printf("libpng 1.2.6 or higher required!\n"); + exit(EXIT_FAILURE); + } + if (!(fp = fopen(filename, "rb"))) + { + printf("%s won't open!\n", filename); + exit(EXIT_FAILURE); + } + result = fread(header, 1, sig_length, fp); + if (result != sig_length) + { + printf("Bad file %s\n", filename); + exit(EXIT_FAILURE); + } + if (png_sig_cmp(header, 0, sig_length)) + { + printf("%s is not a PNG file!\n", filename); + exit(EXIT_FAILURE); + } + if (!(pngp = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL))) + { + printf("Failed creating PNG struct reading %s.\n", filename); + exit(EXIT_FAILURE); + } + if (!(infop = png_create_info_struct(pngp))) + { + printf("Failed creating PNG info struct reading %s.\n", filename); + exit(EXIT_FAILURE); + } + if (setjmp(pngp->jmpbuf)) + { + printf("Failed while reading PNG file: %s\n", filename); + exit(EXIT_FAILURE); + } + png_init_io(pngp, fp); + png_set_sig_bytes(pngp, sig_length); + png_read_info(pngp, infop); + + /* Transformations to ensure we end up with 32bpp, 4 channel RGBA */ + png_set_strip_16(pngp); + png_set_gray_to_rgb(pngp); + png_set_packing(pngp); + png_set_palette_to_rgb(pngp); + png_set_tRNS_to_alpha(pngp); + png_set_filler(pngp, 0xFF, PNG_FILLER_AFTER); + png_set_gray_1_2_4_to_8(pngp); + + png_read_update_info(pngp, infop); + png_get_IHDR(pngp, infop, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); + + stride = png_get_rowbytes(pngp, infop); + row_pointers = malloc(sizeof(png_bytep) * height); + + image_data = malloc(height * width * 4); + for (y = 0; y < (int)height; y++) + { + row_pointers[y] = image_data + (y * width * 4); + } + + png_read_image(pngp, row_pointers); + png_read_end(pngp, infop); + fclose(fp); + + gfx = malloc(sizeof(*gfx)); + gfx->w = width; + gfx->h = height; + gfx->pixels = (char *)image_data; + + png_destroy_read_struct(&pngp, &infop, NULL); + free(row_pointers); + + return gfx; +} + +int saveModel(const char *filename, MODEL *psModel) +{ + FILE *fp = fopen(filename, "w"); + int mesh; + + if (!fp) + { + fprintf(stderr, "Cannot open \"%s\" for writing: %s", filename, strerror(errno)); + return -1; + } + fprintf(fp, "WZM %d\n", 1); + fprintf(fp, "TEXTURE %s\n", psModel->texPath); + fprintf(fp, "MESHES %d", psModel->meshes); + for (mesh = 0; mesh < psModel->meshes; mesh++) + { + MESH *psMesh = &psModel->mesh[mesh]; + int j; + + fprintf(fp, "\nMESH %d\n", mesh); + fprintf(fp, "TEAMCOLOURS %d\n", psMesh->teamColours); + fprintf(fp, "VERTICES %d\n", psMesh->vertices); + fprintf(fp, "FACES %d\n", psMesh->faces); + fprintf(fp, "VERTEXARRAY\n"); + for (j = 0; j < psMesh->vertices; j++) + { + GLfloat *v = &psMesh->vertexArray[j * 3]; + + fprintf(fp, "\t%g %g %g\n", v[0], v[1], v[2]); + } + + fprintf(fp, "TEXTUREARRAYS %d", psMesh->textureArrays); + for (j = 0; j < psMesh->textureArrays; j++) + { + int k; + + fprintf(fp, "\nTEXTUREARRAY %d", j); + for (k = 0; k < psMesh->vertices; k++) + { + GLfloat *v = &psMesh->textureArray[j][k * 2]; + + fprintf(fp, "\n\t%g %g", v[0], v[1]); + } + } + + fprintf(fp, "\nINDEXARRAY"); + for (j = 0; j < psMesh->faces; j++) + { + GLuint *v = &psMesh->indexArray[j * 3]; + + fprintf(fp, "\n\t%u %u %u", v[0], v[1], v[2]); + } + + fprintf(fp, "\nFRAMES %d", psMesh->frames); + // Read animation frames + for (j = 0; j < psMesh->frames; j++) + { + FRAME *psFrame = &psMesh->frameArray[j]; + + fprintf(fp, "\n\t%g %d %g %g %g %g %g %g", psFrame->timeSlice, psFrame->textureArray, + psFrame->translation.x, psFrame->translation.y, psFrame->translation.z, + psFrame->rotation.x, psFrame->rotation.y, psFrame->rotation.z); + } + + fprintf(fp, "\nCONNECTORS %d", psMesh->connectors); + for (j = 0; j < psMesh->connectors; j++) + { + CONNECTOR *conn = &psMesh->connectorArray[j]; + + fprintf(fp, "\n\t%g %g %g 0", conn->pos.x, conn->pos.y, conn->pos.z); + } + } + fclose(fp); + return 0; +} + +MODEL *readModel(const char *filename, int now) +{ + FILE *fp = fopen(filename, "r"); + int num, x, meshes, mesh, version; + char s[200]; + MODEL *psModel; + + if (!fp) + { + fprintf(stderr, "Cannot open \"%s\" for reading: %s", filename, strerror(errno)); + return NULL; + } + + num = fscanf(fp, "WZM %d\n", &version); + if (num != 1) + { + fprintf(stderr, "Bad WZM file or wrong version: %s\n", filename); + fclose(fp); + return NULL; + } + if (version != 1 && version != 2) + { + fprintf(stderr, "Bad WZM version %d in %s\n", version, filename); + fclose(fp); + return NULL; + } + + num = fscanf(fp, "TEXTURE %s\n", s); + if (num != 1) + { + fprintf(stderr, "Bad TEXTURE directive in %s\n", filename); + fclose(fp); + return NULL; + } + + num = fscanf(fp, "MESHES %d", &meshes); + if (num != 1) + { + fprintf(stderr, "Bad MESHES directive in %s\n", filename); + fclose(fp); + return NULL; + } + psModel = createModel(meshes, now); + strcpy(psModel->texPath, s); + + for (mesh = 0; mesh < meshes; mesh++) + { + MESH *psMesh = &psModel->mesh[mesh]; + int j; + + num = fscanf(fp, "\nMESH %s\n", s); + if (num != 1) + { + fprintf(stderr, "Bad MESH directive in %s, was \"%s\".\n", filename, s); + fclose(fp); + freeModel(psModel); + return NULL; + } + + num = fscanf(fp, "TEAMCOLOURS %d\n", &x); + if (num != 1 || x > 1 || x < 0) + { + fprintf(stderr, "Bad TEAMCOLOURS directive in %s, mesh %d.\n", filename, mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + psMesh->teamColours = x; + + num = fscanf(fp, "VERTICES %d\n", &x); + if (num != 1 || x < 0) + { + fprintf(stderr, "Bad VERTICES directive in %s, mesh %d.\n", filename, mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + psMesh->vertices = x; + psMesh->vertexArray = malloc(sizeof(GLfloat) * x * 3); + + num = fscanf(fp, "FACES %d\n", &x); + if (num != 1) + { + fprintf(stderr, "Bad VERTICES directive in %s, mesh %d.\n", filename, mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + psMesh->faces = x; + psMesh->indexArray = malloc(sizeof(GLuint) * x * 3); + + num = fscanf(fp, "VERTEXARRAY"); + if (num == EOF) + { + fprintf(stderr, "No VERTEXARRAY directive in %s, mesh %d.\n", filename, mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + + for (j = 0; j < psMesh->vertices; j++) + { + GLfloat *v = &psMesh->vertexArray[j * 3]; + + num = fscanf(fp, "%f %f %f\n", &v[0], &v[1], &v[2]); + if (num != 3) + { + fprintf(stderr, "Bad VERTEXARRAY entry mesh %d, number %d\n", mesh, j); + fclose(fp); + freeModel(psModel); + return NULL; + } + } + + num = fscanf(fp, "TEXTUREARRAYS %d", &x); + if (num != 1 || x < 0) + { + fprintf(stderr, "Bad TEXTUREARRAYS directive in %s, mesh %d.\n", filename, mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + psMesh->textureArrays = x; + for (j = 0; j < psMesh->textureArrays; j++) + { + int k; + + num = fscanf(fp, "\nTEXTUREARRAY %d", &x); + if (num != 1 || x < 0 || x != j) + { + fprintf(stderr, "Bad TEXTUREARRAY directive in %s, mesh %d, array %d.\n", filename, mesh, j); + fclose(fp); + freeModel(psModel); + return NULL; + } + psMesh->textureArray[j] = malloc(sizeof(GLfloat) * psMesh->vertices * 2); + for (k = 0; k < psMesh->vertices; k++) + { + GLfloat *v = &psMesh->textureArray[j][k * 2]; + + num = fscanf(fp, "\n%f %f", &v[0], &v[1]); + if (num != 2) + { + fprintf(stderr, "Bad TEXTUREARRAY entry mesh %d, array %d, number %d\n", mesh, j, k); + fclose(fp); + freeModel(psModel); + return NULL; + } + } + } + + num = fscanf(fp, "\nINDEXARRAY"); + if (num == EOF) + { + fprintf(stderr, "No INDEXARRAY directive in %s, mesh %d.\n", filename, mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + + for (j = 0; j < psMesh->faces; j++) + { + GLuint *v = &psMesh->indexArray[j * 3]; + + num = fscanf(fp, "\n%u %u %u", &v[0], &v[1], &v[2]); + if (num != 3) + { + fprintf(stderr, "Bad INDEXARRAY entry in mesh %d, number %d\n", mesh, j); + fclose(fp); + freeModel(psModel); + return NULL; + } + } + + // Read animation frames + num = fscanf(fp, "\nFRAMES %d", &psMesh->frames); + if (num != 1 || psMesh->frames < 0) + { + fprintf(stderr, "Bad FRAMES directive in mesh %d\n", mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + if (psMesh->frames) + { + psMesh->frameArray = malloc(sizeof(FRAME) * psMesh->frames); + } + for (j = 0; j < psMesh->frames; j++) + { + FRAME *psFrame = &psMesh->frameArray[j]; + + num = fscanf(fp, "\n%f %d %f %f %f %f %f %f", &psFrame->timeSlice, &psFrame->textureArray, + &psFrame->translation.x, &psFrame->translation.y, &psFrame->translation.z, + &psFrame->rotation.x, &psFrame->rotation.y, &psFrame->rotation.z); + if (num != 8) + { + fprintf(stderr, "Bad FRAMES entry in mesh %d, number %d\n", mesh, j); + fclose(fp); + freeModel(psModel); + return NULL; + } + } + + // Read connectors + num = fscanf(fp, "\nCONNECTORS %d", &psMesh->connectors); + if (num != 1 || psMesh->connectors < 0) + { + fprintf(stderr, "Bad CONNECTORS directive in mesh %d\n", mesh); + fclose(fp); + freeModel(psModel); + return NULL; + } + if (psMesh->connectors) + { + psMesh->connectorArray = malloc(sizeof(CONNECTOR) * psMesh->connectors); + } + for (j = 0; j < psMesh->connectors; j++) + { + CONNECTOR *conn = &psMesh->connectorArray[j]; + int angle, angler1, angler2; + + if (version == 1) + { + num = fscanf(fp, "\n%f %f %f %d", &conn->pos.x, &conn->pos.y, &conn->pos.z, &conn->type); + } + else if (version == 2) + { + num = fscanf(fp, "\n%s %f %f %f %d %d %d", s, &conn->pos.x, &conn->pos.y, &conn->pos.z, &angle, &angler1, &angler2); + conn->type = 0; // TODO + } + if (num != 4) + { + fprintf(stderr, "Bad CONNECTORS entry in mesh %d, number %d\n", mesh, j); + fclose(fp); + freeModel(psModel); + return NULL; + } + } + } + + return psModel; +} + +void freeModel(MODEL *psModel) +{ + int i; + + for (i = 0; i < psModel->meshes; i++) + { + MESH *psMesh = &psModel->mesh[i]; + int j; + + free(psMesh->vertexArray); + free(psMesh->indexArray); + for (j = 0; j < MAX_TEXARRAYS; j++) + { + free(psMesh->textureArray[j]); + } + free(psMesh->frameArray); + } + free(psModel->pixmap); + free(psModel->mesh); + free(psModel); +} diff --git a/tools/qwzm/wzmutils.h b/tools/qwzm/wzmutils.h new file mode 100644 index 000000000..9a443dd27 --- /dev/null +++ b/tools/qwzm/wzmutils.h @@ -0,0 +1,104 @@ +/* + This file is part of Warzone 2100. + Copyright (C) 2007-2009 Warzone Resurrection Project + + Warzone 2100 is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Warzone 2100 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Warzone 2100; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _wzmutils_h +#define _wzmutils_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#else +#include +typedef int bool; +#define PATH_MAX 255 +#define true 1 +#define false 0 +#endif + +#define MAX_TEXARRAYS 16 +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) + +typedef struct +{ + GLfloat x, y, z; +} Vector3f; + +typedef struct +{ + Vector3f pos; + int type; +} CONNECTOR; + +typedef struct +{ + float timeSlice; + int textureArray; + Vector3f translation; + Vector3f rotation; +} FRAME; + +typedef struct +{ + int faces, vertices, frames, textureArrays, connectors; + bool teamColours; + GLfloat *vertexArray; + GLuint *indexArray; // TODO: use short instead + GLclampf *textureArray[MAX_TEXARRAYS]; + FRAME *frameArray; + int currentFrame; + int currentTextureArray; + uint32_t lastChange; // animation + CONNECTOR *connectorArray; +} MESH; + +typedef struct +{ + int w, h; + char *pixels; +} PIXMAP; + +typedef struct +{ + int meshes; + MESH *mesh; + PIXMAP *pixmap; + char texPath[PATH_MAX]; + GLuint texture; +} MODEL; + +MODEL *createModel(int meshes, int now); +PIXMAP *readPixmap(const char *filename); +MODEL *readModel(const char *filename, int now); +int saveModel(const char *filename, MODEL *psModel); +void freeModel(MODEL *psModel); +void drawModel(MODEL *psModel, int now, int meshSelect); +void prepareModel(MODEL *psModel); + +#endif diff --git a/win32/Makefile.am b/win32/Makefile.am index bf192f3b9..4e6612149 100644 --- a/win32/Makefile.am +++ b/win32/Makefile.am @@ -15,7 +15,6 @@ EXTRA_DIST = __BUILD_SCRIPT \ libs/iconv/Makefile \ libs/ogg/Makefile \ libs/png/Makefile \ - libs/popt/Makefile \ libs/quesoglc/Makefile \ libs/sdl/Makefile \ libs/theora/Makefile \ diff --git a/win32/libs/dejavu/Makefile b/win32/libs/dejavu/Makefile index 7da61e2af..fd49390bd 100644 --- a/win32/libs/dejavu/Makefile +++ b/win32/libs/dejavu/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=dejavu-fonts-ttf -PKG_VERSION=2.30 +PKG_VERSION=2.31 PKG_SOURCEBASE:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.bz2 PKG_SOURCE_URL:= \ @SF/dejavu \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=545b3bfc69893075a90a7c6e6f4a7e67 +PKG_MD5SUM:=a794a75d8c43c83f0226207cd3aaf666 TARGETS:= \ $(TOPDIR)/build/libs/etc/fonts/DejaVuSans.ttf \ diff --git a/win32/libs/freetype2/Makefile b/win32/libs/freetype2/Makefile index fc782731c..035f3b096 100644 --- a/win32/libs/freetype2/Makefile +++ b/win32/libs/freetype2/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=freetype -PKG_VERSION=2.3.11 +PKG_VERSION=2.3.12 PKG_SOURCEBASE:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.bz2 PKG_SOURCE_URL:= \ @SF/freetype \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=519c7cbf5cbd72ffa822c66844d3114c +PKG_MD5SUM:=e974a82e5939be8e05ee65f07275d7c5 TARGET:=$(TOPDIR)/build/libs/lib/libfreetype.la diff --git a/win32/libs/gettext/Makefile b/win32/libs/gettext/Makefile index 1391d5832..830d5d51b 100644 --- a/win32/libs/gettext/Makefile +++ b/win32/libs/gettext/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=gettext -PKG_VERSION:=0.17 +PKG_VERSION:=0.18.1 PKG_SOURCEBASE=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.gz PKG_SOURCE_URL:= \ http://ftp.gnu.org/pub/gnu/gettext/ \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=58a2bc6d39c0ba57823034d55d65d606 +PKG_MD5SUM:=2ae04f960d5fa03774636ddef19ebdbf TARGET:=$(TOPDIR)/build/libs/lib/libintl.la SHELL:=$(shell which bash) diff --git a/win32/libs/ogg/Makefile b/win32/libs/ogg/Makefile index 1ef854be7..3a900f1bc 100644 --- a/win32/libs/ogg/Makefile +++ b/win32/libs/ogg/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=libogg -PKG_VERSION:=1.1.4 +PKG_VERSION:=1.2.0 PKG_SOURCEBASE=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.gz PKG_SOURCE_URL:= \ http://downloads.xiph.org/releases/ogg/ \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=10200ec22543841d9d1c23e0aed4e5e9 +PKG_MD5SUM:=c95b73759acfc30712beef6ce4e88efa TARGETS:= \ $(TOPDIR)/build/libs/include/ogg/ogg.h \ diff --git a/win32/libs/png/Makefile b/win32/libs/png/Makefile index 7859e1573..f48617a7d 100644 --- a/win32/libs/png/Makefile +++ b/win32/libs/png/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=libpng -PKG_VERSION=1.2.36 +PKG_VERSION=1.2.42 PKG_SOURCEBASE:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.bz2 PKG_SOURCE_URL:= \ @SF/libpng \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=325d67a8dd4a1f672d395c339fddd75c +PKG_MD5SUM:=9a5cbe9798927fdf528f3186a8840ebe TARGET:=$(TOPDIR)/build/libs/lib/libpng.la diff --git a/win32/libs/vorbis/Makefile b/win32/libs/vorbis/Makefile index df4c1f2d8..b05f52ad9 100644 --- a/win32/libs/vorbis/Makefile +++ b/win32/libs/vorbis/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=libvorbis -PKG_VERSION:=1.2.3 +PKG_VERSION:=1.3.1 PKG_SOURCEBASE=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.gz PKG_SOURCE_URL:= \ http://downloads.xiph.org/releases/vorbis/ \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=5aa77f55c0e0aab8eb8ed982335daac8 +PKG_MD5SUM:=016e523fac70bdd786258a9d15fd36e9 TARGETS:= \ $(TOPDIR)/build/libs/include/vorbis/vorbisfile.h \ diff --git a/win32/libs/zlib/Makefile b/win32/libs/zlib/Makefile index 31a3bed44..848d689aa 100644 --- a/win32/libs/zlib/Makefile +++ b/win32/libs/zlib/Makefile @@ -1,12 +1,12 @@ PKG_NAME:=zlib -PKG_VERSION=1.2.3 +PKG_VERSION=1.2.5 PKG_SOURCEBASE:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SOURCEBASE).tar.gz PKG_SOURCE_URL:= \ @SF/libpng \ http://www.il.fontys.nl/~giel/warzone/devpkg/ -PKG_MD5SUM:=debc62758716a169df9f62e6ab2bc634 +PKG_MD5SUM:=c735eab2d659a96e5a594c9e8541ad63 TARGETS:=$(TOPDIR)/build/libs/lib/libz.a $(TOPDIR)/build/libs/include/zconf.h $(TOPDIR)/build/libs/include/zlib.h @@ -20,7 +20,7 @@ extract-stamp: $(TOPDIR)/downloads/$(PKG_SOURCE) $(PKG_SOURCEBASE)/configure: extract-stamp $(PKG_SOURCEBASE)/Makefile: $(PKG_SOURCEBASE)/configure - cd $(PKG_SOURCEBASE) && CC=$(HOST_TRIPLET)-gcc RANLIB=$(HOST_TRIPLET)-ranlib AR='$(HOST_TRIPLET)-ar rc' ./configure + cd $(PKG_SOURCEBASE) && CC=$(HOST_TRIPLET)-gcc RANLIB=$(HOST_TRIPLET)-ranlib AR='$(HOST_TRIPLET)-ar' ./configure $(PKG_SOURCEBASE)/libz.a: extract-stamp $(PKG_SOURCEBASE)/Makefile $(MAKE) -C $(PKG_SOURCEBASE) libz.a